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