#include "StdAfx.h" #include "MBDocRunTimeMgr.h" #include "MBCabinetInfo.h" #include "MBPsnCabinetInfo.h" #include "MBCatalogInfo.h" #include "MBPsnCabinetInfo.h" #include "MBQueryDmsCatalog.h" #include "MBQueryNdCatalog.h" #include "MBQueryDmsDoc.h" #include "MBQueryNdDoc.h" #include "MBPsnAppInfo.h" #include "MBAppInfo.h" CMBDocRunTimeMgr::CMBDocRunTimeMgr(void) { } CMBDocRunTimeMgr::~CMBDocRunTimeMgr(void) { } CString CMBDocRunTimeMgr::GetObjID( CMBBaseObj *pObj ) { if(pObj->IsKindOf(RUNTIME_CLASS(CMBCabinetInfo)) ) // Îĵµ¹ñ { CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pObj; return pCabinetInfo->m_strID; } else if(pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCabinetInfo)) ) // Îĵµ¹ñ { CMBPsnCabinetInfo *pNdCabinetInfo = (CMBPsnCabinetInfo *)pObj; return pNdCabinetInfo->m_strID; //return _T(""); } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pCatalogInfo = (CMBCatalogInfo *)pObj; return pCatalogInfo->m_strID; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) )// Ŀ¼ { CMBPsnCatalogInfo *pNdCatalogInfo = (CMBPsnCatalogInfo *)pObj; return pNdCatalogInfo->m_strID; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBDocInfo)) ) // Îĵµ { CMBDocInfo *pDocInfo = (CMBDocInfo *)pObj; return pDocInfo->m_strID; } return _T(""); } CString CMBDocRunTimeMgr::GetObjName( CMBBaseObj *pObj ) { if(pObj->IsKindOf(RUNTIME_CLASS(CMBCabinetInfo)) ) // Îĵµ¹ñ { CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pObj; return pCabinetInfo->m_strName; } else if(pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCabinetInfo)) ) // Îĵµ¹ñ { CMBPsnCabinetInfo *pNdCabinetInfo = (CMBPsnCabinetInfo *)pObj; return pNdCabinetInfo->m_strName;; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pCatalogInfo = (CMBCatalogInfo *)pObj; return pCatalogInfo->m_strName; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) )// Ŀ¼ { CMBPsnCatalogInfo *pNdCatalogInfo = (CMBPsnCatalogInfo *)pObj; return pNdCatalogInfo->m_strName; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBDocInfo)) ) // Îĵµ { CMBDocInfo *pDocInfo = (CMBDocInfo *)pObj; return pDocInfo->m_strName; } return _T(""); } CString CMBDocRunTimeMgr::GetCatalogObjID( CMBBaseObj *pObj ) { if(NULL == pObj) return _T(""); if( pObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pCatalogInfo = (CMBCatalogInfo *)pObj; return pCatalogInfo->m_strID; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) ) { CMBPsnCatalogInfo *pCatalogInfo = (CMBPsnCatalogInfo *)pObj; return pCatalogInfo->m_strID; } return _T(""); } // µÃµ½Îĵµ¹ñid CString CMBDocRunTimeMgr::GetCabinetObjID( CMBBaseObj *pObj ) { if(NULL == pObj) return _T(""); if( pObj->IsKindOf(RUNTIME_CLASS(CMBCabinetInfo)) )// Ŀ¼ { CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pObj; return pCabinetInfo->m_strID; } else if( pObj->IsKindOf(RUNTIME_CLASS(CMBPsnCabinetInfo)) ) { CMBPsnCabinetInfo *pCabinetInfo = (CMBPsnCabinetInfo *)pObj; return pCabinetInfo->m_strID; } return _T(""); } void CMBDocRunTimeMgr::GetObjVector( CMBBaseObj *pBaseObj,CMBBaseObjVector &vectorObj ) { if( NULL == pBaseObj ) return ; if(pBaseObj->IsKindOf(RUNTIME_CLASS(CMBCabinetInfo)) ) // Îĵµ¹ñ { CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pBaseObj; if( pCabinetInfo == NULL ) return ; CMBCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr(); if( pCabinetInfo == NULL ) return ; pCatalogMgr->GetBaseObjVector( vectorObj ); } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pCatalogInfo = (CMBCatalogInfo *)pBaseObj; if( pCatalogInfo == NULL ) return ; CMBCatalogMgr *pCatalogMgr = pCatalogInfo->GetCatalogMgr(); if( pCatalogMgr == NULL ) return ; pCatalogMgr->GetBaseObjVector( vectorObj ); } else if(pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnCabinetInfo)) ) // Îĵµ¹ñ { CMBPsnCabinetInfo *pCabinetInfo = (CMBPsnCabinetInfo *)pBaseObj; if( pCabinetInfo == NULL ) return ; CMBPsnCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr(); if( pCabinetInfo == NULL ) return ; pCatalogMgr->GetBaseObjVector( vectorObj ); // µÃµ½vector } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) )// Ŀ¼ { CMBPsnCatalogInfo *pCatalogInfo = (CMBPsnCatalogInfo *)pBaseObj; if( pCatalogInfo == NULL ) return ; CMBPsnCatalogMgr *pCatalogMgr = pCatalogInfo->GetCatalogMgr(); if( pCatalogMgr == NULL ) return ; pCatalogMgr->GetBaseObjVector( vectorObj ); // µÃµ½vector } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBDocInfo)) ) // Îĵµ { } } void CMBDocRunTimeMgr::GetRootObjVector( CMBBaseObj *pBaseObj,CMBBaseObjVector &vectorObj ) { if( NULL == pBaseObj ) return ; if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnAppInfo)) )// ¸öÈËÍøÅÌ { CMBPsnAppInfo *pAppInfo = (CMBPsnAppInfo *)pBaseObj; if( pAppInfo == NULL ) return ; vectorObj.push_back(pAppInfo->m_pCabinetInfo); vectorObj.push_back(pAppInfo->m_pRecycleBinInfo); } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBCabinetInfo)) )// Îĵµ¹ñ { CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pBaseObj; if( pCabinetInfo == NULL ) return ; vectorObj.push_back(pCabinetInfo); vectorObj.push_back(pCabinetInfo->m_pRecycleBinInfo); } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBAppInfo)) )// Ó¦Óà { CMBAppInfo *pAppInfo = (CMBAppInfo *)pBaseObj; if( pAppInfo == NULL ) return ; CMBCabinetMgr *pCabinetMgr = pAppInfo->GetCabinetMgr(); if( pCabinetMgr == NULL ) return ; pCabinetMgr->GetBaseObjVector( vectorObj ); } } void CMBDocRunTimeMgr::GetBaseObj(const CMBBaseObj *pBaseObj,CString &strName,CString &strDtCreate,__int64 &nFileSize,CString &strCatalogPath,bool &bDir ) { if( pBaseObj == NULL ) return ; if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pInfo = (CMBCatalogInfo *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDtCreate; nFileSize = 0; bDir = true; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) )// Ŀ¼ { CMBPsnCatalogInfo *pInfo = (CMBPsnCatalogInfo *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDtCreate; nFileSize = 0; bDir = true; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBDocInfo)) ) // Îĵµ { CMBDocInfo *pInfo = (CMBDocInfo *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDTCreate; nFileSize = pInfo->m_nFileSize; bDir = false; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnDocInfo)) ) // Îĵµ { CMBPsnDocInfo *pInfo = (CMBPsnDocInfo *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDTCreate; nFileSize = pInfo->m_nFileSize; bDir = false; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBQueryDmsCatalog)) )// Ŀ¼ { CMBQueryDmsCatalog *pInfo = (CMBQueryDmsCatalog *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDtCreate; strCatalogPath = pInfo->m_strCatalogPath; nFileSize = 0; bDir = true; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBQueryNdCatalog)) )// Ŀ¼ { CMBQueryNdCatalog *pInfo = (CMBQueryNdCatalog *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDtCreate; strCatalogPath = pInfo->m_strCatalogPath; nFileSize = 0; bDir = true; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBQueryDmsDoc)) ) // Îĵµ { CMBQueryDmsDoc *pInfo = (CMBQueryDmsDoc *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDTCreate; nFileSize = pInfo->m_nFileSize; strCatalogPath = pInfo->m_strCatalogPath; bDir = false; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBQueryNdDoc)) ) // Îĵµ { CMBQueryNdDoc *pInfo = (CMBQueryNdDoc *)pBaseObj; strName = pInfo->m_strName; strDtCreate = pInfo->m_strDTCreate; nFileSize = pInfo->m_nFileSize; strCatalogPath = pInfo->m_strCatalogPath; bDir = false; } } bool CMBDocRunTimeMgr::IsEmptyCatalog( const CMBBaseObj *pBaseObj ) { if( pBaseObj == NULL ) return true; if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBCatalogInfo)) )// Ŀ¼ { CMBCatalogInfo *pInfo = (CMBCatalogInfo *)pBaseObj; if( pInfo->m_nSubCount > 0 ) return false; } else if( pBaseObj->IsKindOf(RUNTIME_CLASS(CMBPsnCatalogInfo)) )// Ŀ¼ { CMBPsnCatalogInfo *pInfo = (CMBPsnCatalogInfo *)pBaseObj; if( pInfo->m_nSubCount > 0 ) return false; } return true; } bool CMBDocRunTimeMgr::SortNameDesc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return strName1 < strName2; } bool CMBDocRunTimeMgr::SortNameAsc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return strName1 > strName2; } bool CMBDocRunTimeMgr::SortDtDesc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return CMBDateUtils::StrDtToTime( strDtCreate1 ) < CMBDateUtils::StrDtToTime( strDtCreate2 ); } bool CMBDocRunTimeMgr::SortDtAsc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return CMBDateUtils::StrDtToTime( strDtCreate1 ) > CMBDateUtils::StrDtToTime( strDtCreate2 ); } bool CMBDocRunTimeMgr::SortSizeDesc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return nFileSize1 < nFileSize2; } bool CMBDocRunTimeMgr::SortSizeAsc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return nFileSize1 > nFileSize2; } bool CMBDocRunTimeMgr::SortCatalogPathDesc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return strCatalogPath1 < strCatalogPath2; } bool CMBDocRunTimeMgr::SortCatalogPathAsc(const CMBBaseObj *p1, const CMBBaseObj *p2) { CString strName1,strDtCreate1,strCatalogPath1; __int64 nFileSize1 = 0; bool bDir1 = false; CString strName2,strDtCreate2,strCatalogPath2; __int64 nFileSize2 = 0; bool bDir2 = false; GetBaseObj(p1, strName1, strDtCreate1,nFileSize1,strCatalogPath1,bDir1 ); GetBaseObj(p2, strName2, strDtCreate2,nFileSize2,strCatalogPath2,bDir2 ); return strCatalogPath1 > strCatalogPath2; }