123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707 |
- #pragma once
- #define _CRTDBG_MAP_ALLOC
- #include <stdlib.h>
- #include <crtdbg.h>
- #include "stdafx.h"
- #include "SmplMsrResultFileMgr.h"
- #include "PosXrayFileMgr.h"
- #include "BSEImgFileMgr.h"
- #include "IncAFileMgr.h"
- #include "OTSHelper.h"
- #include "OTSFileSys.h"
- namespace OTSMODEL
- {
- using namespace OTSDATA;
- // constructor
- CSmplMsrResultFileMgr::CSmplMsrResultFileMgr(CString workingFolder)
- {
- m_strWorkingFolder = workingFolder;
-
- m_listAnalysisXray.clear();
- }
- // destructor
- CSmplMsrResultFileMgr::~CSmplMsrResultFileMgr()
- {
- }
- // class methods
- // public
- // initialization
- // this method needs to be called before measurement
- BOOL CSmplMsrResultFileMgr::Init(COTSSamplePtr a_pSample)
- {
- // sample check
- ASSERT(a_pSample);
- if (!a_pSample)
- {
- // invalid sample pointer
- LogErrorTrace(__FILE__, __LINE__, _T("Init: failed to create the working directory."));
- return FALSE;
- }
- // sample name
- CString strSmplName = a_pSample->GetName();
- strSmplName.Trim();
- if (strSmplName.IsEmpty())
- {
- // the sample name string can't be an empty string
- LogErrorTrace(__FILE__, __LINE__, _T("Init: the sample name string is an empty string."));
- return FALSE;
- }
- // the working directory string can't be an empty string
- if (m_strWorkingFolder.IsEmpty())
- {
- // the working directory is empty
- LogTrace(__FILE__, __LINE__, _T("Init: the woring folder directory string is an empty string."));
- return FALSE;
- }
- // check if the working directory is there
- if (!COTSFileSys::Exists(m_strWorkingFolder))
- {
- // the working directory is not exit, create it
- if (!COTSFileSys::CreateFolder(m_strWorkingFolder))
- {
- // failed to create the working directory
- LogTrace(__FILE__, __LINE__, _T("Init: failed to create the working directory."));
- return FALSE;
- }
- }
- // sample measure file pathname
- CString strPathname = m_strWorkingFolder + strSmplName + SMPL_MSR_RESULT_FILE_EXT;
- // file not exists, creates it
- if (!CreateFileMgr(strPathname))
- {
- // failed to create the file
- LogErrorTrace(__FILE__, __LINE__, _T("Init: can't create file manager(%s). error: %s"), strPathname);
- return FALSE;
- }
-
- // get field files directory string
- CString strFieldFileSubFolder = GetFieldFileSubFolderStr();
- // check if the field files directory exists
- if (!COTSFileSys::Exists(strFieldFileSubFolder))
- {
- // field files directory exists not exists, creates it
- if (!COTSFileSys::CreateFolder(strFieldFileSubFolder))
- {
- // failed to create the field files directory
- LogErrorTrace(__FILE__, __LINE__, _T("Init: failed to create field files directory (%s). error: %s"), strFieldFileSubFolder);
- return FALSE;
- }
- }
- // ok, return TRUE
- SetSample(a_pSample);
- return TRUE;
- }
- // Load
- BOOL CSmplMsrResultFileMgr::Load(CString a_strPathname /*= _T("")*/)
- {
- /* int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
- tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
- _CrtSetDbgFlag(tmpFlag);*/
- //_CrtSetBreakAlloc(7415416);
- //AFX_MANAGE_STATE(AfxGetStaticModuleState());
- // check the pathname string
- a_strPathname.Trim();
- if (a_strPathname.IsEmpty())
- {
- // open
- CFileDialog dlg(TRUE, SMPL_MSR_RESULT_FILE_EXT, NULL, OFN_FILEMUSTEXIST, SMPL_MSR_RESULT_FILE_FILTER);
- if (dlg.DoModal() != IDOK)
- {
- // user canceled loading
- LogTrace(__FILE__, __LINE__, _T("Load: user canceled loading."));
- return FALSE;
- }
- a_strPathname = dlg.GetPathName();
- }
-
- // get path of the pathname
- CString strFilePath = COTSHelper::GetFolderName(a_strPathname);
- if (strFilePath.IsEmpty())
- {
- // file path string is an empty string
- LogErrorTrace(__FILE__, __LINE__, _T("Load: file path string is an empty string."));
- return FALSE;
- }
- // field file sub folder string
- CString strFieldFileSubFolder = strFilePath + _T("\\") + SMPL_MSR_RESULT_FIELDS_FILE_SUBFOLDER + _T("\\");
- // check if the field file sub folder exists
- if (!COTSFileSys::Exists(strFieldFileSubFolder))
- {
- // field files folder doesn't exist
- LogErrorTrace(__FILE__, __LINE__, _T("Load: field files folder doesn't exist (%s)."), strFieldFileSubFolder);
- return FALSE;
- }
- SetWorkingFolderStr(strFieldFileSubFolder);
- // create sample measure result file
- CSmplMsrResultFilePtr pSmplMsrResultFile = CSmplMsrResultFilePtr(new CSmplMsrResultFile());
- tinyxml2::XMLDocument doc;
- doc.LoadFile(a_strPathname);//载入xml文件
- tinyxml2::XMLElement *rootNode;
- rootNode = doc.FirstChildElement(RootClassName);
- pSmplMsrResultFile->Serialize(false, &doc, rootNode);
- // file version
- CString strFileVersion = pSmplMsrResultFile->GetFileVersion();
- DWORD nFileVersion = COTSHelper::GetVersionFromString(strFileVersion);
- if (nFileVersion == 0)
- {// invalid file
- LogErrorTrace(__FILE__, __LINE__, _T("Load: invalid sample measure result file %s"), a_strPathname);
- return FALSE;
- }
- // sample measure result file
- m_pSmplMsrResultFile = pSmplMsrResultFile;
- SetPathName(a_strPathname);
- this->LoadFieldDataFromDB(m_strPathname);
- // ok, return TRUE
- return TRUE;
- }
- // Load
- BOOL CSmplMsrResultFileMgr::LoadFieldDataFromDB(CString a_strPathname /*= _T("")*/)
- {
-
- // check the pathname string
- a_strPathname.Trim();
- if (a_strPathname.IsEmpty())
- {
- // open
- CFileDialog dlg(TRUE, SMPL_MSR_RESULT_FILE_EXT, NULL, OFN_FILEMUSTEXIST, SMPL_MSR_RESULT_FILE_FILTER);
- if (dlg.DoModal() != IDOK)
- {
- // user canceled loading
- LogTrace(__FILE__, __LINE__, _T("Load: user canceled loading."));
- return FALSE;
- }
- a_strPathname = dlg.GetPathName();
- }
- // get path of the pathname
- CString strFilePath = COTSHelper::GetFolderName(a_strPathname);
- if (strFilePath.IsEmpty())
- {
- // file path string is an empty string
- LogErrorTrace(__FILE__, __LINE__, _T("Load: file path string is an empty string."));
- return FALSE;
- }
- // field file sub folder string
- CString strFieldFileSubFolder = strFilePath + _T("\\") + SMPL_MSR_RESULT_FIELDS_FILE_SUBFOLDER + _T("\\");
- // check if the field file sub folder exists
- if (!COTSFileSys::Exists(strFieldFileSubFolder))
- {// field files folder doesn't exist
- LogErrorTrace(__FILE__, __LINE__, _T("Load: field files folder doesn't exist (%s)."), strFieldFileSubFolder);
- return FALSE;
- }
- CString strIncAFilename = strFieldFileSubFolder + _T("\\") + SMPL_MSR_RESULT_INCLUSION_FILE;
- CIncAFileMgrPtr pIncAFileMgr = CIncAFileMgrPtr(new CIncAFileMgr(strIncAFilename));
- COTSFieldDataList allFlds;
- CMsrSampleStatusPtr poMsrStatus= m_pSmplMsrResultFile->GetSample()->GetMsrStatus();
-
- CMsrResultsPtr poMsrResults= m_pSmplMsrResultFile->GetSample()->GetMsrResults();
-
- double aFldArea = m_pSmplMsrResultFile->GetSample()->CalculateAFieldArea();
- if (pIncAFileMgr->GetAllFieldsFromDB(allFlds, poMsrStatus, poMsrResults, aFldArea))
- {
- m_pSmplMsrResultFile->SetFieldData(allFlds);
-
- COTSFieldDataList& listFieldData = m_pSmplMsrResultFile->GetFieldData();
- for (auto pFieldData : listFieldData)
- {
- //pFieldData->SetFieldFileFolder(strFieldFileSubFolder);
- }
- return TRUE;
- }
- else
- {
- return FALSE;
- }
-
-
- }
- // Save
- BOOL CSmplMsrResultFileMgr::Save(CString a_strPathname /*= _T("")*/)
- {
-
- // safety check
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- // invalid sample measure result file pointer
- LogErrorTrace(__FILE__, __LINE__, _T("Save: invalid sample measure result file pointer."));
- return FALSE;
- }
- // check the pathname string
- a_strPathname.Trim();
- if (a_strPathname.IsEmpty())
- {
- // file save as dialog
- CFileDialog dlg(FALSE, SMPL_MSR_RESULT_FILE_EXT, NULL, OFN_OVERWRITEPROMPT, SMPL_MSR_RESULT_FILE_FILTER);
- if (dlg.DoModal() != IDOK)
- {
- // user canceled loading
- LogTrace(__FILE__, __LINE__, _T("Save: user canceled save."));
- return FALSE;
- }
- // get file pathname
- a_strPathname = dlg.GetPathName();
- }
- // get path of the pathname
- CString strFilePath = COTSHelper::GetFolderName(a_strPathname);
- if (strFilePath.IsEmpty())
- {
- // file path string is an empty string
- LogErrorTrace(__FILE__, __LINE__, _T("Save: file path string is an empty string."));
- return FALSE;
- }
- // check if the path exists
- if (!COTSFileSys::Exists(strFilePath))
- {
- // file path doesn't exist create it
- if (!COTSFileSys::CreateFolder(strFilePath))
- {
- // failed to create file path
- LogErrorTrace(__FILE__, __LINE__, _T("Save: failed to create file path (%s)."), strFilePath);
- return FALSE;
- }
- }
- tinyxml2::XMLDocument doc;
- if (COTSFileSys::Exists(a_strPathname))
- {
- doc.LoadFile(a_strPathname);//载入xml文件
- }
- doc.Clear();
- tinyxml2::XMLDeclaration* declaration = doc.NewDeclaration();//添加xml文件头申明
- doc.InsertFirstChild(declaration);
- tinyxml2::XMLElement *rootNode;
- rootNode = doc.NewElement(RootClassName);
- doc.InsertEndChild(rootNode);
- m_pSmplMsrResultFile->Serialize(true, &doc, rootNode);
- int result = doc.SaveFile(a_strPathname);
- // ok, return TRUE
- return TRUE;
- }
-
- // field file sub folder string
- CString CSmplMsrResultFileMgr::GetFieldFileSubFolderStr()
- {
- // return empty string if working folder
- if (m_strWorkingFolder.IsEmpty())
- {
- return _T("");
- }
- // add "\\" at the string end if it is not "\\"
- if (m_strWorkingFolder.Right(1) != _T('\\'))
- {
- m_strWorkingFolder += _T("\\");
- }
- // field file sub folder string
- CString strFieldFileSubFolder = m_strWorkingFolder;
- CString strFIELDS_FILE_SUBFOLDER = _T("FIELD_FILES");
- if (strFieldFileSubFolder.Find(_T(strFIELDS_FILE_SUBFOLDER)) <= 0)
- {
- strFieldFileSubFolder = m_strWorkingFolder + SMPL_MSR_RESULT_FIELDS_FILE_SUBFOLDER + _T("\\");
- }
- else
- {
- strFieldFileSubFolder = m_strWorkingFolder;
- }
- // return field file sub folder string
- return strFieldFileSubFolder;
- }
-
- // save a x-ray file for a field
- BOOL CSmplMsrResultFileMgr::SaveXRayFileForAField(COTSFieldMgrPtr a_pField)
- {
- // check input
- ASSERT(a_pField);
- if (!a_pField)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("SaveXRayFileForAField: invalid field data pointer."));
- return FALSE;
- }
- // get field x-ray file pathname
- CString strXRayFilePathname = m_strWorkingFolder + _T("\\") + SMPL_MSR_RESULT_FIELDS_FILE_SUBFOLDER + _T("\\");
- CString strXRaySearchFilename = strXRayFilePathname + SMPL_MSR_RESULT_SEARCH_X_RAY_FILE;
- CString strXRayAnalysisFilename = strXRayFilePathname + SMPL_MSR_RESULT_ANALYSIS_X_RAY_FILE;
- // save x-ray file for the field
- CPosXrayFileMgrPtr pPosXrayFileMgr = CPosXrayFileMgrPtr(new CPosXrayFileMgr(strXRayAnalysisFilename));
-
- CPosXrayList listSearchXray = a_pField->GetSearchPosXrayList();
- pPosXrayFileMgr->SetPosXrayList(listSearchXray,TRUE);
- pPosXrayFileMgr->SetHasElement(FALSE);
- if (!pPosXrayFileMgr->Save())
- {
- LogErrorTrace(__FILE__, __LINE__, _T("SaveXRayFileForAField: save search x-ray failed."));
- return FALSE;
- }
- CPosXrayList listAnalysisXray = a_pField->GetAnalysisPosXrayList();
- pPosXrayFileMgr->SetPosXrayList(listAnalysisXray, TRUE);
- pPosXrayFileMgr->SetHasElement(TRUE);
- if (!pPosXrayFileMgr->Save())
- {
- LogErrorTrace(__FILE__, __LINE__, _T("SaveXRayFileForAField: save analysis x-ray failed."));
- return FALSE;
- }
- // ok, return TRUE
- return TRUE;
- }
- // fields
- COTSFieldDataPtr CSmplMsrResultFileMgr::GetFieldById(int a_nID)
- {
- COTSFieldDataList listFieldData = m_pSmplMsrResultFile->GetFieldData();
- if (a_nID <0 || a_nID >(int)listFieldData.size())
- {
- return nullptr;
- }
-
- COTSFieldDataPtr pFieldData = listFieldData[a_nID];
- return pFieldData;
- }
- BOOL CSmplMsrResultFileMgr::AddAField(COTSFieldDataPtr a_pFieldData)
- {
- ASSERT(a_pFieldData);
- if (!a_pFieldData)
- {
- // empty field data pointer
- LogErrorTrace(__FILE__, __LINE__, _T("AddAField: empty field data pointer."));
- return FALSE;
- }
- COTSFieldDataList& listFieldData = m_pSmplMsrResultFile->GetFieldData();
- listFieldData.push_back(a_pFieldData);
- return TRUE;
- }
- BOOL CSmplMsrResultFileMgr::DeleteAFieldById(int a_nID)
- {
- COTSFieldDataList& listFieldData = m_pSmplMsrResultFile->GetFieldData();
- if (a_nID <0 || a_nID > (int)listFieldData.size())
- {
- return FALSE;
- }
- listFieldData.erase(listFieldData.begin()+a_nID);
- return TRUE;
- }
- void CSmplMsrResultFileMgr::SetSample(COTSSamplePtr a_pSample)
- {
- ASSERT(a_pSample);
- if (!a_pSample)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid sample."));
- return;
- }
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid sample result file manager."));
- return;
- }
- m_pSmplMsrResultFile->SetSample(a_pSample);
-
- }
- void CSmplMsrResultFileMgr::SetSEMGnr(CSEMDataGnrPtr a_pSEMGnr)
- {
- ASSERT(a_pSEMGnr);
- if (!a_pSEMGnr)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid SEM general data pointer."));
- return;
- }
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid sample result file manager."));
- return;
- }
- m_pSmplMsrResultFile->SetSEMStage(a_pSEMGnr);
- }
- // get id for a new field
- int CSmplMsrResultFileMgr::GetIdForANewField(int a_nLastFieldId)
- {
- // new field id
- int nNewFieldId = a_nLastFieldId;// +this->m_pSmplMsrResultFile->GetSample()->GetMsrStatus()->GetCompletedFields();
- // safety check
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- // shouldn't be here, invalid sample measure result file
- LogErrorTrace(__FILE__, __LINE__, _T("GetIdForANewField: invalid sample measure result file."));
- return nNewFieldId;
- }
- // make the new field id is unit
- COTSFieldDataList& listFieldData = m_pSmplMsrResultFile->GetFieldData();
- BOOL bUnit = FALSE;
- do
- {
- auto itr = std::find_if(listFieldData.begin(), listFieldData.end(), [nNewFieldId](COTSFieldDataPtr p) { return p->GetId() == nNewFieldId; });
- bUnit = (itr == listFieldData.end());
- if (!bUnit)
- {
- ++nNewFieldId;
- }
- }
- while (!bUnit);
- // return new field id
- return nNewFieldId;
- }
- // set SEMStageData
- void CSmplMsrResultFileMgr::SetSEMStageData(CSEMStageDataPtr a_pSEMStageData)
- {
- ASSERT(a_pSEMStageData);
- if (!a_pSEMStageData)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid SEM stage data pointer."));
- return;
- }
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid sample result file manager."));
- return;
- }
- m_pSmplMsrResultFile->SetSEMStageData(a_pSEMStageData);
- }
- // set SEMStage
- void CSmplMsrResultFileMgr::SetSEMStage(CStagePtr a_pStage)
- {
- ASSERT(a_pStage);
- if (!a_pStage)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid stage pointer."));
- return;
- }
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("input a invalid sample result file manager."));
- return;
- }
- m_pSmplMsrResultFile->SetStage(a_pStage);
- }
- //COTSFieldMgrList CSmplMsrResultFileMgr::GetOTSFldMgrListAndAnalysisXrayList()
- //{
- //
- // if (m_listFieldMgr.size() > 0)//if the list is not empty ,prove that we've already load all the dada.so there's no need to load again.
- // {
- // return m_listFieldMgr;
- // }
- // m_listFieldMgr.clear();
- // ASSERT(m_pSmplMsrResultFile);
- // if (!m_pSmplMsrResultFile)
- // {
- // LogErrorTrace(__FILE__, __LINE__, _T("GetOTSFieldMgrList: invalid sample measure result file pointer."));
- // return m_listFieldMgr;
- // }
- // //Get FieldDataList
- // COTSFieldDataList listFieldData = m_pSmplMsrResultFile->GetFieldData();
- // int nFieldNum = (int)listFieldData.size();
- // m_listAnalysisXray.clear();
- // // get field number
- // for (auto pFieldData : listFieldData)
- // {
- // COTSFieldMgrPtr pFieldMgr = COTSFieldMgrPtr(new COTSFieldMgr());
- // // get FieldData
- // pFieldMgr->SetOTSFieldData(pFieldData);
- //
- // COTSParticleList& listParticle = pFieldData->GetParticleList();
- // if (listParticle.empty())
- // {
- // LogInfoTrace(__FILE__, __LINE__, _T("GetOTSFieldMgrList: there is no particle in this field."));
- // continue;
- // }
- // // get BSE
- // CString strFieldFileFolder = pFieldData->GetFieldFileFolder();
- // int nId = pFieldData->GetId();
- // CString sFieldId;
- // sFieldId.Format(_T("%d"), nId);
- // CString strBSEFilePathname = strFieldFileFolder + SMPL_MSR_RESULT_FIELDS_BSE + sFieldId + BMP_IMG_FILE_EXT;
- // CBSEImgFileMgrPtr pBSEImgFile = CBSEImgFileMgrPtr(new CBSEImgFileMgr());
- // if (!pBSEImgFile->LoadFromBitmap(strBSEFilePathname))
- // {
- // LogErrorTrace(__FILE__, __LINE__, _T("GetOTSFieldMgrList: can't load BSE File."));
- // CMsrResultsPtr pMsrResults = CMsrResultsPtr(new CMsrResults());
- // pFieldMgr->SetMsrResult(pMsrResults);
- // m_listFieldMgr.push_back(pFieldMgr);
- // continue;
- // }
- // CBSEImgPtr pBSEImg = pBSEImgFile->GetBSEImg();
- // //pFieldMgr->SetBSEImage(CBSEImgPtr(new CBSEImg(*pBSEImg.get())));
- // pFieldMgr->SetBSEImage(pBSEImg);
- // // get analysis X-ray list
- // CString strXRayAnalysisFilename = strFieldFileFolder + _T("\\") + SMPL_MSR_RESULT_ANALYSIS_X_RAY_FILE;
- // CPosXrayFileMgrPtr pPosAnalysisXrayFileMgr = CPosXrayFileMgrPtr(new CPosXrayFileMgr(strXRayAnalysisFilename));
- // pPosAnalysisXrayFileMgr->SetHasElement(TRUE);
- // if (!pPosAnalysisXrayFileMgr->Load(pFieldData->GetId(),strXRayAnalysisFilename))
- // {
- // LogTrace(__FILE__, __LINE__, _T("GetOTSFieldMgrList: load analysis x-ray of field %d failed."), pFieldData->GetId());
- // CMsrResultsPtr pMsrResults = CMsrResultsPtr(new CMsrResults());
- // pFieldMgr->SetMsrResult(pMsrResults);
- // m_listFieldMgr.push_back(pFieldMgr);
- // continue;
- // }
- // CPosXraysList listAnalysisXray = pPosAnalysisXrayFileMgr->GetPosXrayList();
- // pFieldMgr->SetAnalysisPosXayList(listAnalysisXray);
- // SetAnalysisXrayToList(listAnalysisXray);
- // //Mrs result need compute
- // CMsrResultsPtr pMsrResults = CMsrResultsPtr(new CMsrResults());
- // pFieldMgr->SetMsrResult(pMsrResults);
- // m_listFieldMgr.push_back(pFieldMgr);
- // }
- // return m_listFieldMgr;
- //}
- void CSmplMsrResultFileMgr::SetParticleList(COTSParticleList& a_listParticle)
- {
- m_listParticle.clear();
- for (auto pParticle : a_listParticle)
- {
- //COTSParticlePtr pParticleNew = COTSParticlePtr(new COTSParticle(*pParticle.get()));
- //COTSParticlePtr pParticleNew = pParticle;
- m_listParticle.push_back(pParticle);
- }
- }
-
- BOOL CSmplMsrResultFileMgr::ComputeParticleList()
- {
- ASSERT(m_pSmplMsrResultFile);
- if (!m_pSmplMsrResultFile)
- {
- LogErrorTrace(__FILE__, __LINE__, _T("GetParticleList: invalid sample measure result file pointer."));
- return FALSE;
- }
- m_listParticle.clear();
- //Get FieldDataList
- COTSFieldDataList& listFieldData = m_pSmplMsrResultFile->GetFieldData();
- for (auto pFieldData : listFieldData)
- {
- COTSParticleList listParticle = pFieldData->GetParticleList();
- for (auto pParticle : listParticle)
- {
- //COTSParticlePtr pParticleNew = COTSParticlePtr(new COTSParticle(*pParticle.get()));
- //COTSParticlePtr pParticleNew =pParticle;
- m_listParticle.push_back(pParticle);
- }
- }
- return TRUE;
- }
- BOOL CSmplMsrResultFileMgr::SetAnalysisXrayToList(CPosXrayList a_listAnalysisXray)
- {
- //m_listAnalysisXray.clear();
- for (auto pXray: a_listAnalysisXray)
- {
- //CPosXrayPtr pXrayNew = pXray;
- m_listAnalysisXray.push_back(pXray);
- }
- return TRUE;
- }
- // protected
- // create a new file
- BOOL CSmplMsrResultFileMgr::CreateFileMgr(CString a_strPathname)
- {
- // check the file pathname
- a_strPathname.Trim();
- if (a_strPathname.IsEmpty())
- {
- // file pathname is an empty string
- LogTrace(__FILE__, __LINE__, _T("Init: file pathname string is an empty string."));
- return FALSE;
- }
- // create sample measure result file
- m_pSmplMsrResultFile = CSmplMsrResultFilePtr(new CSmplMsrResultFile());
- SetPathName(a_strPathname);
- // ok, return TRUE
- return TRUE;
- }
- }
|