#include "StdAfx.h" #include "MBQueryDms.h" CMBQueryDms::CMBQueryDms(void) { m_pDocMgr = new CMBQueryDmsDocMgr(); m_pCatalogMgr = new CMBQueryDmsCatalogMgr(); m_nRecords = 0; m_nTotalPages = 0; m_nCurPage = 0; m_nPageSize = 0; } CMBQueryDms::~CMBQueryDms(void) { if( m_pDocMgr ) { delete m_pDocMgr; m_pDocMgr = NULL; } if( m_pCatalogMgr ) { delete m_pCatalogMgr; m_pCatalogMgr = NULL; } } CMBQueryDmsDocMgr *CMBQueryDms::GetDocMgr() { return m_pDocMgr; } CMBQueryDmsCatalogMgr *CMBQueryDms::GetCatalogMgr() { return m_pCatalogMgr; } void CMBQueryDms::GetBaseObjVector(CMBBaseObjVector &vectorObj) { m_pCatalogMgr->GetBaseObjVector(vectorObj); m_pDocMgr->GetBaseObjVector(vectorObj); } // ÒÆ³ý²éѯ¹ÜÀíÆ÷ void CMBQueryDms::RemoveMgr() { m_pDocMgr->RemoveAllDoc(); m_pCatalogMgr->RemoveAllCatalog(); } bool CMBQueryDms::ParseXml( CString strXml,CString &strErrInfo ) { if( strXml.IsEmpty() ) { return true; } pugi::xml_document xmlDoc; if (!xmlDoc.load(strXml)) { strErrInfo = _T("CMBSearchMgr::ParseXml,¼ÓÔØxmlʧ°Ü!"); return false; } // ÏÈÇå¿Õ²éѯ¹ÜÀíÆ÷ RemoveMgr(); CString strRecords,strTotalPages, strCurPage,strPageSize,strFileSize; pugi::xml_node form = xmlDoc.child(_T("Result")); pugi::xml_node node = form; //////////////////Ò³µÄÐÅÏ¢//////////////////////////////// m_strSessionID = node.child_value(_T("SessionID")); strRecords = node.child_value(_T("Records")); m_nRecords = _ttoi(strRecords); strTotalPages = node.child_value(_T("TotalPages")); m_nTotalPages = _ttoi(strTotalPages); strCurPage = node.child_value(_T("CurPage")); m_nCurPage = _ttoi(strCurPage); strPageSize = node.child_value(_T("PageSize")); m_nPageSize = _ttoi(strPageSize); ///////////////////catalogÐÅÏ¢///////////////////////////// node = form.child(_T("Body")).child(_T("Catalog")); for (pugi::xml_node catalogNode = node; catalogNode; catalogNode = catalogNode.next_sibling(_T("Catalog"))) { CMBQueryDmsCatalog *pQueryCatalog = new CMBQueryDmsCatalog(); pQueryCatalog->m_strID = catalogNode.attribute(_T("ID")).value(); pQueryCatalog->m_strCatalogPath = catalogNode.child_value(_T("CatalogPath")); pQueryCatalog->m_strCabinetID = catalogNode.child_value(_T("CabinetID")); pQueryCatalog->m_strCabinetName = catalogNode.child_value(_T("CabinetName")); pQueryCatalog->m_strCatalogID = catalogNode.child_value(_T("CatalogID")); pQueryCatalog->m_strListType = catalogNode.attribute(_T("ListType")).value(); pQueryCatalog->m_strOrder = catalogNode.attribute(_T("Order")).value(); CString strSubCount = catalogNode.attribute(_T("SubCount")).value(); pQueryCatalog->m_nSubCount = _ttoi(strSubCount); CString strFileCount = catalogNode.attribute(_T("FileCount")).value(); pQueryCatalog->m_nFileCount = _ttoi(strFileCount); pQueryCatalog->m_strDtCreate = catalogNode.attribute(_T("DTCreate")).value(); pQueryCatalog->m_strHasAce = catalogNode.attribute(_T("HasAce")).value(); pQueryCatalog->m_strPermit = catalogNode.attribute(_T("Permit")).value(); pQueryCatalog->m_strGlobalEdit = catalogNode.attribute(_T("GlobalEdit")).value(); pQueryCatalog->m_strMasterID = catalogNode.attribute(_T("MasterID")).value(); pQueryCatalog->m_strMasterName = catalogNode.attribute(_T("MasterName")).value(); pQueryCatalog->m_strName = catalogNode.child_value(_T("Name")); if( !m_pCatalogMgr->AddCatalog(pQueryCatalog) ) { delete pQueryCatalog; pQueryCatalog = NULL; } } ///////////////////docÐÅÏ¢///////////////////////////////// node = form.child(_T("Body")).child(_T("Doc")); for (pugi::xml_node docNode = node; docNode; docNode = docNode.next_sibling(_T("Doc"))) { CMBQueryDmsDoc *pQueryDoc = new CMBQueryDmsDoc(); pQueryDoc->m_strID = docNode.attribute(_T("ID")).value(); pQueryDoc->m_strCatalogPath = docNode.child_value(_T("CatalogPath")); pQueryDoc->m_strName = docNode.child_value(_T("Name")); pQueryDoc->m_strStatus = docNode.attribute(_T("Status")).value(); pQueryDoc->m_strFileType = docNode.attribute(_T("FileType")).value(); pQueryDoc->m_strFileTime = docNode.attribute(_T("FileTime")).value(); strFileSize = docNode.attribute(_T("FileSize")).value(); pQueryDoc->m_nFileSize = _ttoi(strFileSize); pQueryDoc->m_strDTCreate = docNode.attribute(_T("DTCreate")).value(); pQueryDoc->m_strCreatorID = docNode.attribute(_T("CreatorID")).value(); pQueryDoc->m_strCreatorName = docNode.attribute(_T("CreatorName")).value(); //pQueryDoc->m_strIsLock = docNode.attribute(_T("IsLock")).value(); pQueryDoc->m_strLocker = docNode.attribute(_T("Locker")).value(); pQueryDoc->m_strLockerName = docNode.attribute(_T("LockerName")).value(); pQueryDoc->m_strLockTime = docNode.attribute(_T("LockTime")).value(); pQueryDoc->m_strCabinetID = docNode.attribute(_T("CabinetID")).value(); pQueryDoc->m_strCabinetName = docNode.attribute(_T("CabinetName")).value(); pQueryDoc->m_strCreateDepartID = docNode.attribute(_T("CreateDepartID")).value(); pQueryDoc->m_strCreateDepartName = docNode.attribute(_T("CreateDepartName")).value(); pQueryDoc->m_strTags = docNode.attribute(_T("Tags")).value(); pQueryDoc->m_strThumbURL = docNode.child_value(_T("ThumbURL")); if( !m_pDocMgr->AddDoc(pQueryDoc) ) { delete pQueryDoc; pQueryDoc = NULL; } } return true; }