| 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());	}}
 |