#include "StdAfx.h"
|
#include "MBBaseLinkDocMgr.h"
|
|
IMPLEMENT_DYNAMIC(CMBBaseLinkDocMgr, CMBAbstBaseObj)
|
|
CMBBaseLinkDocMgr::CMBBaseLinkDocMgr(void)
|
{
|
RemoveAllLinkDocObj();
|
}
|
|
|
CMBBaseLinkDocMgr::~CMBBaseLinkDocMgr(void)
|
{
|
RemoveAllLinkDocObj();
|
}
|
|
bool CMBBaseLinkDocMgr::AddLinkDocObj(CMBBaseLinkDocObj *pLinkDocObj)
|
{
|
if( NULL == pLinkDocObj || pLinkDocObj->m_strID.IsEmpty() )
|
return false;
|
|
CMBBaseLinkDocObjMap::iterator it;
|
CString strID;
|
|
strID = pLinkDocObj->m_strID;
|
it = m_mapLinkDocObj.find(strID);
|
|
// Èç¹ûÕҵõ½ ·µ»Ø
|
if( it != m_mapLinkDocObj.end() )
|
return false;
|
|
m_mapLinkDocObj[strID] = pLinkDocObj;
|
m_vecotrLinkDocObj.push_back(pLinkDocObj);
|
return true;
|
}
|
|
CMBBaseLinkDocObj* CMBBaseLinkDocMgr::GetLinkDocObj( CString strID )
|
{
|
if( strID.IsEmpty() )
|
{
|
return NULL;
|
}
|
|
CMBBaseLinkDocObjMap::iterator it;
|
CMBBaseLinkDocObj *pLinkDocObj = NULL;
|
|
it = m_mapLinkDocObj.find(strID);
|
|
if( it!= m_mapLinkDocObj.end() )
|
pLinkDocObj = it->second;
|
|
return pLinkDocObj;
|
}
|
|
bool CMBBaseLinkDocMgr::RemoveAllLinkDocObj()
|
{
|
CMBBaseLinkDocObjMap::iterator it;
|
CMBBaseLinkDocObj *pLinkDocObj = NULL;
|
|
for( it = m_mapLinkDocObj.begin();it != m_mapLinkDocObj.end();it++ )
|
{
|
pLinkDocObj = it->second;
|
delete pLinkDocObj;
|
pLinkDocObj = NULL;
|
}
|
|
m_mapLinkDocObj.clear();
|
m_vecotrLinkDocObj.clear();
|
return true;
|
}
|
|
bool CMBBaseLinkDocMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj )
|
{
|
CMBBaseLinkDocObjVector::iterator it;
|
CMBBaseLinkDocObj *pLinkDocObj = NULL;
|
|
for( it = m_vecotrLinkDocObj.begin();it != m_vecotrLinkDocObj.end();it++ )
|
{
|
pLinkDocObj = *it;
|
vectorObj.push_back(pLinkDocObj);
|
}
|
|
return true;
|
}
|
|
bool CMBBaseLinkDocMgr::RemoveLinkDocObj( CMBBaseLinkDocObj *pLinkDocObj )
|
{
|
bool bDelte = false;
|
if( NULL == pLinkDocObj )
|
return false;
|
|
CMBBaseLinkDocObjMap::iterator it = m_mapLinkDocObj.find(pLinkDocObj->m_strID);
|
|
if( it!= m_mapLinkDocObj.end() )
|
{
|
bDelte = true;
|
m_mapLinkDocObj.erase(it);
|
}
|
|
CMBBaseLinkDocObjVector::iterator it1 = std::find(m_vecotrLinkDocObj.begin( ), m_vecotrLinkDocObj.end( ), pLinkDocObj); //²éÕÒ3
|
if( it1 != m_vecotrLinkDocObj.end( ) ){
|
bDelte = true;
|
m_vecotrLinkDocObj.erase(it1);
|
}
|
if( bDelte ){
|
delete pLinkDocObj;
|
pLinkDocObj = NULL;
|
}
|
return true;
|
}
|
|
// ÒÆ³ýÎļþÐÅÏ¢
|
bool CMBBaseLinkDocMgr::RemoveLinkDocObj( CString strID )
|
{
|
CMBBaseLinkDocObj *pBase= GetLinkDocObj( strID );
|
return RemoveLinkDocObj( pBase );
|
}
|
|
void CMBBaseLinkDocMgr::GetLinkDocObjMap( CMBBaseLinkDocObjMap &mapLinkDocObj)
|
{
|
mapLinkDocObj.clear();
|
mapLinkDocObj = m_mapLinkDocObj;
|
}
|
|
void CMBBaseLinkDocMgr:: GetLinkDocObjVector( CMBBaseLinkDocObjVector &vecotrLinkDocObj)
|
{
|
vecotrLinkDocObj.clear();
|
vecotrLinkDocObj = m_vecotrLinkDocObj;
|
}
|
|
|
int CMBBaseLinkDocMgr::GetCount()
|
{
|
return m_mapLinkDocObj.size();
|
}
|
|
|