#include "StdAfx.h"
#include "MBTNXXXXXXMgr.h"
CMBTNXXXXXXMgr::CMBTNXXXXXXMgr(void)
{
RemoveAll();
}
CMBTNXXXXXXMgr::~CMBTNXXXXXXMgr(void)
{
RemoveAll();
}
void CMBTNXXXXXXMgr::GetVector( CMBTNXXXXXXVector &vector )
{
vector.clear();
vector = m_vector;
}
bool CMBTNXXXXXXMgr::Add( CMBTNXXXXXX *pTNXXXXXX )
{
if( NULL == pTNXXXXXX )
return false;
m_vector.push_back(pTNXXXXXX);
return true;
}
bool CMBTNXXXXXXMgr::RemoveAll()
{
CMBTNXXXXXXVector::iterator it;
CMBTNXXXXXX *pTNXXXXXX = NULL;
for( it = m_vector.begin();it != m_vector.end();it++ )
{
pTNXXXXXX = *it;
delete pTNXXXXXX;
pTNXXXXXX = NULL;
}
m_vector.clear();
return true;
}
CString CMBTNXXXXXXMgr::GenXml()
{
CMBTNXXXXXXVector::iterator it;
CMBTNXXXXXX *pTNXXXXXX = NULL;
CString strXml,strTmpXml;
for( it = m_vector.begin();it != m_vector.end();it++ )
{
pTNXXXXXX = *it;
strTmpXml += pTNXXXXXX->GenXml();
}
strXml.Format(_T("
%s"),strTmpXml);
return strXml;
}
bool CMBTNXXXXXXMgr::ParseXml( CString strXml,CString &strErrInfo )
{
RemoveAll();
pugi::xml_document xmlDoc;
CString strFileSize;
if (!xmlDoc.load(strXml))
{
return false;
}
pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("MsLst")).child(_T("Ms"));
for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Ms")))
{
CMBTNXXXXXX *pTNXXXXXX = new CMBTNXXXXXX();
pTNXXXXXX->m_strMID = node.attribute(_T("MID")).value();
pTNXXXXXX->m_strSID = node.attribute(_T("SID")).value();
pTNXXXXXX->m_strVID = node.attribute(_T("VID")).value();
pTNXXXXXX->m_strOrder = node.attribute(_T("Order")).value();
pTNXXXXXX->m_strEffect = node.attribute(_T("Effect")).value();
pTNXXXXXX->m_strInvalidate = node.attribute(_T("Invalidate")).value();
pugi::xml_node attrNode = node.child(_T("Attrs")).child(_T("Attr"));
for(pugi::xml_node tmpNode = attrNode; tmpNode; tmpNode = tmpNode.next_sibling(_T("Attr")))
{
CMBTNXXXXXXFiled *pFiled = new CMBTNXXXXXXFiled();
pFiled->m_strFiled = tmpNode.attribute(_T("Name")).value();
pFiled->m_strValue = tmpNode.child_value();
if( !pTNXXXXXX->GetFieldMgr()->Add(pFiled) )
{
delete pFiled;
pFiled = NULL;
}
}
if( !Add( pTNXXXXXX ) )
{
delete pTNXXXXXX;
pTNXXXXXX = NULL;
}
}// end for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Ms")))
return true;
}
int CMBTNXXXXXXMgr::GetCount()
{
return m_vector.size();
}
CString CMBTNXXXXXXMgr::GetFirstKeyValue(CString strKey)
{
CMBTNXXXXXXVector::iterator it;
CMBTNXXXXXX *pTNXXXXXX = NULL;
for( it = m_vector.begin();it != m_vector.end();it++ )
{
pTNXXXXXX = *it;
CMBTNXXXXXXFiled *pFiled = pTNXXXXXX->GetFieldMgr()->Get( strKey);
if( NULL != pFiled )
{
return pFiled->m_strValue;
}
}
return _T("");
}
CString CMBTNXXXXXXMgr::GetFirstMID()
{
CMBTNXXXXXXVector::iterator it;
CMBTNXXXXXX *pTNXXXXXX = NULL;
for( it = m_vector.begin();it != m_vector.end();it++ )
{
pTNXXXXXX = *it;
return pTNXXXXXX->m_strMID;
}
return _T("");
}
CMBTNXXXXXX *CMBTNXXXXXXMgr::GetFirstTNXXXXXX()
{
CMBTNXXXXXXVector::iterator it;
CMBTNXXXXXX *pTNXXXXXX = NULL;
for( it = m_vector.begin();it != m_vector.end();it++ )
{
pTNXXXXXX = *it;
return pTNXXXXXX;
}
return NULL;
}