#include "StdAfx.h" #include "MBFireClsAttrsMgr.h" CMBFireClsAttrsMgr::CMBFireClsAttrsMgr(void) { RemoveAllClsAttrs(); } CMBFireClsAttrsMgr::~CMBFireClsAttrsMgr(void) { RemoveAllClsAttrs(); } void CMBFireClsAttrsMgr:: GetClsAttrsVector( CMBFireClsAttrsVector &vectorClsAttrs) { vectorClsAttrs.clear(); vectorClsAttrs = m_vectorClsAttrs; } bool CMBFireClsAttrsMgr::AddClsAttrs( CMBFireClsAttrs *pClsAttrs ) { if( NULL == pClsAttrs ) return false; m_vectorClsAttrs.push_back(pClsAttrs); return true; } // Çå³ýËùÓÐ bool CMBFireClsAttrsMgr::RemoveAllClsAttrs() { CMBFireClsAttrsVector::iterator it; CMBFireClsAttrs *pClsAttrs = NULL; for( it = m_vectorClsAttrs.begin();it != m_vectorClsAttrs.end();it++ ) { pClsAttrs = *it; delete pClsAttrs; pClsAttrs = NULL; } m_vectorClsAttrs.clear(); return true; } int CMBFireClsAttrsMgr::GetClsAttrsCount() { return m_vectorClsAttrs.size(); } bool CMBFireClsAttrsMgr::ParseXml(CString &strXml,CString &strErrInfo) { if( strXml.IsEmpty() ) return true; CString strType; pugi::xml_document xmlDoc; if (!xmlDoc.load(strXml)) { return false; } pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("Group")); for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Group"))) { pugi::xml_node nodeGroup = node.child(_T("Attr")); for(pugi::xml_node nodeTmp = nodeGroup; nodeTmp; nodeTmp = nodeTmp.next_sibling(_T("Attr"))) { CMBFireClsAttrs *pClsAttrs = new CMBFireClsAttrs(); pClsAttrs->m_strName = nodeTmp.attribute(_T("Name")).value(); // ×Ö¶ÎÃû³Æ strType = nodeTmp.attribute(_T("Type")).value(); // ×Ö¶ÎÀàÐÍ pClsAttrs->m_strType = strType.Trim(); pClsAttrs->m_nSize = nodeTmp.attribute(_T("Size")).as_int(); // ´óС pClsAttrs->m_strDispName = nodeTmp.child_value(_T("DispName")); if( !AddClsAttrs( pClsAttrs ) ) { delete pClsAttrs; pClsAttrs = NULL; return false; } } } return true; } // »ñÈ¡´´½¨±í¸ñsql,ÿһÕÅ±í ¶¼»áÓÐ S_ID CString CMBFireClsAttrsMgr::GetTableSql(CString strTableName) { CString strSql,strFieldSql; CMBFireClsAttrsVector::iterator it; CMBFireClsAttrs *pClsAttrs = NULL; for( it = m_vectorClsAttrs.begin();it != m_vectorClsAttrs.end();it++ ) { pClsAttrs = *it; strFieldSql += pClsAttrs->GetFieldSql(); strFieldSql += _T(","); } strFieldSql = strFieldSql.Left(strFieldSql.GetLength() -1 ); strSql.Format(_T("CREATE TABLE %s( %s,PRIMARY KEY(S_ID) )"),strTableName,strFieldSql); return strSql; }