#include "StdAfx.h" #include "MBVaultCatalogMgr.h" CMBVaultCatalogMgr::CMBVaultCatalogMgr(void) { RemoveAllVaultCatalog(); m_bLoad = false; } CMBVaultCatalogMgr::~CMBVaultCatalogMgr(void) { RemoveAllVaultCatalog(); } void CMBVaultCatalogMgr:: GetVaultCatalogVector( CMBVaultCatalogVector &vectorCatalog) { vectorCatalog.clear(); vectorCatalog = m_vectorCatalog; } CMBVaultCatalog *CMBVaultCatalogMgr::GetVaultCatalog( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBVaultCatalogMap::iterator it; CMBVaultCatalog *pVaultCatalog = NULL; it = m_mapCatalog.find(strID); if( it!= m_mapCatalog.end() ) pVaultCatalog = it->second; return pVaultCatalog; } bool CMBVaultCatalogMgr::AddVaultCatalog( CMBVaultCatalog *pVaultCatalog ) { if( NULL == pVaultCatalog || pVaultCatalog->m_strID.IsEmpty() ) return false; CMBVaultCatalogMap::iterator it; CString strID; strID = pVaultCatalog->m_strID; it = m_mapCatalog.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapCatalog.end() ) return false; m_mapCatalog[strID] = pVaultCatalog; m_vectorCatalog.push_back(pVaultCatalog); return true; } // Çå³ýËùÓÐ bool CMBVaultCatalogMgr::RemoveAllVaultCatalog() { CMBVaultCatalogMap::iterator it; CMBVaultCatalog *pVaultCatalog = NULL; for( it = m_mapCatalog.begin();it != m_mapCatalog.end();it++ ) { pVaultCatalog = it->second; delete pVaultCatalog; pVaultCatalog = NULL; } m_mapCatalog.clear(); m_vectorCatalog.clear(); return true; } int CMBVaultCatalogMgr::GetCount() { return m_vectorCatalog.size(); } // ÐòÁл¯³ÉXML¸ñʽ CString CMBVaultCatalogMgr::GenXML() { CString strXml,strCatalogXml; CMBVaultCatalogVector::iterator it; CMBVaultCatalog *pVaultCatalog = NULL; for( it = m_vectorCatalog.begin();it != m_vectorCatalog.end();it++ ) { pVaultCatalog = *it; strCatalogXml += pVaultCatalog->GenXml(); } strXml.Format(_T("%s"),strCatalogXml); return strXml; } // ½âÎö³É¶ÔÏó strXml = "" bool CMBVaultCatalogMgr::ParseXML( CString &strXml,CString strVaultID,CString strParentID,CString &strErrInfo ) { if( strXml.IsEmpty() ) return true; pugi::xml_document xmlDoc; if (!xmlDoc.load(strXml)) { return false; } pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("Catalog")); for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Catalog"))) { CMBVaultCatalog *pCatalog = new CMBVaultCatalog(); pCatalog->m_strID = node.attribute(_T("ID")).value(); pCatalog->m_strName = node.attribute(_T("Name")).value(); pCatalog->m_nSubCount = node.attribute(_T("SubCount")).as_int(); pCatalog->m_nObjCount = node.attribute(_T("ObjCount")).as_int(); pCatalog->m_strTCreate = node.attribute(_T("DTCreate")).value(); pCatalog->m_strParentID = strParentID; pCatalog->m_strVaultID = strVaultID; if( !AddVaultCatalog( pCatalog ) ) { return false; } } return true; }