RptParamFileMgr.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. #pragma once
  2. #define _CRTDBG_MAP_ALLOC
  3. #include <stdlib.h>
  4. #include <crtdbg.h>
  5. #include "stdafx.h"
  6. #include "RptParamFileMgr.h"
  7. #include "OTSFileSys.h"
  8. #include "MultiLang.h"
  9. namespace OTSMODEL
  10. {
  11. CRptParamFileMgr::CRptParamFileMgr()
  12. {
  13. Init();
  14. }
  15. CRptParamFileMgr::~CRptParamFileMgr()
  16. {
  17. }
  18. BOOL CRptParamFileMgr::Save(OTS_SOFT_PACKAGE_ID a_nPackId)
  19. {
  20. // get software package system data path
  21. CString strSoftwareSysDataPath = COTSFileSys::GetOTSPackSysDataPathName(a_nPackId);
  22. if (strSoftwareSysDataPath.IsEmpty())
  23. {
  24. // shouldn't happen, software package system data path string is empty
  25. LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to software package system data path string."));
  26. return FALSE;
  27. }
  28. // software package system data path exists?
  29. if (!COTSFileSys::Exists(strSoftwareSysDataPath))
  30. {
  31. // software package system data path doesn't exists, create it
  32. if (!COTSFileSys::CreateFolder(strSoftwareSysDataPath))
  33. {
  34. // failed to create software package system data path, return FALSE
  35. LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to create software package system data path."));
  36. return FALSE;
  37. }
  38. }
  39. // get software pack measure preference file pathname
  40. CString strProgMgrParamFilePathName = COTSFileSys::GetOTSPackReportPrefFilePathName(a_nPackId);
  41. if (strProgMgrParamFilePathName.IsEmpty())
  42. {
  43. // shouldn't happen, software pack measure preference file pathname is empty, return nullptr
  44. LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to find program manager param file pathname."));
  45. return FALSE;
  46. }
  47. ASSERT(m_poRptParamFile);
  48. if (!m_poRptParamFile)
  49. {
  50. LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to set report param file."));
  51. return FALSE;
  52. }
  53. strProgMgrParamFilePathName = strProgMgrParamFilePathName ;
  54. tinyxml2::XMLDocument doc;
  55. if (COTSFileSys::Exists(strProgMgrParamFilePathName))
  56. {
  57. doc.LoadFile(strProgMgrParamFilePathName);//载入xml文件
  58. }
  59. doc.Clear();
  60. tinyxml2::XMLDeclaration* declaration = doc.NewDeclaration();//添加xml文件头申明
  61. doc.InsertFirstChild(declaration);
  62. tinyxml2::XMLElement *rootNode;
  63. rootNode = doc.NewElement(RootClassName);
  64. doc.InsertEndChild(rootNode);
  65. m_poRptParamFile->Serialize(true, &doc, rootNode);
  66. int result = doc.SaveFile(strProgMgrParamFilePathName);
  67. // file pathname
  68. m_strPathName = strProgMgrParamFilePathName;
  69. // ok, return TRUE
  70. return TRUE;
  71. }
  72. BOOL CRptParamFileMgr::Load(OTS_SOFT_PACKAGE_ID a_nPackId)
  73. {
  74. /*int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
  75. tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
  76. _CrtSetDbgFlag(tmpFlag);
  77. _CrtSetBreakAlloc(6357);*/
  78. // get software pack measure preference file pathname GetOTSPackReportPrefFilePathName
  79. CString strProgMgrParamFilePathName = COTSFileSys::GetOTSPackReportPrefFilePathName(a_nPackId);
  80. if (strProgMgrParamFilePathName.IsEmpty())
  81. {
  82. // shouldn't happen, software pack measure preference file pathname is empty, return false
  83. LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to find report param file pathname."));
  84. return FALSE;
  85. }
  86. // program manager param file exists?
  87. if (COTSFileSys::Exists(strProgMgrParamFilePathName))
  88. {
  89. ASSERT(m_poRptParamFile);
  90. if (!m_poRptParamFile)
  91. {
  92. LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to set report param file."));
  93. return FALSE;
  94. }
  95. tinyxml2::XMLDocument doc;
  96. doc.LoadFile(strProgMgrParamFilePathName);//载入xml文件
  97. tinyxml2::XMLElement *rootNode;
  98. rootNode = doc.FirstChildElement(RootClassName);
  99. m_poRptParamFile->Serialize(false, &doc, rootNode);
  100. // file pathname
  101. m_strPathName = strProgMgrParamFilePathName;
  102. }
  103. else
  104. {
  105. // file not exists, need to create a new one
  106. // get app system file path
  107. CString strCompanySysDataPath = COTSFileSys::GetOTSPackSysDataPathName(a_nPackId);
  108. if (strCompanySysDataPath.IsEmpty())
  109. {
  110. // shouldn't happen, program manager param file pathname is empty, return false
  111. LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to company system data pathname."));
  112. return FALSE;
  113. }
  114. // company system data path exists?
  115. if (!COTSFileSys::Exists(strCompanySysDataPath))
  116. {
  117. // company system data path doesn't exists, create it
  118. if (!COTSFileSys::CreateFolder(strCompanySysDataPath))
  119. {
  120. // failed to create company system data path, can't go any further, return false
  121. LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to create system path."));
  122. return FALSE;
  123. }
  124. }
  125. //default value
  126. if (!Create(a_nPackId))
  127. {
  128. // failed to create company system data path, can't go any further, return false
  129. LogErrorTrace(__FILE__, __LINE__, _T("Load: failed to create system file."));
  130. return FALSE;
  131. }
  132. // save the program (preference) file
  133. if (!Save(a_nPackId))
  134. {
  135. // failed to create
  136. LogErrorTrace(__FILE__, __LINE__, _T("Load: save program manager file failed."));
  137. return FALSE;
  138. }
  139. }
  140. MultiLang::GetInstance().LoadStringFromXml();
  141. // ok, return true
  142. return TRUE;
  143. }
  144. void CRptParamFileMgr::SetRptParamFile(CRptParamFilePtr a_poRptParamFile)
  145. {
  146. ASSERT(a_poRptParamFile);
  147. if (!a_poRptParamFile)
  148. {
  149. LogErrorTrace(__FILE__, __LINE__, _T("SetRptParamFile: failed to set report param file."));
  150. return;
  151. }
  152. m_poRptParamFile = CRptParamFilePtr(new CRptParamFile(a_poRptParamFile.get()));
  153. }
  154. BOOL CRptParamFileMgr::Create(OTS_SOFT_PACKAGE_ID a_nPackId)
  155. {
  156. // get software pack program data path
  157. CString strOTSProDataPathName = COTSFileSys::GetOTSPackProgDataPathName(a_nPackId);
  158. if (strOTSProDataPathName.IsEmpty())
  159. {
  160. // shouldn't happen, software pack program data path is empty
  161. LogErrorTrace(__FILE__, __LINE__, _T("Create: failed to get software pack program data path."));
  162. return FALSE;
  163. }
  164. // particle size level file folder
  165. m_poRptParamFile->SetSizeFileFolder(strOTSProDataPathName);
  166. // triangulation template file folder
  167. m_poRptParamFile->SetTrigTempFileFolder(strOTSProDataPathName);
  168. // report template file folder
  169. m_poRptParamFile->SetRptTempFileFolder(strOTSProDataPathName);
  170. // particle STD analysis file folder
  171. m_poRptParamFile->SetSTDFileFolder(strOTSProDataPathName);
  172. return TRUE;
  173. }
  174. void CRptParamFileMgr::Init()
  175. {
  176. m_poRptParamFile = CRptParamFilePtr(new CRptParamFile());
  177. }
  178. }