#include "StdAfx.h"
|
#include "MBDocInfo.h"
|
|
IMPLEMENT_DYNAMIC(CMBDocInfo, CMBBaseDocObj)
|
|
CMBDocInfo::CMBDocInfo(void)
|
{
|
m_nFakeType = DOC_UNITORDEPART;
|
m_nEvalValue = 0; // -- ×ÜÆÀ·Ö
|
m_nEvalNum = 0; // -- ±»ÆÀ¼Û´ÎÊý
|
m_nViewNum = 0; //-- ä¯ÀÀ´ÎÊý
|
m_nDownloadNum = 0; // -- ÏÂÔØ´ÎÊý
|
m_pAttachDocMgr = NULL;
|
m_pLinkDocMgr = NULL;
|
}
|
|
|
CMBDocInfo::~CMBDocInfo(void)
|
{
|
MBSAFE_DELETE(m_pAttachDocMgr)
|
MBSAFE_DELETE(m_pLinkDocMgr)
|
}
|
|
CMBAttachDocMgr *CMBDocInfo::GetAttachDocMgr()
|
{
|
return m_pAttachDocMgr;
|
}
|
|
CMBLinkDocMgr *CMBDocInfo::GetLinkDocMgr()
|
{
|
return m_pLinkDocMgr;
|
}
|
|
|
|
CString CMBDocInfo::GetThumbUrlID( )
|
{
|
int nDotPos = m_strThumbURL.ReverseFind(_T('.'));
|
int nSlashPos = m_strThumbURL.ReverseFind(_T('\\'));
|
if( nDotPos == -1 || nSlashPos == -1 )
|
return _T("");
|
|
return m_strThumbURL.Mid(nSlashPos+1,nDotPos-nSlashPos-1);
|
}
|
|
bool CMBDocInfo::ParseXML(CString &strXML,CString &strErrInfo)
|
{
|
if( strXML.IsEmpty() )
|
{
|
m_nSecretLvl = 10000; // ˵Ã÷ µ÷ÓÃGetDocInfoûÓзµ»ØÈκÎÐÅÏ¢,ÉèÖÃΪ10000£¬Ãܼ¶ºÜ´óµÄÒâ˼
|
return true;
|
}
|
pugi::xml_document xmlDoc;
|
if (!xmlDoc.load(strXML))
|
{
|
return false;
|
}
|
|
/////////Çå³ý¸½¼ÓÎļþºÍ¹ØÁªÎļþ¹ÜÀíÆ÷/////////
|
MBSAFE_DELETE(m_pAttachDocMgr)
|
MBSAFE_DELETE(m_pLinkDocMgr)
|
//////////////////////////////////////////////
|
|
pugi::xml_node form = xmlDoc.child(_T("Doc"));
|
pugi::xml_node node = form;
|
m_strCode = node.attribute(_T("Code")).value();
|
m_strCanDownload = node.attribute(_T("CanDownload")).value();
|
m_strName = node.child_value(_T("Name"));
|
m_strVID = node.attribute(_T("VID")).value();
|
m_strVer = node.attribute(_T("Ver")).value();
|
m_nSecretLvl = node.attribute(_T("SecretLvl")).as_int();
|
m_strSecretName = node.attribute(_T("SecretName")).value();
|
m_strCreatorName = node.attribute(_T("CreatorName")).value();
|
m_strDTCreate = node.attribute(_T("DTCreate")).value();
|
m_strModifier = node.attribute(_T("Modifier")).value();
|
m_strModifierName = node.attribute(_T("ModifierName")).value();
|
m_strDTModify = node.attribute(_T("DTModify")).value();
|
m_strFileMD5 = node.attribute(_T("FileMD5")).value();
|
m_strFileServer = node.attribute(_T("FileServer")).value();
|
m_strFileID = node.attribute(_T("FileID")).value();
|
m_strPdfFileID = node.attribute(_T("PdfFileID")).value();
|
m_strSwfFileID = node.attribute(_T("SwfFileID")).value();
|
m_strThumbFileID = node.attribute(_T("ThumbFileID")).value();
|
m_strCanEdit = node.attribute(_T("CanEdit")).value();
|
m_strVersion = node.attribute(_T("Version")).value();
|
m_strPhase = node.attribute(_T("Phase")).value();
|
m_strCanEdit = node.attribute(_T("CanEdit")).value();
|
m_strCabinetID = node.attribute(_T("CabinetID")).value();
|
m_strCabinetName = node.attribute(_T("CabinetName")).value();
|
m_strCatalogID = node.attribute(_T("CatalogID")).value();
|
m_strFileName = node.child_value(_T("FileName"));
|
m_strCatalogPath = node.child_value(_T("CatalogPath"));
|
m_strTags = node.child_value(_T("Tags"));
|
|
m_strNote = node.child_value(_T("Note")); // ±¸×¢
|
m_strDesc = node.child_value(_T("Desc")); // ÃèÊö
|
|
m_nEvalValue = node.attribute(_T("EvalValue")).as_int(); // -- ×ÜÆÀ·Ö
|
m_nEvalNum = node.attribute(_T("EvalNum")).as_int(); // -- ±»ÆÀ¼Û´ÎÊý
|
m_nViewNum = node.attribute(_T("ViewNum")).as_int(); //-- ä¯ÀÀ´ÎÊý
|
m_nDownloadNum = node.attribute(_T("DownloadNum")).as_int(); // -- ÏÂÔØ´ÎÊý
|
|
m_strExpDate = node.attribute(_T("ExpDate")).value(); // ¨C ±£´æÆÚÏÞ£¬Îª¿Õ±íʾÓÀ¾Ã±£´æ
|
m_strAuthor = node.attribute(_T("Author")).value(); // ¨C Îĵµ×÷ÕßÐÕÃû
|
m_strAuthorDepart = node.attribute(_T("AuthorDepart")).value(); // ¨C Îĵµ×÷Õß²¿ÃÅ
|
// locker
|
m_strLocker = node.attribute(_T("Locker")).value();
|
m_strLockerName = node.attribute(_T("LockerName")).value();
|
m_strLockTime = node.attribute(_T("LockTime")).value();
|
|
m_strDocType = node.attribute(_T("DocType")).value();
|
/////////////////¸½¼ÓÎļþÐÅÏ¢/////////////////////////////////////
|
m_pAttachDocMgr = new CMBAttachDocMgr();
|
|
form = node.child(_T("Attach"));
|
for(pugi::xml_node tmpNode = form; tmpNode; tmpNode = tmpNode.next_sibling(_T("Attach")))
|
{
|
CMBAttachDocInfo *pAttachDocInfo = new CMBAttachDocInfo();
|
pAttachDocInfo->m_strID = tmpNode.attribute(_T("ID")).value(); // id
|
pAttachDocInfo->m_strFileServer = tmpNode.attribute(_T("FileServer")).value(); // Îļþ·þÎñÆ÷±êʶ
|
pAttachDocInfo->m_strFileID = tmpNode.attribute(_T("FileID")).value(); // ÎļþID
|
pAttachDocInfo->m_nFileSize = tmpNode.attribute(_T("FileSize")).as_int(); // Îļþ´óС
|
pAttachDocInfo->m_strCreateTime = tmpNode.attribute(_T("CreateTime")).value(); // ´´½¨Ê±¼ä
|
pAttachDocInfo->m_strFileName = tmpNode.child_value(_T("FileName")); // ÎļþÃû³Æ
|
if( !m_pAttachDocMgr->AddAttachDocInfo(pAttachDocInfo) )
|
{
|
MBSAFE_DELETE(pAttachDocInfo)
|
}
|
}
|
/////////////////¹ØÁªÎļþÐÅÏ¢/////////////////////////////////////
|
m_pLinkDocMgr = new CMBLinkDocMgr();
|
form = node.child(_T("LinkDoc"));
|
for(pugi::xml_node tmpNode = form; tmpNode; tmpNode = tmpNode.next_sibling(_T("LinkDoc")))
|
{
|
CMBLinkDocInfo *pLinkDocInfo = new CMBLinkDocInfo();
|
pLinkDocInfo->m_strID = tmpNode.attribute(_T("ID")).value(); // ÎĵµµÄid
|
pLinkDocInfo->m_nFileSize = tmpNode.attribute(_T("FileSize")).as_int(); // Îļþ´óС
|
pLinkDocInfo->m_strName = tmpNode.child_value(_T("FileName")); // ÎļþÃû³Æ
|
|
if( !m_pLinkDocMgr->AddLinkDocInfo(pLinkDocInfo) )
|
{
|
MBSAFE_DELETE(pLinkDocInfo)
|
}
|
}
|
|
return true;
|
}
|