#include "StdAfx.h" #include "MBBaseAttachDocMgr.h" IMPLEMENT_DYNAMIC(CMBBaseAttachDocMgr, CMBAbstBaseObj) CMBBaseAttachDocMgr::CMBBaseAttachDocMgr(void) { RemoveAllAttachObj(); } CMBBaseAttachDocMgr::~CMBBaseAttachDocMgr(void) { RemoveAllAttachObj(); } bool CMBBaseAttachDocMgr::AddAttachObj(CMBBaseAttachDocObj *pAttachDocObj) { if( NULL == pAttachDocObj || pAttachDocObj->m_strID.IsEmpty() ) return false; CMBBaseAttachDocObjMap::iterator it; CString strID; strID = pAttachDocObj->m_strID; it = m_mapAttachObj.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapAttachObj.end() ) return false; m_mapAttachObj[strID] = pAttachDocObj; m_vecotrAttachObj.push_back(pAttachDocObj); return true; } CMBBaseAttachDocObj* CMBBaseAttachDocMgr::GetAttachObj( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBBaseAttachDocObjMap::iterator it; CMBBaseAttachDocObj *pAttachDocObj = NULL; it = m_mapAttachObj.find(strID); if( it!= m_mapAttachObj.end() ) pAttachDocObj = it->second; return pAttachDocObj; } bool CMBBaseAttachDocMgr::RemoveAllAttachObj() { CMBBaseAttachDocObjMap::iterator it; CMBBaseAttachDocObj *pAttachDocObj = NULL; for( it = m_mapAttachObj.begin();it != m_mapAttachObj.end();it++ ) { pAttachDocObj = it->second; delete pAttachDocObj; pAttachDocObj = NULL; } m_mapAttachObj.clear(); m_vecotrAttachObj.clear(); return true; } bool CMBBaseAttachDocMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseAttachDocObjVector::iterator it; CMBBaseAttachDocObj *pAttachDocObj = NULL; for( it = m_vecotrAttachObj.begin();it != m_vecotrAttachObj.end();it++ ) { pAttachDocObj = *it; vectorObj.push_back(pAttachDocObj); } return true; } bool CMBBaseAttachDocMgr::RemoveAttachObj( CMBBaseAttachDocObj *pAttachDocObj ) { bool bDelte = false; if( NULL == pAttachDocObj ) return false; CMBBaseAttachDocObjMap::iterator it = m_mapAttachObj.find(pAttachDocObj->m_strID); if( it!= m_mapAttachObj.end() ) { bDelte = true; m_mapAttachObj.erase(it); } CMBBaseAttachDocObjVector::iterator it1 = std::find(m_vecotrAttachObj.begin( ), m_vecotrAttachObj.end( ), pAttachDocObj); //²éÕÒ3 if( it1 != m_vecotrAttachObj.end( ) ){ bDelte = true; m_vecotrAttachObj.erase(it1); } if( bDelte ){ delete pAttachDocObj; pAttachDocObj = NULL; } return true; } bool CMBBaseAttachDocMgr::RemoveAttachObj( CString strID ) { CMBBaseAttachDocObj *pBase= GetAttachObj( strID ); return RemoveAttachObj( pBase ); } void CMBBaseAttachDocMgr::GetAttachObjMap( CMBBaseAttachDocObjMap &mapAttachObj) { mapAttachObj.clear(); mapAttachObj = m_mapAttachObj; } void CMBBaseAttachDocMgr::GetAttachObjVector( CMBBaseAttachDocObjVector &vecotrAttachObj) { vecotrAttachObj.clear(); vecotrAttachObj = m_vecotrAttachObj; } int CMBBaseAttachDocMgr::GetCount() { return m_mapAttachObj.size(); }