| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 | #include "stdafx.h"#include "OTSSTDLibDB.h"#include "OTSSTDLibTable.h"using namespace OTSSQLITE;namespace OTSClassifyEngine{		CSTDLibDB::CSTDLibDB(CDBStoreBasePtr a_datastore) 	{		m_tableInfo.reset(new CSTDLibTable());		myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);		m_strFileName = _T("");		m_pSTDLib = CSTDLibPtr(new CSTDLib());		//m_elementDB = nullptr;		m_STDGroupDB = nullptr;	}	CSTDLibDB::CSTDLibDB(CDBStoreBasePtr a_datastore, CString strFileName)	{		m_tableInfo.reset(new CSTDLibTable());		myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);		m_strFileName = strFileName;		m_pSTDLib = CSTDLibPtr(new CSTDLib());		//m_elementDB = nullptr;		m_STDGroupDB = nullptr;	}	CSTDLibDB::~CSTDLibDB()	{	}	CDBTableBasePtr CSTDLibDB::GetTableInfo()	{		return m_tableInfo;	}	CSTDGroupDBPtr CSTDLibDB::GetSTDGroupDB()	{		if (!m_STDGroupDB)		{			auto datastorePtr = GetDatastore();			if (datastorePtr)			{				m_STDGroupDB = std::make_shared<CSTDGroupDB>(CSTDGroupDB(datastorePtr));			}		}		return m_STDGroupDB;	}	BOOL CSTDLibDB::Init(const BOOL a_bClean /*= FALSE*/)	{		return myDB->Init(a_bClean);	}	BOOL CSTDLibDB::CreateTable(const BOOL a_bForce /*= FALSE*/)	{		return myDB->CreateTable(a_bForce);	}	BOOL CSTDLibDB::DeleteTable()	{		return myDB->DeleteTable();	}	BOOL CSTDLibDB::RemoveAllRows()	{		return myDB->RemoveAllRows();	}	BOOL CSTDLibDB::IsDBExist()	{		return myDB->IsDBExist();	}	OTSSQLITE::CDBStoreBasePtr CSTDLibDB::GetDatastore()	{		return myDB->GetDatastore();	}	OTSSQLITE::CDBQueryBasePtr CSTDLibDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)	{		return myDB->GetTableQuery(a_sOrderColumnName);	}	CSTDLibPtr CSTDLibDB::GetSTDLib(BOOL bForce/* = FALSE*/)	{		if (bForce)		{			m_pSTDLib->Clear();		}		if (0 == m_pSTDLib->GetSTDItemCount())		{			ReadSTDLib();		}		if (0 == m_pSTDLib->GetClassifyCount())		{			GetSTDGroup(m_pSTDLib);		}		//m_pOretype->SetName(_T(""));		return m_pSTDLib;	}		BOOL CSTDLibDB::ReadSTDLib()	{		auto tableInfoPtr = GetTableInfo();		ASSERT(tableInfoPtr);		if (!tableInfoPtr)		{			return FALSE;		}		auto query = GetTableQuery("id");		ASSERT(query);		if (!query)		{			return FALSE;		}		return ReadSTDLib(query);	}		BOOL CSTDLibDB::ReadSTDLib(CDBQueryBasePtr a_query)	{		while (!a_query->IsEOF())		{			CStandardItemPtr pSTDItem = ReadSTDItem(a_query);			m_pSTDLib->AddItem(pSTDItem.get());			a_query->NextRow();		}		return true;	}	BOOL CSTDLibDB::ReadPartSTDLib()	{		auto tableInfoPtr = GetTableInfo();		ASSERT(tableInfoPtr);		if (!tableInfoPtr)		{			return FALSE;		}		auto query = GetTableQuery("STDId");		ASSERT(query);		if (!query)		{			return FALSE;		}		return ReadPartSTDLib(query);	}	BOOL CSTDLibDB::ReadPartSTDLib(CDBQueryBasePtr a_query)	{		while (!a_query->IsEOF())		{			CStandardItemPtr pSTDItem = ReadSTDItem(a_query);			m_pSTDLib->AddItem(pSTDItem.get());			a_query->NextRow();		}		return true;	}	CStandardItemPtr CSTDLibDB::ReadSTDItem(CDBQueryBasePtr a_query)	{		int iCol = 0;		int iValue = 0;		float fValue = 0;		CString strValue = "";		CStandardItemPtr pSTDMineral = CStandardItemPtr(new CStandardItem());		// ¸øpSTDMineral¸³Öµ		iCol = (int)CSTDLibTable::ColumnID::N_ID - (int)CSTDLibTable::ColumnID::MIN;		iValue = a_query->GetColIntValue(iCol, 0);		pSTDMineral->SetID(iValue);				iValue = 0;		iCol = (int)CSTDLibTable::ColumnID::B_SPEC - (int)CSTDLibTable::ColumnID::MIN;		auto pSpec = a_query->GetColBlobValue(iCol, iValue);		if (iValue == sizeof(DWORD) * pSTDMineral->GetChannelsNo())		{			pSTDMineral->SetXrayData((DWORD*)pSpec);		}		//the elements ratio is usfull only when we make the report so we don't read them here.		/*GetElements(pSTDMineral);*/		return pSTDMineral;	}	/*BOOL CSTDLibDB::GetElements(CStandardItemPtr& pSTDMineral)	{		auto elementdb = GetElementDB();		return elementdb->GetElements(pSTDMineral);	}*/	BOOL CSTDLibDB::GetSTDGroup(CSTDLibPtr& pOretype)	{		auto mineralgroupdb = GetSTDGroupDB();		return mineralgroupdb->GetSTDGroups(pOretype);	}}
 |