#include "StdAfx.h"
|
#include "MBTagDocMgr.h"
|
|
|
CMBTagDocMgr::CMBTagDocMgr(void)
|
{
|
m_pTagGroupMgr = new CMBTagGroupMgr();
|
}
|
|
|
CMBTagDocMgr::~CMBTagDocMgr(void)
|
{
|
if( m_pTagGroupMgr )
|
{
|
delete m_pTagGroupMgr;
|
m_pTagGroupMgr = NULL;
|
}
|
}
|
|
CMBTagGroupMgr *CMBTagDocMgr::GetTagGroupMgr()
|
{
|
return m_pTagGroupMgr;
|
}
|
|
bool CMBTagDocMgr::AddTagDocInfo(CMBTagDocInfo *pTagDocInfo)
|
{
|
return AddTagDocObj(pTagDocInfo);
|
}
|
|
CMBTagDocInfo* CMBTagDocMgr::GetTagDocInfo( CString strID )
|
{
|
return (CMBTagDocInfo*)GetTagDocObj(strID);
|
}
|
|
bool CMBTagDocMgr::GetTagGroupVector( CMBBaseTagDocObjVector &vecotrTagDocObj,CString strGroup )
|
{
|
if( strGroup == _T("δ·Ö×é±êÇ©") )
|
{
|
strGroup = _T("");
|
}
|
vecotrTagDocObj.clear();
|
|
CMBBaseTagDocObjVector::iterator it;
|
CMBBaseTagDocObj *pTagDocObj = NULL;
|
|
for( it = m_vecotrTagDocObj.begin();it != m_vecotrTagDocObj.end();it++ )
|
{
|
pTagDocObj = *it;
|
if( pTagDocObj->m_strGroup == strGroup )
|
{
|
vecotrTagDocObj.push_back(pTagDocObj);
|
}
|
}
|
return true;
|
}
|
|
CString CMBTagDocMgr::GetTags( CString strGroup )
|
{
|
CString strTags;
|
CMBBaseTagDocObjVector::iterator it;
|
CMBBaseTagDocObj *pTagDocObj = NULL;
|
if( strGroup == _T("δ·Ö×é±êÇ©") )
|
{
|
strGroup = _T("");
|
}
|
for( it = m_vecotrTagDocObj.begin();it != m_vecotrTagDocObj.end();it++ )
|
{
|
pTagDocObj = *it;
|
if( pTagDocObj->m_strGroup == strGroup )
|
{
|
strTags += pTagDocObj->m_strName;
|
strTags += _T(";");
|
}
|
}// end for( it = m_mapTagDocObj.begin();it != m_mapTagDocObj.end();it++ )
|
return strTags;
|
}
|
|
// ½âÎö·þÎñ¶ËÊý¾Ý
|
bool CMBTagDocMgr::ParseXml( CString strXML,CString &strErrInfo )
|
{
|
if( strXML.IsEmpty() )
|
{
|
strErrInfo = _T("CMBTagDocMgr::ParseXml,²ÎÊýΪ¿Õ£¡");
|
return false;
|
}
|
|
pugi::xml_document xmlDoc;
|
|
if (!xmlDoc.load(strXML))
|
{
|
return false;
|
}
|
pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("Tag"));
|
for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Tag")))
|
{
|
CMBTagDocInfo *pTagDocInfo = new CMBTagDocInfo();
|
|
pTagDocInfo->m_strName = node.attribute(_T("Name")).value(); // ±êÇ©Ãû³Æ
|
pTagDocInfo->m_strGroup = node.attribute(_T("Group")).value(); // ±êÇ©·Ö×éÃû³Æ
|
pTagDocInfo->m_nFileCount = node.attribute(_T("FileCount")).as_int(); // ÎļþÊý
|
|
if( !AddTagDocInfo(pTagDocInfo) )
|
{
|
delete pTagDocInfo;
|
pTagDocInfo = NULL;
|
continue;
|
}
|
CMBTagGroup *pTagGroup = new CMBTagGroup();
|
if( pTagDocInfo->m_strGroup.IsEmpty() )
|
{
|
pTagGroup->m_strGroupName = _T("δ·Ö×é±êÇ©");
|
}else{
|
pTagGroup->m_strGroupName = pTagDocInfo->m_strGroup;
|
}
|
if(!m_pTagGroupMgr->AddGroup(pTagGroup))
|
{
|
delete pTagGroup;
|
pTagGroup = NULL;
|
}
|
}
|
|
return true;
|
}
|