#include "StdAfx.h" #include "MBAppMgr.h" #include "MBAppInfo.h" #include "MBPsnAppInfo.h" #include "MBAreaAppInfo.h" CMBAppMgr::CMBAppMgr(void) { } CMBAppMgr::~CMBAppMgr(void) { } bool CMBAppMgr::AddApp(CMBBaseAppObj *pAppObj) { return AddAppObj(pAppObj); } CMBBaseCatalogObj *CMBAppMgr::GetCatalogObj( CString strCabinetID,CString strCatalogID ) { CMBBaseCabinetObj *pBaseCabinetObj = GetCabinetObj( strCabinetID ); if( NULL == pBaseCabinetObj ) return NULL; if( strCatalogID.IsEmpty() ) return NULL; CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pBaseCabinetObj; return pCabinetInfo->GetCatalogMgr()->DeepFindCatalogObj( strCatalogID ); } CMBBaseCabinetObj *CMBAppMgr::GetCabinetObj( CString strCabinetID ) { if( strCabinetID.IsEmpty() ) { return NULL; } CMBBaseAppObjMap::iterator it; CMBBaseAppObj *pBaseAppObj = NULL; for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ ) { pBaseAppObj = it->second; if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBAppInfo)) ) { CMBAppInfo *pAppInfo = (CMBAppInfo *)pBaseAppObj; CMBBaseCabinetObj *pCabinetObj = pAppInfo->GetCabinetObj(strCabinetID); if( pCabinetObj != NULL ) return pCabinetObj; } } return NULL; } CMBBaseCatalogObj *CMBAppMgr::GetPsnCatalogObj( CString strCatalogID ) { CMBBaseCabinetObj *pCabinetObj = GetPsnCabinetObj(); if( NULL == pCabinetObj ) return NULL; if( strCatalogID.IsEmpty() ) return NULL; CMBPsnCabinetInfo * pCabinetInfo = (CMBPsnCabinetInfo*)pCabinetObj; return pCabinetInfo->GetCatalogMgr()->DeepFindCatalogObj( strCatalogID ); } CMBBaseCabinetObj *CMBAppMgr::GetPsnCabinetObj( ) { CMBBaseAppObjMap::iterator it; CMBBaseAppObj *pBaseAppObj = NULL; for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ ) { pBaseAppObj = it->second; if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBPsnAppInfo)) ) { CMBPsnAppInfo *pAppInfo = (CMBPsnAppInfo *)pBaseAppObj; return pAppInfo->m_pCabinetInfo; } } return NULL; } // ²éÕÒÉî²ã¶ÔÏ󣬸ú¾Ýid CMBBaseObj *CMBAppMgr::FindDeepObjByID( CStringArray &ar ) { CMBBaseObj *pReturnObj = NULL; if( ar.GetCount() <= 0 ) return pReturnObj; CMBBaseAppObjMap::iterator it; CMBBaseAppObj *pBaseAppObj = NULL; for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ ) { pBaseAppObj = it->second; if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBPsnAppInfo)) ) { CMBPsnAppInfo *pAppInfo = (CMBPsnAppInfo *)pBaseAppObj; CMBPsnCabinetInfo *pCabinetInfo = ( CMBPsnCabinetInfo * )pAppInfo->GetCabinetObj( ar[0] ); if( pCabinetInfo != NULL ) { if( ar.GetCount() == 1 ){ pReturnObj = pCabinetInfo; return pReturnObj; } CMBPsnCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr(); for( int i = 1;i < ar.GetCount();i++ ) { CMBPsnCatalogInfo *pCatalogInfo = pCatalogMgr->GetCatalogInfo(ar[i]); if( ar.GetCount() - 1 == i ) { pReturnObj = pCatalogInfo; return pReturnObj; } if( pCatalogInfo == NULL ) break; pCatalogMgr = pCatalogInfo->GetCatalogMgr(); } } } else if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBAppInfo)) ) { CMBAppInfo *pAppInfo = (CMBAppInfo *)pBaseAppObj; CMBCabinetInfo *pCabinetInfo = ( CMBCabinetInfo * )pAppInfo->GetCabinetObj( ar[0] ); if( pCabinetInfo != NULL ) { if( ar.GetCount() == 1 ){ pReturnObj = pCabinetInfo; return pReturnObj; } CMBCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr(); for( int i = 1;i < ar.GetCount();i++ ) { CMBCatalogInfo *pCatalogInfo = pCatalogMgr->GetCatalogInfo(ar[i]); if( ar.GetCount() - 1 == i ) { pReturnObj = pCatalogInfo; return pReturnObj; } if( pCatalogInfo == NULL ) break; pCatalogMgr = pCatalogInfo->GetCatalogMgr(); } } } } return pReturnObj; } //