#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; }