#include "StdAfx.h" #include "MBVaultMgr.h" CMBVaultMgr::CMBVaultMgr(void) { RemoveAllVault(); } CMBVaultMgr::~CMBVaultMgr(void) { RemoveAllVault(); } void CMBVaultMgr:: GetVaultVector( CMBVaultVector &vector) { vector.clear(); vector = m_vector; } CMBVault *CMBVaultMgr::GetVault( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBVaultMap::iterator it; CMBVault *pVault = NULL; it = m_map.find(strID); if( it!= m_map.end() ) pVault = it->second; return pVault; } bool CMBVaultMgr::AddVault( CMBVault *pVault ) { if( NULL == pVault || pVault->m_strID.IsEmpty() ) return false; CMBVaultMap::iterator it; CString strID; strID = pVault->m_strID; it = m_map.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_map.end() ) return false; m_map[strID] = pVault; m_vector.push_back(pVault); return true; } // Çå³ýËùÓÐ bool CMBVaultMgr::RemoveAllVault() { CMBVaultMap::iterator it; CMBVault *pVault = NULL; for( it = m_map.begin();it != m_map.end();it++ ) { pVault = it->second; delete pVault; pVault = NULL; } m_map.clear(); m_vector.clear(); return true; } // ½âÎöÊý¾Ý bool CMBVaultMgr::ParseXml( CString &strXml,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("Vault")); for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Vault"))) { CMBVault *pVault = new CMBVault(); pVault->m_strID = node.attribute(_T("ID")).value(); // µç×Ó²Ö¿âID pVault->m_strName = node.child_value(_T("Name")); // µç×Ó²Ö¿âÃû³Æ pVault->m_strBAK = node.attribute(_T("BAK")).value(); // ±¸×¢ pVault->m_strClsID = node.attribute(_T("ClassID")).value(); // µç×Ó²Ö¿â¹ÜÀíµÄÊý¾Ý¶ÔÏóÀàID pVault->m_strAdminstrator = node.attribute(_T("AdminName")).value(); // ¹ÜÀíÕßÃû³Æ pVault->m_strAdminstratorID = node.attribute(_T("AdminLogin")).value(); // ¹ÜÀíÕßID pVault->m_strAce = node.attribute(_T("Ace")).value(); // ±íʾÊÇ·ñÓÐÓÐACEÏÞÖÆ //pVault->m_nStatus = node.attribute(_T("Status")).as_int(); // ÊÇ·ñ¿ÉÓà //pVault->m_strCreatorID = node.attribute(_T("Creator")).value(); pVault->m_strCreatorName = node.attribute(_T("CreatorName")).value(); pVault->m_strTCreate = node.attribute(_T("DTCreate")).value(); // ´´½¨ÈÕÆÚ //pVault->m_nType = node.attribute(_T("Type")).as_int(); // Êý¾Ý²Ö¿âÀàÐÍ //pVault->m_strPID = node.attribute(_T("PID")).value(); // ÏîÄ¿ ID pVault->m_strPName = node.attribute(_T("PName")).value(); // ÏîÄ¿Ãû³Æ pVault->m_nBkColor = node.attribute(_T("BkColor")).value(); // µç×Ó²Ö¿â°´Å¥µÄ±³¾°ÑÕÉ« pVault->m_strImgFontStyle = node.attribute(_T("ImgFontStyle")).value(); // ͼ±ê×ÖÌåÑùʽ //pVault->m_nOwnerType = node.attribute(_T("OwnerType")).as_int(); // ËùÓÐÕßÀàÐÍ //pVault->m_strOwnerID = node.attribute(_T("Owner")).value(); // ËùÓÐÕß±êʶ //pVault->m_strOwerName = node.attribute(_T("OwerName")).value(); // ËùÓÐÕßÃû³Æ //pVault->m_strViewName = node.attribute(_T("ViewName")).value(); // ´´½¨µÄ²éѯÊÓͼ±êʶ pVault->m_strQueryClsAttr = node.attribute(_T("QueryClsAttr")).value(); // ¿ÉÒÔ²éѯµÄÀà×ֶΣ¬¿ÉÒÔû¶¨Ò壬û¶¨Òå¸ù¾ÝÀàÖе͍Òå pVault->m_strExtAdmin = node.attribute(_T("ExtAdmin")).value(); // À©Õ¹³öÀ´µÄ¹ÜÀíÔ±£¬¿ÉÒÔ×öÒ»Ð©ÒÆ¶¯£¬Ä¿Â¼É¾³ýÔö¼Ó£¬´ò±êÇ©µÈ²Ù×÷ pVault->m_strExtParamter = node.attribute(_T("ExtParamter")).value(); // À©Õ¹²ÎÊý //pVault->m_strArchiveAdmin = node.attribute(_T("ArchiveAdmin")).value(); // ÊÇ·ñÓÐÔ¤¹éµµ //pVault->m_strMemo = node.child_value(_T("Memo")); pVault->m_bCanSyncToClient = node.attribute(_T("CanSyncToClient")).as_bool(); if( !AddVault(pVault ) ) { delete pVault; pVault = NULL; } } return true; } CString CMBVaultMgr::GenXml() { CString strXml,strVaultXml; CMBVaultVector::iterator it; CMBVault *pVault = NULL; for( it = m_vector.begin();it != m_vector.end();it++ ) { pVault = *it; strVaultXml += pVault->GenXml(); } strVaultXml = strVaultXml.Trim(); if( !strVaultXml.IsEmpty() ) strXml.Format(_T("%s"),strVaultXml); return strXml; }