123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #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("");
-
-
- }
- CSTDLibDB::CSTDLibDB(CDBStoreBasePtr a_datastore, CString strFileName)
- {
- m_tableInfo.reset(new CSTDLibTable());
- myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);
- m_strFileName = strFileName;
-
-
- }
- CSTDLibDB::~CSTDLibDB()
- {
- }
- CDBTableBasePtr CSTDLibDB::GetTableInfo()
- {
- return m_tableInfo;
- }
- 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);
- }
- CSTDSpectrumItemList CSTDLibDB::GetSTDItems(BOOL bForce/* = FALSE*/)
- {
- CSTDSpectrumItemList itms;
- if (bForce)
- {
- auto tableInfoPtr = GetTableInfo();
- ASSERT(tableInfoPtr);
- if (!tableInfoPtr)
- {
- return itms;
- }
- auto query = GetTableQuery("id");
- ASSERT(query);
- if (!query)
- {
- return itms;
- }
-
- while (!query->IsEOF())
- {
- CSTDSpectrumItemPtr pSTDItem = ReadSTDItem(query);
- itms.push_back(pSTDItem);
- query->NextRow();
- }
- return itms;
- }
-
- return itms;
-
- /*return m_pSTDLib;*/
- }
-
-
-
-
- CSTDSpectrumItemPtr CSTDLibDB::ReadSTDItem(CDBQueryBasePtr a_query)
- {
- int iCol = 0;
- int iValue = 0;
- float fValue = 0;
- CString strValue = "";
- CSTDSpectrumItemPtr pSTDMineral = CSTDSpectrumItemPtr(new CSTDSpectrumItem());
- // ¸ø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::S_NAME - (int)CSTDLibTable::ColumnID::MIN;
- auto name = a_query->GetColStringValue(iCol);
- pSTDMineral->SetName(name);
- iCol = (int)CSTDLibTable::ColumnID::N_COLOR - (int)CSTDLibTable::ColumnID::MIN;
- auto color = a_query->GetColIntValue(iCol);
- pSTDMineral->SetColor(color);
-
- iValue = 0;
- iCol = (int)CSTDLibTable::ColumnID::B_SPEC - (int)CSTDLibTable::ColumnID::MIN;
- auto pSpec = a_query->GetColBlobValue(iCol, iValue);
- auto channelNum = pSTDMineral->GetXraySpectrum()->GetChannelsNum();
- if (iValue == sizeof(DWORD) * channelNum)
- {
- pSTDMineral->GetXraySpectrum()->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;
- }
- }
|