#include "StdAfx.h" #include "MBBaseHisDocMgr.h" IMPLEMENT_DYNAMIC(CMBBaseHisDocMgr, CMBAbstBaseObj) CMBBaseHisDocMgr::CMBBaseHisDocMgr(void) { RemoveAllHisDocObj(); } CMBBaseHisDocMgr::~CMBBaseHisDocMgr(void) { RemoveAllHisDocObj(); } bool CMBBaseHisDocMgr::AddHisDocObj(CMBBaseHisDocObj *pObj) { if( NULL == pObj || pObj->m_strHistoryID.IsEmpty() ) return false; CMBBaseHisDocObjMap::iterator it; CString strHistoryID; strHistoryID = pObj->m_strHistoryID; it = m_mapObj.find(strHistoryID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapObj.end() ) return false; m_mapObj[strHistoryID] = pObj; m_vecotrObj.push_back(pObj); return true; } CMBBaseHisDocObj* CMBBaseHisDocMgr::GetHisDocObj( CString strHistoryID ) { if( strHistoryID.IsEmpty() ) { return NULL; } CMBBaseHisDocObjMap::iterator it; CMBBaseHisDocObj *pObj = NULL; it = m_mapObj.find(strHistoryID); if( it!= m_mapObj.end() ) pObj = it->second; return pObj; } // Çå¿ÕÈÝÆ÷ void CMBBaseHisDocMgr::EmptyContainer() { m_mapObj.clear(); m_vecotrObj.clear(); } bool CMBBaseHisDocMgr::RemoveAllHisDocObj() { CMBBaseHisDocObjMap::iterator it; CMBBaseHisDocObj *pObj = NULL; for( it = m_mapObj.begin();it != m_mapObj.end();it++ ) { pObj = it->second; delete pObj; pObj = NULL; } m_mapObj.clear(); m_vecotrObj.clear(); return true; } bool CMBBaseHisDocMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseHisDocObjVector::iterator it; CMBBaseHisDocObj *pObj = NULL; for( it = m_vecotrObj.begin();it != m_vecotrObj.end();it++ ) { pObj = *it; vectorObj.push_back(pObj); } return true; } bool CMBBaseHisDocMgr::RemoveHisDocObj( CMBBaseHisDocObj *pObj ) { bool bDelte = false; if( NULL == pObj ) return false; CMBBaseHisDocObjMap::iterator it = m_mapObj.find(pObj->m_strHistoryID); if( it!= m_mapObj.end() ) { bDelte = true; m_mapObj.erase(it); } CMBBaseHisDocObjVector::iterator it1 = std::find(m_vecotrObj.begin( ), m_vecotrObj.end( ), pObj); //²éÕÒ3 if( it1 != m_vecotrObj.end( ) ){ bDelte = true; m_vecotrObj.erase(it1); } if( bDelte ){ delete pObj; pObj = NULL; } return true; } // ÒÆ³ýÎļþÐÅÏ¢ bool CMBBaseHisDocMgr::RemoveHisDocObj( CString strHistoryID ) { CMBBaseHisDocObj *pBase= GetHisDocObj( strHistoryID ); return RemoveHisDocObj( pBase ); } void CMBBaseHisDocMgr::GetHisDocObjMap( CMBBaseHisDocObjMap &mapObj) { mapObj.clear(); mapObj = m_mapObj; } void CMBBaseHisDocMgr::GetHisDocObjVector( CMBBaseHisDocObjVector &vecotrObj) { vecotrObj.clear(); vecotrObj = m_vecotrObj; } int CMBBaseHisDocMgr::GetCount() { return m_mapObj.size(); }