#include "StdAfx.h" #include "MBBaseDocLogMgr.h" IMPLEMENT_DYNAMIC(CMBBaseDocLogMgr, CMBAbstBaseObj) CMBBaseDocLogMgr::CMBBaseDocLogMgr(void) { RemoveAllDocLogObj(); } CMBBaseDocLogMgr::~CMBBaseDocLogMgr(void) { RemoveAllDocLogObj(); } bool CMBBaseDocLogMgr::AddDocLogObj(CMBBaseDocLogObj *pDocLogObj) { if( NULL == pDocLogObj || pDocLogObj->m_strID.IsEmpty() ) return false; CMBBaseDocLogObjMap::iterator it; CString strID; strID = pDocLogObj->m_strID; it = m_mapDocLogObj.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapDocLogObj.end() ) return false; m_mapDocLogObj[strID] = pDocLogObj; m_vecotrDocLogObj.push_back(pDocLogObj); return true; } CMBBaseDocLogObj* CMBBaseDocLogMgr::GetDocLogObj( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBBaseDocLogObjMap::iterator it; CMBBaseDocLogObj *pDocLogInfo = NULL; it = m_mapDocLogObj.find(strID); if( it!= m_mapDocLogObj.end() ) pDocLogInfo = it->second; return pDocLogInfo; } bool CMBBaseDocLogMgr::RemoveAllDocLogObj() { CMBBaseDocLogObjMap::iterator it; CMBBaseDocLogObj *pDocLogObj = NULL; for( it = m_mapDocLogObj.begin();it != m_mapDocLogObj.end();it++ ) { pDocLogObj = it->second; delete pDocLogObj; pDocLogObj = NULL; } m_mapDocLogObj.clear(); m_vecotrDocLogObj.clear(); return true; } bool CMBBaseDocLogMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseDocLogObjVector::iterator it; CMBBaseDocLogObj *pDocLogObj = NULL; for( it = m_vecotrDocLogObj.begin();it != m_vecotrDocLogObj.end();it++ ) { pDocLogObj = *it; vectorObj.push_back(pDocLogObj); } return true; } bool CMBBaseDocLogMgr::RemoveDocLogObj( CMBBaseDocLogObj *pDocLogObj ) { bool bDelte = false; if( NULL == pDocLogObj ) return false; CMBBaseDocLogObjMap::iterator it = m_mapDocLogObj.find(pDocLogObj->m_strID); if( it!= m_mapDocLogObj.end() ) { bDelte = true; m_mapDocLogObj.erase(it); } CMBBaseDocLogObjVector::iterator it1 = std::find(m_vecotrDocLogObj.begin( ), m_vecotrDocLogObj.end( ), pDocLogObj); //²éÕÒ3 if( it1 != m_vecotrDocLogObj.end( ) ){ bDelte = true; m_vecotrDocLogObj.erase(it1); } if( bDelte ){ delete pDocLogObj; pDocLogObj = NULL; } return true; } // ÒÆ³ýÎļþÐÅÏ¢ bool CMBBaseDocLogMgr::RemoveDocLogObj( CString strID ) { CMBBaseDocLogObj *pBase= GetDocLogObj( strID ); return RemoveDocLogObj( pBase ); } void CMBBaseDocLogMgr::GetDocLogObjMap( CMBBaseDocLogObjMap &mapDocLogObj) { mapDocLogObj.clear(); mapDocLogObj = m_mapDocLogObj; } void CMBBaseDocLogMgr::GetDocLogObjVector( CMBBaseDocLogObjVector &vecotrDocLogObj) { vecotrDocLogObj.clear(); vecotrDocLogObj = m_vecotrDocLogObj; } int CMBBaseDocLogMgr::GetCount() { return m_mapDocLogObj.size(); }