#include "StdAfx.h" #include "MBShareMgr.h" CMBShareMgr::CMBShareMgr(void) { m_pDocMgr = new CMBShareDocMgr(); m_pCatalogMgr = new CMBShareCatalogMgr(); m_nRecords = 0; m_nTotalPages = 0; m_nCurPage = 0; m_nPageSize = 0; m_bLoadShare = false; } CMBShareMgr::~CMBShareMgr(void) { if( m_pDocMgr ) { delete m_pDocMgr; m_pDocMgr = NULL; } if( m_pCatalogMgr ) { delete m_pCatalogMgr; m_pCatalogMgr = NULL; } } CMBShareDocMgr *CMBShareMgr::GetShareDocMgr() { return m_pDocMgr; } CMBShareCatalogMgr *CMBShareMgr::GetShareCatalogMgr() { return m_pCatalogMgr; } void CMBShareMgr::GetBaseObjVector(CMBBaseObjVector &vectorObj) { m_pCatalogMgr->GetBaseObjVector(vectorObj); m_pDocMgr->GetBaseObjVector(vectorObj); } // ÒÆ³ý²éѯ¹ÜÀíÆ÷ void CMBShareMgr::RemoveShareMgr() { m_pDocMgr->RemoveAllDocInfo(); m_pCatalogMgr->RemoveAllCatalogInfo(); } int CMBShareMgr::GetCount() { return m_pDocMgr->GetCount() + m_pCatalogMgr->GetCount(); } bool CMBShareMgr::ParseXml( CString strXml,CString &strErrInfo ) { if( strXml.IsEmpty() ) { return true; } pugi::xml_document xmlDoc; if (!xmlDoc.load(strXml)) { strErrInfo = _T("CMBShareMgr::ParseXml,¼ÓÔØxmlʧ°Ü!"); return false; } RemoveShareMgr(); CString strRecords,strTotalPages, strCurPage,strPageSize,strFileSize; pugi::xml_node form = xmlDoc.child(_T("Result")); //////½Ó¿Ú·µ»ØµÄÊý¾ÝºÍ½Ó¿ÚÎĵµ²»Ò»Ö£¬ËùÒÔÏȰ´ÕÕ½Ó¿ÚÀ´·µ»ØµÄÊý¾Ý½âÎö form = xmlDoc.child(_T("Body")); 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")); node = form.child(_T("Catalog")); //////½Ó¿Ú·µ»ØµÄÊý¾ÝºÍ½Ó¿ÚÎĵµ²»Ò»Ö£¬ËùÒÔÏȰ´ÕÕ½Ó¿ÚÀ´·µ»ØµÄÊý¾Ý½âÎö for (pugi::xml_node catalogNode = node; catalogNode; catalogNode = catalogNode.next_sibling()) { CMBShareCatalogInfo *pCatalog = new CMBShareCatalogInfo(); pCatalog->m_strID = catalogNode.attribute(_T("ID")).value(); pCatalog->m_strListType = catalogNode.attribute(_T("ListType")).value(); pCatalog->m_strOrder = catalogNode.attribute(_T("Order")).value(); CString strSubCount = catalogNode.attribute(_T("SubCount")).value(); pCatalog->m_nSubCount = _ttoi(strSubCount); CString strFileCount = catalogNode.attribute(_T("FileCount")).value(); pCatalog->m_nFileCount = _ttoi(strFileCount); pCatalog->m_strDtCreate = catalogNode.attribute(_T("DTCreate")).value(); pCatalog->m_strHasAce = catalogNode.attribute(_T("HasAce")).value(); pCatalog->m_strPermit = catalogNode.attribute(_T("Permit")).value(); pCatalog->m_strGlobalEdit = catalogNode.attribute(_T("GlobalEdit")).value(); pCatalog->m_strMasterID = catalogNode.attribute(_T("MasterID")).value(); pCatalog->m_strMasterName = catalogNode.attribute(_T("MasterName")).value(); pCatalog->m_strName = catalogNode.child_value(_T("Name")); pCatalog->m_strSharedTime = catalogNode.attribute(_T("SharedTime")).value();// ¨C ¹²Ïíʱ¼ä pCatalog->m_strInvalidDate = catalogNode.attribute(_T("InvalidDate")).value();// ¨C ʧЧÈÕÆÚ pCatalog->m_strSharers = catalogNode.child_value(_T("Sharers"));// ¨C ¹²Ïí¸øÄÄЩÈË pCatalog->m_strTags = catalogNode.child_value(_T("Tags"));// ¨C Îĵµ±êÇ© pCatalog->m_strOwnerUserID = catalogNode.attribute(_T("OwnerUserID")).value();// ¨C ¹²ÏíÕߵǼÃû pCatalog->m_strOwnerUserName= catalogNode.attribute(_T("OwnerUserName")).value();// ¨C ¹²ÏíÕßÃû³Æ pCatalog->m_strLastViewTime = catalogNode.attribute(_T("LastViewTime")).value();// ¨C ×îºóÒ»´Îä¯ÀÀʱ¼ä pCatalog->m_strLastModify = catalogNode.attribute(_T("LastModify")).value();// ¨C ×îºóÒ»´ÎÐÞ¸Äʱ¼ä if( !m_pCatalogMgr->AddCatalogInfo(pCatalog) ) { delete pCatalog; pCatalog = NULL; } } ///////////////////docÐÅÏ¢///////////////////////////////// //node = form.child(_T("Body")).child(_T("Doc")); node = form.child(_T("Doc")); //////½Ó¿Ú·µ»ØµÄÊý¾ÝºÍ½Ó¿ÚÎĵµ²»Ò»Ö£¬ËùÒÔÏȰ´ÕÕ½Ó¿ÚÀ´·µ»ØµÄÊý¾Ý½âÎö for (pugi::xml_node docNode = node; docNode; docNode = docNode.next_sibling()) { CMBShareDocInfo *pDoc = new CMBShareDocInfo(); pDoc->m_strID = docNode.attribute(_T("ID")).value(); pDoc->m_strName = docNode.child_value(_T("Name")); pDoc->m_strStatus = docNode.attribute(_T("Status")).value(); pDoc->m_strFileType = docNode.attribute(_T("FileType")).value(); pDoc->m_strFileTime = docNode.attribute(_T("FileTime")).value(); strFileSize = docNode.attribute(_T("FileSize")).value(); pDoc->m_nFileSize = _ttoi(strFileSize); pDoc->m_strDTCreate = docNode.attribute(_T("DTCreate")).value(); pDoc->m_strCreatorID = docNode.attribute(_T("CreatorID")).value(); pDoc->m_strCreatorName = docNode.attribute(_T("CreatorName")).value(); pDoc->m_strLocker = docNode.attribute(_T("Locker")).value(); pDoc->m_strLockerName = docNode.attribute(_T("LockerName")).value(); pDoc->m_strLockTime = docNode.attribute(_T("LockTime")).value(); pDoc->m_strTags = docNode.attribute(_T("Tags")).value(); pDoc->m_strThumbURL = docNode.child_value(_T("ThumbURL")); pDoc->m_strSharedTime = docNode.attribute(_T("SharedTime")).value();// ¨C ¹²Ïíʱ¼ä pDoc->m_strInvalidDate = docNode.attribute(_T("InvalidDate")).value();// ¨C ʧЧÈÕÆÚ pDoc->m_strSharers = docNode.child_value(_T("Sharers"));// ¨C ¹²Ïí¸øÄÄЩÈË pDoc->m_strTags = docNode.child_value(_T("Tags"));// ¨C Îĵµ±êÇ© pDoc->m_strOwnerUserID = docNode.attribute(_T("OwnerUserID")).value();// ¨C ¹²ÏíÕߵǼÃû pDoc->m_strOwnerUserName= docNode.attribute(_T("OwnerUserName")).value();// ¨C ¹²ÏíÕßÃû³Æ pDoc->m_strLastViewTime = docNode.attribute(_T("LastViewTime")).value();// ¨C ×îºóÒ»´Îä¯ÀÀʱ¼ä pDoc->m_strLastModify = docNode.attribute(_T("LastModify")).value();// ¨C ×îºóÒ»´ÎÐÞ¸Äʱ¼ä if( !m_pDocMgr->AddDocInfo(pDoc) ) { delete pDoc; pDoc = NULL; } } return true; }