#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;
|
}
|