#include "StdAfx.h"
#include "MBTNXXXObjMgr.h"
CMBTNXXXObjMgr::CMBTNXXXObjMgr(void)
{
RemoveAllObj();
m_nRecords = 0;
m_nTotalPages = 0;
m_nCurPage = 0;
m_nPageSize = 0;
}
CMBTNXXXObjMgr::~CMBTNXXXObjMgr(void)
{
RemoveAllObj();
}
void CMBTNXXXObjMgr::GetObjMap( CMBTNXXXObjMap &mapObj)
{
mapObj.clear();
mapObj = m_mapObj;
}
// µÃµ½vector
void CMBTNXXXObjMgr::GetObjVector( CMBTNXXXObjVector &vectorObj)
{
vectorObj.clear();
vectorObj = m_vectorObj;
}
CMBTNXXXObj *CMBTNXXXObjMgr::GetObj( CString strObjID )
{
if( strObjID.IsEmpty() )
return NULL;
CMBTNXXXObjMap::iterator it;
CMBTNXXXObj *pObj = NULL;
it = m_mapObj.find(strObjID);
if( it!= m_mapObj.end() )
pObj = it->second;
return pObj;
}
bool CMBTNXXXObjMgr::AddObj( CMBTNXXXObj *pObj )
{
if( NULL == pObj || pObj->m_strObjID.IsEmpty() )
return false;
CMBTNXXXObjMap::iterator it;
CString strObjID;
strObjID = pObj->m_strObjID;
it = m_mapObj.find(strObjID);
// Èç¹ûÕҵõ½ ·µ»Ø
if( it != m_mapObj.end() )
return false;
m_mapObj[strObjID] = pObj;
m_vectorObj.push_back(pObj);
return true;
}
bool CMBTNXXXObjMgr::RemoveAllObj()
{
CMBTNXXXObjMap::iterator it;
CMBTNXXXObj *pObj = NULL;
for( it = m_mapObj.begin();it != m_mapObj.end();it++ )
{
pObj = it->second;
delete pObj;
pObj = NULL;
}
m_mapObj.clear();
m_vectorObj.clear();
return true;
}
//
//
//
//
//
//....
//
//
bool CMBTNXXXObjMgr::ParseXml(CString strXml,CString &strErrInfo)
{
if( strXml.IsEmpty() )
return true;
CString strRecords,strTotalPages,
strCurPage,strPageSize;
pugi::xml_document xmlDoc;
if (!xmlDoc.load(strXml))
{
return false;
}
pugi::xml_node bodyNode = xmlDoc.child(_T("Body"));
m_strSessionID = bodyNode.child_value(_T("SessionID"));
strRecords = bodyNode.child_value(_T("Records"));
strTotalPages = bodyNode.child_value(_T("TotalPages"));
strCurPage = bodyNode.child_value(_T("CurPage"));
strPageSize = bodyNode.child_value(_T("PageSize"));
m_nRecords = _ttoi(strRecords);
m_nTotalPages = _ttoi(strTotalPages);
m_nCurPage = _ttoi(strCurPage);
m_nPageSize = _ttoi(strPageSize);
pugi::xml_node objNode = xmlDoc.child(_T("Body")).child(_T("ObjList")).child(_T("Obj"));
for(pugi::xml_node node = objNode; node; node = node.next_sibling(_T("Obj")))
{
CMBTNXXXObj *pObj = new CMBTNXXXObj();
pObj->m_strObjID = node.attribute(_T("ID")).value();
pugi::xml_node nodeAttr = node.child(_T("ObjAttr")).child(_T("Attr"));
for(pugi::xml_node nodeTmp = nodeAttr; nodeTmp; nodeTmp = nodeTmp.next_sibling(_T("Attr")))
{
CMBTNXXXAttr *pAttr = new CMBTNXXXAttr();
pAttr->m_strName = nodeTmp.attribute(_T("Name")).value();
pAttr->m_strType = nodeTmp.attribute(_T("Type")).value();
pAttr->m_strDispName = nodeTmp.child_value(_T("DispName"));
pAttr->m_strVaule = nodeTmp.child_value(_T("Value"));
if( !pObj->AddAttr(pAttr) )
{
delete pAttr;
pAttr = NULL;
}
}
if( !AddObj( pObj ) )
{
delete pObj;
pObj = NULL;
}
}
return true;
}
CString CMBTNXXXObjMgr::GenXml()
{
return _T("");
}
// ¿ÉÒÔÏÂÔØ
//S_ID CHAR (36),
//S_FILE_SERVER CHAR (32),
//S_FILE_NAME VARCHAR (256),
//G_FILE_ID CHAR (36),
//S_FILE_TYPE CHAR (10),
//N_FILE_SIZE INTERGER (8),
//G_PDF_FILE_ID CHAR (36),
//G_FLASH_FILE_ID CHAR (36),
//G_THUMB_IMAGE_ID CHAR (36),
//S_FILE_MD5 CHAR (32),
CString CMBTNXXXObjMgr::GenDldXml()
{
CMBTNXXXObjVector::iterator it;
CMBTNXXXObj *pObj = NULL;
CMBTNXXXAttr *pTNXXXAttr = NULL;
CString strID,strFileSvr,strFileName,strFileID,strFileType,strFileSize,strFileMD5;
CString strXml,strObjXml,strObjsXml;
for( it = m_vectorObj.begin();it != m_vectorObj.end();it++ )
{
pObj = *it;
strID = pObj->m_strObjID;
pTNXXXAttr = pObj->GetAttr( _T("S_FILE_SERVER") );
if( pTNXXXAttr != NULL ){
strFileSvr = pTNXXXAttr->m_strVaule;
}
pTNXXXAttr = pObj->GetAttr( _T("S_FILE_NAME") );
if( pTNXXXAttr != NULL ){
strFileName = pTNXXXAttr->m_strVaule;
}
pTNXXXAttr = pObj->GetAttr( _T("G_FILE_ID") );
if( pTNXXXAttr != NULL ){
strFileID = pTNXXXAttr->m_strVaule;
}
pTNXXXAttr = pObj->GetAttr( _T("S_FILE_TYPE") );
if( pTNXXXAttr != NULL ){
strFileType = pTNXXXAttr->m_strVaule;
}
pTNXXXAttr = pObj->GetAttr( _T("N_FILE_SIZE") );
if( pTNXXXAttr != NULL ){
strFileSize = pTNXXXAttr->m_strVaule;
}
pTNXXXAttr = pObj->GetAttr( _T("G_PDF_FILE_ID") );
if( pTNXXXAttr != NULL ){
}
pTNXXXAttr = pObj->GetAttr( _T("G_THUMB_IMAGE_ID") );
if( pTNXXXAttr != NULL ){
}
pTNXXXAttr = pObj->GetAttr( _T("S_FILE_MD5") );
if( pTNXXXAttr != NULL ){
strFileMD5 = pTNXXXAttr->m_strVaule;
}
if( strFileSvr.IsEmpty() || strFileID.IsEmpty() )
continue;
strObjXml.Format(_T(""),strID,strFileSvr,strFileID,strFileType,strFileSize,strFileMD5,strFileName);
strObjsXml += strObjXml;
}
if( strObjsXml.IsEmpty() )
return _T("");
strXml.Format(_T("%s"),strObjsXml);
return strXml;
}