#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;
|
}
|
|
|