| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 | #include "stdafx.h"#include "ParticleSTDDB.h"#include "ParticleSTDTable.h"#include "ParticleSTD.h"#include <SQLiteDB.h>#include <CurveCompareEngine/STDGroupTable.h>namespace OTSClassifyEngine{	using namespace OTSSQLITE;	CParticleSTDDB::CParticleSTDDB(CDBStoreBasePtr a_datastore)	{		m_tableInfo.reset(new CParticleSTDTable());		myDB = CreateNewSQLiteDB(a_datastore, m_tableInfo);	}	CParticleSTDDB::~CParticleSTDDB()	{	}	CDBTableBasePtr CParticleSTDDB::GetTableInfo()	{				return m_tableInfo;	}	BOOL CParticleSTDDB::Init(const BOOL a_bClean /*= FALSE*/)	{		return myDB->Init(a_bClean);	}	BOOL CParticleSTDDB::CreateTable(const BOOL a_bForce /*= FALSE*/)	{		return myDB->CreateTable(a_bForce);	}	BOOL CParticleSTDDB::DeleteTable()	{		return myDB->DeleteTable();	}	BOOL CParticleSTDDB::RemoveAllRows()	{		return myDB->RemoveAllRows();	}	BOOL CParticleSTDDB::IsDBExist()	{		return myDB->IsDBExist();	}	OTSSQLITE::CDBStoreBasePtr CParticleSTDDB::GetDatastore()	{		return myDB->GetDatastore();	}	OTSSQLITE::CDBQueryBasePtr CParticleSTDDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)	{		return myDB->GetTableQuery(a_sOrderColumnName);	}	ParticleSTDPtr CParticleSTDDB::GetPartSTDLib(ParticleSTDPtr partStd,BOOL bForce/* = FALSE*/)	{				if (bForce)		{			partStd->PartSTDItemListClear();		}				CString cmdstr = "select * from ClassifySTD left join STDGroups on ClassifySTD.GroupId=STDGroups.id";		auto query = myDB->GetCommandStringQuery(cmdstr);		ASSERT(query);				auto partstdlist= ReadParticleSTDList(query);		partStd->setSTDList(partstdlist);				return partStd;	}		PartSTDItemList CParticleSTDDB::ReadParticleSTDList(CDBQueryBasePtr a_query)	{		PartSTDItemList listSTDItem;		int nRowId = 0;		int nWrongItems = 0;		while (!a_query->IsEOF())		{			auto itm = PartSTDItemPtr(new PartSTDItem());			if (!ReadParticleSTDItem(a_query,itm))	//current x-ray point					{				LogErrorTrace(__FILE__, __LINE__, _T("Read xray point failed"));				nWrongItems++;				break;			}			listSTDItem.push_back(itm);			a_query->NextRow();			nRowId++;		}		return listSTDItem;	}	BOOL CParticleSTDDB::ReadParticleSTDItem(CDBQueryBasePtr a_query, PartSTDItemPtr stdItem)	{		int nCol;					int nIncAIdNow;		nCol = (int)CParticleSTDTable::ColumnID::N_STDId - (int)CParticleSTDTable::ColumnID::MIN;		nIncAIdNow = a_query->GetColIntValue(nCol, -1);		stdItem->SetID(nIncAIdNow);		CString sIncAName;		nCol = (int)CParticleSTDTable::ColumnID::S_StrName - (int)CParticleSTDTable::ColumnID::MIN;		sIncAName = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetName(sIncAName.GetString());		CString sColor;		nCol = (int)CParticleSTDTable::ColumnID::S_COLOR - (int)CParticleSTDTable::ColumnID::MIN;		sColor = a_query->GetColStringValue(nCol, _T(""));		if (sColor.Left(1) != "#") sColor = "#" + sColor;		stdItem->SetColor(sColor.GetString());		CString sKeyElementList;		nCol = (int)CParticleSTDTable::ColumnID::S_KeyElementList - (int)CParticleSTDTable::ColumnID::MIN;		sKeyElementList = a_query->GetColStringValue(nCol, _T(""));		std::vector < std::string> keyeleStrlist;		xmls::SplitString(sKeyElementList.GetBuffer(), keyeleStrlist, ",");		CElementsList elelist;		for (auto s : keyeleStrlist)		{			CElementPtr ele = CElementPtr(new CElement(s.c_str()));			elelist.push_back(ele);		}		stdItem->SetKeyElementList(elelist);		CString sSubElementList;		nCol = (int)CParticleSTDTable::ColumnID::S_SubElementList - (int)CParticleSTDTable::ColumnID::MIN;		sSubElementList = a_query->GetColStringValue(nCol, _T(""));		std::vector < std::string> SubeleStrlist;		xmls::SplitString(sSubElementList.GetBuffer(), SubeleStrlist, ",");		elelist.clear();		for (auto s : SubeleStrlist)		{			CElementPtr ele = CElementPtr(new CElement(s.c_str()));			elelist.push_back(ele);		}		stdItem->SetSubElementList(elelist);		CString sUsingImgPropertyList;		nCol = (int)CParticleSTDTable::ColumnID::S_UsingImgPropertyList - (int)CParticleSTDTable::ColumnID::MIN;		sUsingImgPropertyList = a_query->GetColStringValue(nCol, _T(""));		std::vector < std::string> UsingImgPropertyeleStrlist;		xmls::SplitString(sUsingImgPropertyList.GetBuffer(), UsingImgPropertyeleStrlist, ",");				std::vector<std::string> val;		for (auto s : UsingImgPropertyeleStrlist)		{			val.push_back(s);		}		stdItem->SetUsingImgPropertyNameList(val);		CString sUsingOtherPropertyList;		nCol = (int)CParticleSTDTable::ColumnID::S_UsingOtherPropertyList - (int)CParticleSTDTable::ColumnID::MIN;		sUsingOtherPropertyList = a_query->GetColStringValue(nCol, _T(""));		std::vector < std::string> UsingOtherPropertyStrlist;		xmls::SplitString(sUsingOtherPropertyList.GetBuffer(), UsingOtherPropertyStrlist, ",");		val.clear();		for (auto s : UsingOtherPropertyStrlist)		{			val.push_back(s);		}		stdItem->SetUsingOtherpropertyList(val);		CString sExpression;		nCol = (int)CParticleSTDTable::ColumnID::S_Expression - (int)CParticleSTDTable::ColumnID::MIN;		sExpression = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetExpressionStr(sExpression.GetString());		std::string dHardness;		nCol = (int)CParticleSTDTable::ColumnID::S_Hardness - (int)CParticleSTDTable::ColumnID::MIN;		dHardness = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetHardness(dHardness);		std::string dDensity;		nCol = (int)CParticleSTDTable::ColumnID::S_Density - (int)CParticleSTDTable::ColumnID::MIN;		dDensity = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetDensity(dDensity);		std::string dElectrical_conductivity;		nCol = (int)CParticleSTDTable::ColumnID::S_Electrical_conductivity - (int)CParticleSTDTable::ColumnID::MIN;		dElectrical_conductivity = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetElectrical_conductivity(dElectrical_conductivity);		int nBSE;		nCol = (int)CParticleSTDTable::ColumnID::N_BSE - (int)CParticleSTDTable::ColumnID::MIN;		nBSE = a_query->GetColIntValue(nCol, -1);		stdItem->SetBSE(nBSE);		CString sFormula;		nCol = (int)CParticleSTDTable::ColumnID::S_Formula - (int)CParticleSTDTable::ColumnID::MIN;		sFormula = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetFormula(sFormula.GetString());		CString sElement;		nCol = (int)CParticleSTDTable::ColumnID::S_Element - (int)CParticleSTDTable::ColumnID::MIN;		sElement = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetElement(sElement.GetString());		int grpid;		nCol = (int)CParticleSTDTable::ColumnID::N_GroupId- (int)CParticleSTDTable::ColumnID::MIN;		grpid = a_query->GetColIntValue(nCol, -1);		stdItem->SetGrpID(grpid);		CString grpName;		nCol = (int)CParticleSTDTable::ColumnID::N_GroupId - (int)CParticleSTDTable::ColumnID::MIN+(int)CSTDGroupTable::ColumnID::S_NAME- (int)CSTDGroupTable::ColumnID::MIN+1;		grpName = a_query->GetColStringValue(nCol, _T(""));		stdItem->SetGrpName(grpName.GetString());		CString grpColor;		nCol = (int)CParticleSTDTable::ColumnID::N_GroupId - (int)CParticleSTDTable::ColumnID::MIN + (int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN+1;		grpColor = a_query->GetColStringValue(nCol, _T(""));		if (grpColor.Left(1) != "#") sColor = "#" + grpColor;		stdItem->SetGrpColor(grpColor.GetString());		return TRUE;	}	}
 |