123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- #pragma once
- #define _CRTDBG_MAP_ALLOC
- #include <stdlib.h>
- #include <crtdbg.h>
- #include "stdafx.h"
- #include "RptParamFileMgr.h"
- #include "OTSFileSys.h"
- //#include "MultiLang.h"
- namespace OTSMODEL
- {
- using namespace OTSTools;
- CRptParamFileMgr::CRptParamFileMgr()
- {
- Init();
- }
- CRptParamFileMgr::~CRptParamFileMgr()
- {
- }
- BOOL CRptParamFileMgr::Save(OTS_SOFT_PACKAGE_ID a_nPackId)
- {
- // get software package system data path
- CString strSoftwareSysDataPath = COTSFileSys::GetOTSPackSysDataPathName(a_nPackId);
- if (strSoftwareSysDataPath.IsEmpty())
- {
- // shouldn't happen, software package system data path string is empty
- LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to software package system data path string."));
- return FALSE;
- }
- // software package system data path exists?
- if (!COTSFileSys::Exists(strSoftwareSysDataPath))
- {
- // software package system data path doesn't exists, create it
- if (!COTSFileSys::CreateFolder(strSoftwareSysDataPath))
- {
- // failed to create software package system data path, return FALSE
- LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to create software package system data path."));
- return FALSE;
- }
- }
- // get software pack measure preference file pathname
- CString strProgMgrParamFilePathName = COTSFileSys::GetOTSPackReportPrefFilePathName(a_nPackId);
- if (strProgMgrParamFilePathName.IsEmpty())
- {
- // shouldn't happen, software pack measure preference file pathname is empty, return nullptr
- LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to find program manager param file pathname."));
- return FALSE;
- }
- ASSERT(m_poRptParamFile);
- if (!m_poRptParamFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to set report param file."));
- return FALSE;
- }
- strProgMgrParamFilePathName = strProgMgrParamFilePathName ;
- tinyxml2::XMLDocument doc;
- if (COTSFileSys::Exists(strProgMgrParamFilePathName))
- {
- doc.LoadFile(strProgMgrParamFilePathName);//载入xml文件
- }
- doc.Clear();
- tinyxml2::XMLDeclaration* declaration = doc.NewDeclaration();//添加xml文件头申明
- doc.InsertFirstChild(declaration);
- tinyxml2::XMLElement *rootNode;
- rootNode = doc.NewElement(RootClassName);
- doc.InsertEndChild(rootNode);
- m_poRptParamFile->Serialize(true, &doc, rootNode);
- int result = doc.SaveFile(strProgMgrParamFilePathName);
- // file pathname
- m_strPathName = strProgMgrParamFilePathName;
- // ok, return TRUE
- return TRUE;
-
- }
- BOOL CRptParamFileMgr::Load(OTS_SOFT_PACKAGE_ID a_nPackId)
- {
- /*int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
- tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
- _CrtSetDbgFlag(tmpFlag);
- _CrtSetBreakAlloc(6357);*/
- // get software pack measure preference file pathname GetOTSPackReportPrefFilePathName
- CString strProgMgrParamFilePathName = COTSFileSys::GetOTSPackReportPrefFilePathName(a_nPackId);
- if (strProgMgrParamFilePathName.IsEmpty())
- {
- // shouldn't happen, software pack measure preference file pathname is empty, return false
- LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to find report param file pathname."));
- return FALSE;
- }
- // program manager param file exists?
- if (COTSFileSys::Exists(strProgMgrParamFilePathName))
- {
- ASSERT(m_poRptParamFile);
- if (!m_poRptParamFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to set report param file."));
- return FALSE;
- }
- tinyxml2::XMLDocument doc;
- doc.LoadFile(strProgMgrParamFilePathName);//载入xml文件
- tinyxml2::XMLElement *rootNode;
- rootNode = doc.FirstChildElement(RootClassName);
- m_poRptParamFile->Serialize(false, &doc, rootNode);
- // file pathname
- m_strPathName = strProgMgrParamFilePathName;
- }
- else
- {
- // file not exists, need to create a new one
- // get app system file path
- CString strCompanySysDataPath = COTSFileSys::GetOTSPackSysDataPathName(a_nPackId);
- if (strCompanySysDataPath.IsEmpty())
- {
- // shouldn't happen, program manager param file pathname is empty, return false
- LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to company system data pathname."));
- return FALSE;
- }
- // company system data path exists?
- if (!COTSFileSys::Exists(strCompanySysDataPath))
- {
- // company system data path doesn't exists, create it
- if (!COTSFileSys::CreateFolder(strCompanySysDataPath))
- {
- // failed to create company system data path, can't go any further, return false
- LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to create system path."));
- return FALSE;
- }
- }
- //default value
- if (!Create(a_nPackId))
- {
- // failed to create company system data path, can't go any further, return false
- LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to create system file."));
- return FALSE;
- }
- // save the program (preference) file
- if (!Save(a_nPackId))
- {
- // failed to create
- LogErrorTrace(__FILE__, __LINE__, _T("Load: save program manager file failed."));
- return FALSE;
- }
-
- }
- // ok, return true
- return TRUE;
- }
- void CRptParamFileMgr::SetRptParamFile(CRptParamFilePtr a_poRptParamFile)
- {
- ASSERT(a_poRptParamFile);
- if (!a_poRptParamFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("SetRptParamFile: failed to set report param file."));
- return;
- }
- m_poRptParamFile = CRptParamFilePtr(new CRptParamFile(a_poRptParamFile.get()));
- }
- BOOL CRptParamFileMgr::Create(OTS_SOFT_PACKAGE_ID a_nPackId)
- {
- // get software pack program data path
- CString strOTSProDataPathName = COTSFileSys::GetOTSPackProgDataPathName(a_nPackId);
- if (strOTSProDataPathName.IsEmpty())
- {
- // shouldn't happen, software pack program data path is empty
- LogErrorTrace(__FILE__, __LINE__, _T("Create: failed to get software pack program data path."));
- return FALSE;
- }
- // particle size level file folder
- m_poRptParamFile->SetSizeFileFolder(strOTSProDataPathName);
- // triangulation template file folder
- m_poRptParamFile->SetTrigTempFileFolder(strOTSProDataPathName);
- // report template file folder
- m_poRptParamFile->SetRptTempFileFolder(strOTSProDataPathName);
- // particle STD analysis file folder
- m_poRptParamFile->SetSTDFileFolder(strOTSProDataPathName);
- return TRUE;
- }
- void CRptParamFileMgr::Init()
- {
- m_poRptParamFile = CRptParamFilePtr(new CRptParamFile());
- }
- }
|