#include "StdAfx.h" #include "MBBaseCatalogMgr.h" IMPLEMENT_DYNAMIC(CMBBaseCatalogMgr, CMBAbstBaseObj) CMBBaseCatalogMgr::CMBBaseCatalogMgr(void) { RemoveAllCatalogObj(); } CMBBaseCatalogMgr::~CMBBaseCatalogMgr(void) { RemoveAllCatalogObj(); } bool CMBBaseCatalogMgr::AddCatalogObj(CMBBaseCatalogObj *pCatalogObj) { if( NULL == pCatalogObj || pCatalogObj->m_strID.IsEmpty() ) return false; CMBBaseCatalogObjMap::iterator it; CString strID; strID = pCatalogObj->m_strID; it = m_mapCatalogObj.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapCatalogObj.end() ) return false; m_mapCatalogObj[strID] = pCatalogObj; //m_listCatalogInfo.push_back(pCatalogInfo); m_vectorCatalogObj.push_back(pCatalogObj); return true; } CMBBaseCatalogObj* CMBBaseCatalogMgr::GetCatalogObj( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBBaseCatalogObjMap::iterator it; CMBBaseCatalogObj *pCatalogObj = NULL; it = m_mapCatalogObj.find(strID); if( it!= m_mapCatalogObj.end() ) pCatalogObj = it->second; return pCatalogObj; } // ²éÕÒ CMBBaseCatalogObj* CMBBaseCatalogMgr::GetCatalogByName( CString strName ) { CMBBaseCatalogObjMap::iterator it; CMBBaseCatalogObj *pCatalogObj = NULL; for( it = m_mapCatalogObj.begin();it != m_mapCatalogObj.end();it++ ) { pCatalogObj = it->second; if( pCatalogObj->m_strName == strName ) return pCatalogObj; } return NULL; } bool CMBBaseCatalogMgr::RemoveAllCatalogObj() { CMBBaseCatalogObjMap::iterator it; CMBBaseCatalogObj *pCatalogObj = NULL; for( it = m_mapCatalogObj.begin();it != m_mapCatalogObj.end();it++ ) { pCatalogObj = it->second; delete pCatalogObj; pCatalogObj = NULL; } m_mapCatalogObj.clear(); //m_listCatalogInfo.clear(); m_vectorCatalogObj.clear(); return true; } // Çå¿ÕÈÝÆ÷ void CMBBaseCatalogMgr::EmptyContainer() { m_mapCatalogObj.clear(); //m_listCatalogInfo.clear(); m_vectorCatalogObj.clear(); } bool CMBBaseCatalogMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseCatalogObjVector::iterator it; CMBBaseCatalogObj *pCatalogObj = NULL; for( it = m_vectorCatalogObj.begin();it != m_vectorCatalogObj.end();it++ ) { pCatalogObj = *it; vectorObj.push_back(pCatalogObj); } return true; } bool CMBBaseCatalogMgr::RemoveCatalog( CMBBaseCatalogObj *pCatalogObj ) { bool bDelete = false; if( pCatalogObj == NULL ) return false; CMBBaseCatalogObjMap::iterator it = m_mapCatalogObj.find(pCatalogObj->m_strID); if( it!= m_mapCatalogObj.end() ) { bDelete = true; m_mapCatalogObj.erase(it); } CMBBaseCatalogObjVector::iterator it1 = std::find(m_vectorCatalogObj.begin( ), m_vectorCatalogObj.end( ), pCatalogObj); //²éÕÒ3 if( it1 != m_vectorCatalogObj.end( ) ){ bDelete = true; m_vectorCatalogObj.erase(it1); } if( bDelete ){ delete pCatalogObj; pCatalogObj = NULL; } return true; } bool CMBBaseCatalogMgr::RemoveCatalog( CString strID ) { CMBBaseCatalogObj *pBase = GetCatalogObj( strID ); return RemoveCatalog(pBase); } void CMBBaseCatalogMgr::GetCatalogObjMap( CMBBaseCatalogObjMap &mapCatalogObj) { mapCatalogObj.clear(); mapCatalogObj = m_mapCatalogObj; } void CMBBaseCatalogMgr::GetCatalogObjVector( CMBBaseCatalogObjVector &vectorCatalogObj) { vectorCatalogObj.clear(); vectorCatalogObj = m_vectorCatalogObj; } int CMBBaseCatalogMgr::GetCount() { return m_mapCatalogObj.size(); } // µÃµ½¹æÔòµÄĿ¼Ãû³Æ CString CMBBaseCatalogMgr::GetNewRuleCatalogName( CString strName ) { CString strRetName; int nIndex = 1; strRetName = strName; CMBBaseCatalogObj *pBaseCatalogObj = GetCatalogByName(strName); if( NULL == pBaseCatalogObj) return strRetName; while( NULL != pBaseCatalogObj ) { strRetName.Format(_T("%s(%d)"),strName,nIndex); pBaseCatalogObj = GetCatalogByName(strRetName); nIndex ++; } return strRetName; }