#include "stdafx.h" #include "N8Process.h" #include "Markup.h" namespace N8Process { ////////////////////////////////////////////////////////////////////////// // CProductList类实现; BOOL CProductList::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { while( xml.FindElem(_T("product")) ) { CItem tagitem; xml.FindChildElem(_T("ID")); tagitem.m_strProductID = xml.GetChildData(); xml.FindChildElem(_T("name")); tagitem.m_strProductName = xml.GetChildData(); xml.FindChildElem(_T("width")); tagitem.m_strProductWidth = xml.GetChildData(); xml.FindChildElem(_T("height")); tagitem.m_strProductHeight = xml.GetChildData(); m_AryItems.Add(tagitem); } xml.OutOfElem(); } return TRUE; } BOOL CProductList::IsItemExists(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName) { if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0')) return FALSE; if ( m_AryItems.GetSize() == 0 ) return FALSE; BOOL bExists = FALSE; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strProductID.CompareNoCase(lpProductID) == 0 || tagItem.m_strProductName.CompareNoCase(lpProductName) == 0) { bExists = TRUE; break; } } return bExists; } BOOL CProductList::InsertItem(IN LPCTSTR lpProductID, IN LPCTSTR lpProductName, IN LPCTSTR lpProductWidth, IN LPCTSTR lpProductHeiht) { if ( !IsPathExists() ) return FALSE; if ( lpProductID == NULL || lpProductID[0] == _T('\0') || lpProductName == NULL || lpProductName[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( IsItemExists(lpProductID, lpProductName) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { xml.FindElem(_T("product")) ; // 1.添加元素; xml.AddElem(_T("product")); xml.AddChildElem(_T("ID"), lpProductID); xml.AddChildElem(_T("name"), lpProductName); if ( lpProductWidth ) xml.AddChildElem(_T("width"), lpProductWidth); else xml.AddChildElem(_T("width"), _T("0")); if ( lpProductHeiht ) xml.AddChildElem(_T("height"), lpProductHeiht); else xml.AddChildElem(_T("height"), _T("0")); xml.OutOfElem(); if ( !xml.Save(GetPath())) { return FALSE; } CItem tagItem; tagItem.m_strProductID = lpProductID; tagItem.m_strProductName = lpProductName; if ( lpProductWidth ) tagItem.m_strProductWidth = lpProductWidth; else tagItem.m_strProductWidth = _T("0"); if ( lpProductHeiht ) tagItem.m_strProductHeight = lpProductHeiht; else tagItem.m_strProductHeight = _T("0"); m_AryItems.Add(tagItem); } return TRUE; } BOOL CProductList::RemoveItemByID(IN LPCTSTR lpProductID) { return TRUE; } BOOL CProductList::RemoveItemByName(IN LPCTSTR lpProductName) { return TRUE; } ////////////////////////////////////////////////////////////////////////// // CStaff类实现; BOOL CStaff::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { while( xml.FindElem(_T("Staff")) ) { CItem tagitem; xml.FindChildElem(_T("id")); tagitem.m_strStaffID = xml.GetChildData(); xml.FindChildElem(_T("name")); tagitem.m_strStaffName = xml.GetChildData(); m_AryItems.Add(tagitem); } xml.OutOfElem(); } return TRUE; } BOOL CStaff::IsItemExists(IN LPCTSTR lpStaffID) { if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') ) return FALSE; if ( m_AryItems.GetSize() == 0 ) return FALSE; BOOL bExists = FALSE; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strStaffID.CompareNoCase(lpStaffID) == 0 ) { bExists = TRUE; break; } } return bExists; } BOOL CStaff::InsertItem(IN LPCTSTR lpStaffID, IN LPCTSTR lpStaffName) { if ( !IsPathExists() ) return FALSE; if ( lpStaffID == NULL || lpStaffID[0] == _T('\0') || lpStaffName == NULL || lpStaffName[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( IsItemExists(lpStaffID) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { xml.FindElem(_T("product")) ; xml.AddElem(_T("Staff")); xml.AddChildElem(_T("id"), lpStaffID); xml.AddChildElem(_T("name"), lpStaffName); xml.OutOfElem(); if ( !xml.Save(GetPath())) { return FALSE; } CItem tagItem; tagItem.m_strStaffID = lpStaffID; tagItem.m_strStaffName = lpStaffName; m_AryItems.Add(tagItem); } return TRUE; } BOOL CStaff::RemoveItemByID(IN LPCTSTR lpProductID) { return TRUE; } ////////////////////////////////////////////////////////////////////////// // CResultProduct类实现; BOOL CResultProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { while( xml.FindElem(_T("product")) ) { CItem tagitem; xml.FindChildElem(_T("id")); tagitem.m_strProductID = xml.GetChildData(); xml.FindChildElem(_T("comment")); tagitem.m_strProductComment = xml.GetChildData(); xml.FindChildElem(_T("name")); tagitem.m_strProductName = xml.GetChildData(); xml.FindChildElem(_T("width")); tagitem.m_strProductWidth = xml.GetChildData(); xml.FindChildElem(_T("height")); tagitem.m_strProductHeight = xml.GetChildData(); xml.IntoElem(); xml.FindElem(_T("items")); xml.IntoElem(); while ( xml.FindElem(_T("item")) ) { SubItem tagSubItem; xml.FindChildElem(_T("id")); tagSubItem.m_strID = xml.GetChildData(); xml.FindChildElem(_T("comment")); tagSubItem.m_strComment = xml.GetChildData(); xml.FindChildElem(_T("replaces")); tagSubItem.m_strReplease = xml.GetChildData(); tagitem.m_ArySubItems.push_back(tagSubItem); } xml.OutOfElem();//退出item; xml.OutOfElem();//退出items; m_AryItems.Add(tagitem); } xml.OutOfElem();//退出product; } return TRUE; } BOOL CResultProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName) { if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0')) return FALSE; BOOL bExists = FALSE; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 || tagItem.m_strProductName.CompareNoCase(lpName) == 0 ) { bExists = TRUE; break; } } return bExists; } BOOL CResultProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight) { if ( !IsPathExists() ) return FALSE; if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( IsItemExists(lpID, lpName) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { xml.FindElem(_T("product")) ; xml.AddElem(_T("product")); xml.AddChildElem(_T("id"), lpID); xml.AddChildElem(_T("comment"), lpComment); xml.AddChildElem(_T("name"), lpName); if (lpWidth) xml.AddChildElem(_T("width"), lpWidth); else xml.AddChildElem(_T("width"), _T("0")); if ( lpHeight) xml.AddChildElem(_T("height"), lpHeight); else xml.AddChildElem(_T("height"), _T("0")); xml.AddChildElem(_T("items")); xml.OutOfElem();//退出根元素; if ( !xml.Save(GetPath())) { return FALSE; } CItem tagItem; tagItem.m_strProductID = lpID; tagItem.m_strProductName = lpName; if ( lpComment ) tagItem.m_strProductComment = lpComment; else tagItem.m_strProductComment = _T(""); if ( lpWidth ) tagItem.m_strProductWidth = lpWidth; else tagItem.m_strProductWidth = _T("0"); if ( lpHeight ) tagItem.m_strProductHeight = lpHeight; else tagItem.m_strProductHeight = _T("0"); m_AryItems.Add(tagItem); } return TRUE; } BOOL CResultProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID, IN LPCTSTR lpSubComment, IN LPCTSTR lpSubReplease) { if ( !IsPathExists() ) return FALSE; if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( !IsItemExists(lpID, lpName) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; while( xml.FindElem(_T("product")) ) { CString strID; CString strName; if ( xml.FindChildElem(_T("id")) ) { strID = xml.GetChildData(); } if ( xml.FindChildElem(_T("name")) ) { strName = xml.GetChildData(); } if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 ) { xml.IntoElem(); // 进入product; xml.FindElem(_T("items")); xml.IntoElem();// 进入items; CString strSubID; CString strSubComment; CString strSubReplease; BOOL bSubItemExists = FALSE; while ( xml.FindElem(_T("item")) ) { if ( xml.FindChildElem(_T("id")) ) { strSubID = xml.GetChildData(); if ( strSubID.CompareNoCase(lpSubID) == 0 ) {// 存在子结点; bSubItemExists = TRUE; break; } } } if ( !bSubItemExists ) { xml.AddElem(_T("item")); xml.AddChildElem(_T("id"), lpSubID); if ( lpSubComment ) xml.AddChildElem(_T("comment"), lpSubComment); else xml.AddChildElem(_T("comment"), _T("")); if ( lpSubReplease ) xml.AddChildElem(_T("replaces"), lpSubReplease); else xml.AddChildElem(_T("replaces"), _T("")); int nIndex = -1; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 ) { nIndex = i; break; } } SubItem tagSubItem; tagSubItem.m_strID = lpSubID; if ( lpSubComment ) tagSubItem.m_strComment = lpSubComment; else tagSubItem.m_strComment = _T(""); if ( lpSubReplease ) tagSubItem.m_strReplease = lpSubReplease; else tagSubItem.m_strReplease = _T(""); if ( nIndex != -1 ) m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(tagSubItem); else AfxMessageBox(_T("锟斤拷锟截筹拷锟斤拷")); } xml.OutOfElem();// 退出items; xml.OutOfElem();// 退出product; break; } } xml.OutOfElem();// 退出根结点; if ( !xml.Save(GetPath())) { return FALSE; } return TRUE; } ////////////////////////////////////////////////////////////////////////// // CResultVgProduct类实现; BOOL CResultVgProduct::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; while( xml.FindElem(_T("n8vg_product")) ) { CItem tagitem; xml.FindChildElem(_T("id")); tagitem.m_strProductID = xml.GetChildData(); xml.FindChildElem(_T("comment")); tagitem.m_strProductComment = xml.GetChildData(); xml.FindChildElem(_T("name")); tagitem.m_strProductName = xml.GetChildData(); xml.FindChildElem(_T("width")); tagitem.m_strProductWidth = xml.GetChildData(); xml.FindChildElem(_T("height")); tagitem.m_strProductHeight = xml.GetChildData(); xml.IntoElem(); xml.FindElem(_T("items")); xml.IntoElem(); while ( xml.FindElem(_T("item")) ) { CString strSubID; xml.FindChildElem(_T("id")); strSubID = xml.GetChildData(); tagitem.m_ArySubItems.push_back(strSubID); } xml.OutOfElem();//退出item; xml.OutOfElem();//退出items; m_AryItems.Add(tagitem); } xml.OutOfElem();//退出product; return TRUE; } BOOL CResultVgProduct::IsItemExists(IN LPCTSTR lpID, IN LPCTSTR lpName) { if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0')) return FALSE; BOOL bExists = FALSE; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 || tagItem.m_strProductName.CompareNoCase(lpName) == 0 ) { bExists = TRUE; break; } } return bExists; } BOOL CResultVgProduct::InsertItem(IN LPCTSTR lpID, IN LPCTSTR lpComment, IN LPCTSTR lpName, IN LPCTSTR lpWidth, IN LPCTSTR lpHeight) { if ( !IsPathExists() ) return FALSE; if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( IsItemExists(lpID, lpName) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; xml.FindElem(_T("n8vg_product")); xml.AddElem(_T("n8vg_product")); xml.AddChildElem(_T("id"), lpID); xml.AddChildElem(_T("comment"), lpComment); xml.AddChildElem(_T("name"), lpName); if (lpWidth) xml.AddChildElem(_T("width"), lpWidth); else xml.AddChildElem(_T("width"), _T("0")); if ( lpHeight) xml.AddChildElem(_T("height"), lpHeight); else xml.AddChildElem(_T("height"), _T("0")); xml.AddChildElem(_T("items")); xml.OutOfElem();//退出根结点; if ( !xml.Save(GetPath())) { return FALSE; } CItem tagItem; tagItem.m_strProductID = lpID; tagItem.m_strProductName = lpName; if ( lpComment ) tagItem.m_strProductComment = lpComment; else tagItem.m_strProductComment = _T(""); if ( lpWidth ) tagItem.m_strProductWidth = lpWidth; else tagItem.m_strProductWidth = _T("0"); if ( lpHeight ) tagItem.m_strProductHeight = lpHeight; else tagItem.m_strProductHeight = _T("0"); m_AryItems.Add(tagItem); return TRUE; } BOOL CResultVgProduct::InsertSubItem(IN LPCTSTR lpID, IN LPCTSTR lpName, IN LPCTSTR lpSubID) { if ( !IsPathExists() ) return FALSE; if ( lpID == NULL || lpID[0] == _T('\0') || lpName == NULL || lpName[0] == _T('\0') || lpSubID == NULL || lpSubID[0] == _T('\0')) return FALSE; if ( !m_bLoad ) { if( !LoadXML() ) return FALSE; } if ( !IsItemExists(lpID, lpName) ) { return FALSE; } CMarkup xml; if ( !xml.Load(GetPath()) ) return FALSE; if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; while( xml.FindElem(_T("n8vg_product")) ) { CString strID; CString strName; if ( xml.FindChildElem(_T("id")) ) { strID = xml.GetChildData(); } if ( xml.FindChildElem(_T("name")) ) { strName = xml.GetChildData(); } if ( strID.CompareNoCase(lpID) == 0 && strName.CompareNoCase(lpName) == 0 ) { xml.IntoElem(); // 进入product; xml.FindElem(_T("items")); xml.IntoElem();// 进入items; CString strSubID; CString strSubComment; CString strSubReplease; BOOL bSubItemExists = FALSE; while ( xml.FindElem(_T("item")) ) { if ( xml.FindChildElem(_T("id")) ) { strSubID = xml.GetChildData(); if ( strSubID.CompareNoCase(lpSubID) == 0 ) {// 存在子结点; bSubItemExists = TRUE; break; } } } if ( !bSubItemExists ) { xml.AddElem(_T("item")); xml.AddChildElem(_T("id"), lpSubID); int nIndex = -1; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strProductID.CompareNoCase(lpID) == 0 && tagItem.m_strProductName.CompareNoCase(lpName) == 0 ) { nIndex = i; break; } } if ( nIndex != -1 ) m_AryItems.ElementAt(nIndex).m_ArySubItems.push_back(lpSubID); else AfxMessageBox(_T("锟斤拷锟截筹拷锟斤拷")); } xml.OutOfElem();// 退出items; xml.OutOfElem();// 退出product; break; } } xml.OutOfElem();// 退出根结点; if ( !xml.Save(GetPath())) { return FALSE; } return TRUE; } ////////////////////////////////////////////////////////////////////////// // CReusltItem类实现; BOOL CResultItem::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ ) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( xml.IntoElem() ) { while ( xml.FindElem(_T("item")) ) { CItem tagItem; xml.FindChildElem(_T("bDel")); tagItem.m_strDel = xml.GetChildData(); xml.FindChildElem(_T("bPage")); tagItem.m_strPage = xml.GetChildData(); xml.FindChildElem(_T("path")); tagItem.m_strPath = xml.GetChildData(); xml.FindChildElem(_T("comment")); tagItem.m_strComment = xml.GetChildData(); xml.FindChildElem(_T("deleted")); tagItem.m_strDeleted = xml.GetChildData(); m_AryItems.Add(tagItem); } xml.OutOfElem(); } return TRUE; } BOOL CResultItem::IsItemExists(IN LPCTSTR lpPath) { if ( lpPath == NULL || lpPath[0] == _T('\0')) return FALSE; BOOL bExists = FALSE; for ( int i = 0; i < m_AryItems.GetSize(); i++ ) { CItem &tagItem = m_AryItems.ElementAt(i); if ( tagItem.m_strPath.CompareNoCase(lpPath) == 0 ) { bExists = TRUE; break; } } return bExists; } BOOL CResultItem::InsertItem(IN LPCTSTR lpPath, IN LPCTSTR lpComment, IN LPCTSTR lpDel, IN LPCTSTR lpPage) { return TRUE; } ////////////////////////////////////////////////////////////////////////// // CAlbum类实现; BOOL CAlbum::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ ) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryPages.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; if ( xml.FindElem(_T("N8Pages")) ) { xml.IntoElem();// 进入N8Pages; while( xml.FindElem(_T("N8Page")) ) { CPageItem tagItem; tagItem.m_strFileName = xml.GetAttrib(_T("FileName")); tagItem.m_strtplid = xml.GetAttrib(_T("tplid")); tagItem.m_strtplname = xml.GetAttrib(_T("tplname")); xml.IntoElem(); if ( xml.FindElem(_T("CellList")) ) { while ( xml.FindChildElem(_T("Cell")) ) { CString strImg = xml.GetChildAttrib(_T("FileName")); tagItem.m_vtImgs.push_back(strImg); } } xml.OutOfElem();//退出CellList; m_AryPages.Add(tagItem); } xml.OutOfElem();// 退出N8Pages; } xml.OutOfElem();//退出根结点; return TRUE; } ////////////////////////////////////////////////////////////////////////// // 选版完成结果; BOOL CResultXml::LoadXML(IN LPCTSTR lpXMLPath /* = NULL */ ) { SetXMLPath(lpXMLPath); CMarkup xml; if ( !xml.Load(GetPath()) ) { return FALSE; } m_bLoad = TRUE; m_AryItems.RemoveAll(); if ( !xml.FindElem() ) return FALSE; if ( !xml.IntoElem() ) return FALSE; if ( xml.FindElem(_T("staffid"))) { m_strStaffID = xml.GetData(); } if ( xml.FindElem(_T("designer"))) { m_strDesigner = xml.GetData(); } if ( xml.FindElem(_T("clientFolder"))) { m_strClientFolder = xml.GetData(); } if ( xml.FindElem(_T("date"))) { m_strDate = xml.GetData(); } while( xml.FindElem(_T("PageTpl")) ) { CItem tagItem; xml.FindChildElem(_T("tplid")); tagItem.m_strTplid = xml.GetChildData(); xml.FindChildElem(_T("tplname")); tagItem.m_strTplname = xml.GetChildData(); xml.FindChildElem(_T("prodid")); tagItem.m_strProdid = xml.GetChildData(); m_AryItems.Add(tagItem); } xml.OutOfElem();//退出根结点; return TRUE; } };