#include "StdAfx.h"
|
#include "MBPsnCabinetInfo.h"
|
|
|
IMPLEMENT_DYNAMIC(CMBPsnCabinetInfo, CMBBaseCabinetObj)
|
|
CMBPsnCabinetInfo::CMBPsnCabinetInfo(void)
|
{
|
m_pCatalogMgr = new CMBPsnCatalogMgr();
|
m_pDocMgr = new CMBPsnDocMgr();
|
m_nRecords = 0;
|
m_nCurPage = 0;
|
m_nTotalPages = 0;
|
m_nPageSize = 0;
|
m_nFakeType = CABINET_PSN;
|
}
|
|
|
CMBPsnCabinetInfo::~CMBPsnCabinetInfo(void)
|
{
|
if( m_pCatalogMgr )
|
{
|
delete m_pCatalogMgr;
|
m_pCatalogMgr = NULL;
|
}
|
if( m_pDocMgr )
|
{
|
delete m_pDocMgr;
|
m_pDocMgr = NULL;
|
}
|
}
|
|
CMBPsnCatalogMgr *CMBPsnCabinetInfo::GetCatalogMgr()
|
{
|
return m_pCatalogMgr;
|
}
|
|
CMBPsnDocMgr *CMBPsnCabinetInfo::GetDocMgr()
|
{
|
return m_pDocMgr;
|
}
|
|
bool CMBPsnCabinetInfo::RemoveCatalogInfoOnCabinet( CMBPsnCatalogInfo *pCatalogInfo )
|
{
|
if(!m_pCatalogMgr->RemoveCatalog( pCatalogInfo ))
|
return false;
|
return true;
|
}
|
|
bool CMBPsnCabinetInfo::RemoveDocInfoOnCabinet( CMBPsnDocInfo *pDocInfo )
|
{
|
if(!m_pDocMgr->RemoveDocObj( pDocInfo ))
|
return false;
|
return true;
|
}
|
|
bool CMBPsnCabinetInfo::RemoveCatalogInfoOnCabinet( CString strID )
|
{
|
if(!m_pCatalogMgr->RemoveCatalog( strID ))
|
return false;
|
return true;
|
}
|
|
bool CMBPsnCabinetInfo::RemoveDocInfoOnCabinet( CString strID )
|
{
|
if(!m_pDocMgr->RemoveDocObj( strID ))
|
return false;
|
return true;
|
}
|
|
|
// Æ¥Åäserverpath strServerPath = "н¨Îļþ¼Ð/н¨Îļþ¼Ð/н¨Îļþ¼Ð"
|
CMBPsnCatalogInfo *CMBPsnCabinetInfo::MatchServerPath( const CString & strServerPath,CString &strMatchPath )
|
{
|
CString strTmpSerPath;
|
CStringArray aryServerPath;
|
CString strSerPathItem;
|
CMBPsnCatalogInfo *pCatalogInfo = NULL;
|
CMBPsnCatalogInfo *pRetCatalogInfo = NULL;
|
CMBPsnCatalogMgr *pTmpCatalogMgr = NULL;
|
|
|
pTmpCatalogMgr = m_pCatalogMgr;
|
|
if( strServerPath.IsEmpty() )
|
return NULL;
|
|
strTmpSerPath = strServerPath;
|
strTmpSerPath.Replace(_T('/'),_T(';'));
|
|
CMBStrOper::SplitString(strTmpSerPath,_T(';'), aryServerPath);
|
|
for( int i= 0;i < aryServerPath.GetSize();i++ )
|
{
|
strSerPathItem = aryServerPath[i];
|
pCatalogInfo = (CMBPsnCatalogInfo*)pTmpCatalogMgr->GetCatalogByName( strSerPathItem );
|
if( pCatalogInfo == NULL )
|
break;
|
|
strMatchPath += strSerPathItem;
|
strMatchPath += _T('/');
|
|
pTmpCatalogMgr = pCatalogInfo->GetCatalogMgr();
|
pRetCatalogInfo = pCatalogInfo;
|
}
|
strMatchPath = strMatchPath.Mid(0,strMatchPath.GetLength()-1);
|
|
return pRetCatalogInfo;
|
}
|
|
// ͨ¹ý·þÎñ·¾¶£¬µÃµ½Ä¿Â¼
|
CMBPsnCatalogInfo *CMBPsnCabinetInfo::GetCatalogBySvrPath( CString strSvrPath )
|
{
|
CString strTmpSvrPath,strSvrPathItem;
|
CStringArray arSvrPath;
|
CMBPsnCatalogInfo *pCatalogInfo = NULL;
|
CMBPsnCatalogMgr *pTmpCatalogMgr = NULL;
|
|
pTmpCatalogMgr = m_pCatalogMgr;
|
|
if( strSvrPath.IsEmpty() )
|
return NULL;
|
|
strTmpSvrPath = strSvrPath;
|
strTmpSvrPath.Replace(_T('/'),_T(';'));
|
|
CMBStrOper::SplitString(strTmpSvrPath,_T(';'), arSvrPath);
|
|
int nDeep = arSvrPath.GetSize();
|
|
for( int i= 0;i < nDeep;i++ )
|
{
|
strSvrPathItem = arSvrPath[i];
|
|
if( pTmpCatalogMgr == NULL )
|
return NULL;
|
pCatalogInfo = (CMBPsnCatalogInfo*)pTmpCatalogMgr->GetCatalogByName( strSvrPathItem );
|
if( pCatalogInfo == NULL )
|
return NULL;
|
|
pTmpCatalogMgr = pCatalogInfo->GetCatalogMgr();
|
}
|
return pCatalogInfo;
|
}
|
|
// µÃµ½ÎĵµÐÅÏ¢
|
CMBPsnDocInfo *CMBPsnCabinetInfo::GetDocInfo( CString strSvrPath,CString strDocID )
|
{
|
if( strDocID.IsEmpty() )
|
return NULL;
|
|
CMBPsnCatalogInfo *pCatalog = GetCatalogBySvrPath( strSvrPath );
|
if( NULL == pCatalog )
|
return NULL;
|
|
return pCatalog->GetDocMgr()->GetDocInfo(strDocID);
|
}
|