123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- #pragma once
- #include "stdafx.h"
- #include "STDDataDB.h"
- #include "STDDataTable.h"
- namespace OTSSQLITE
- {
- using namespace OTSSQLITE;
- CSTDDataDB::CSTDDataDB(CDBStoreBasePtr a_datastore)
- {
- m_tableInfo.reset(new CSTDDataTable());
- myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);
- }
- CSTDDataDB::~CSTDDataDB()
- {
- }
- CSTDItemPtr CSTDDataDB::GetSTDItemById(const long a_nIncAId)
- {
- CSTDItemPtr pSTDItem;
- if (!m_listSTDItem.empty())
- {
- for (auto pItem : m_listSTDItem)
- {
- if (pItem->GetSTDId() == (DWORD)a_nIncAId)
- {
- pSTDItem = pItem;
- }
- }
- }
- else
- {
- auto tableQuery = GetQueryById(a_nIncAId);
- ASSERT(tableQuery);
- if (!tableQuery)
- {
- return pSTDItem;
- }
- if (!ReadSTDItem(tableQuery))
- {
- LogErrorTrace(__FILE__, __LINE__, _T("read x-ray failed."));
- return pSTDItem;
- }
- pSTDItem = CSTDItemPtr(new CSTDItem(*m_pSTDItem.get()));
- }
- return pSTDItem;
- }
- CSTDItemsList& CSTDDataDB::GetSTDItemList(const BOOL a_bForce/* = FALSE*/)
- {
- if (a_bForce)
- {
- m_listSTDItem.clear();
- }
- if (m_listSTDItem.size() == 0)
- {
- ReadSTDItemList();
- }
- return m_listSTDItem;
- }
-
- CDBTableBasePtr CSTDDataDB::GetTableInfo()
- {
- return m_tableInfo;
- }
- BOOL CSTDDataDB::Init(const BOOL a_bClean /*= FALSE*/)
- {
- return myDB->Init(a_bClean);
- }
- BOOL CSTDDataDB::CreateTable(const BOOL a_bForce /*= FALSE*/)
- {
- return myDB->CreateTable(a_bForce);
- }
- BOOL CSTDDataDB::DeleteTable()
- {
- return myDB->DeleteTable();
- }
- BOOL CSTDDataDB::RemoveAllRows()
- {
- return myDB->RemoveAllRows();
- }
- BOOL CSTDDataDB::IsDBExist()
- {
- return myDB->IsDBExist();
- }
- OTSSQLITE::CDBStoreBasePtr CSTDDataDB::GetDatastore()
- {
- return myDB->GetDatastore();
- }
- OTSSQLITE::CDBQueryBasePtr CSTDDataDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)
- {
- return myDB->GetTableQuery(a_sOrderColumnName);
- }
- BOOL CSTDDataDB::ReadSTDItemList()
- {
- auto tableInfoPtr = GetTableInfo();
- ASSERT(tableInfoPtr);
- if (!tableInfoPtr)
- {
- return FALSE;
- }
- auto query = GetTableQuery();
- ASSERT(query);
- if (!query)
- {
- return FALSE;
- }
- m_listSTDItem = ReadSTDItemList(query);
- return TRUE;
- }
- CSTDItemsList CSTDDataDB::ReadSTDItemList(CDBQueryBasePtr a_query)
- {
- CSTDItemsList listSTDItem;
- int nRowId = 0;
- int nWrongItems = 0;
- while (!a_query->IsEOF())
- {
- if (!ReadSTDItem(a_query)) //current x-ray point
- {
- LogErrorTrace(__FILE__, __LINE__, _T("Read xray point failed"));
- nWrongItems++;
- break;
- }
- listSTDItem.push_back(m_pSTDItem);
- a_query->NextRow();
- nRowId++;
- }
- return listSTDItem;
- }
- BOOL CSTDDataDB::ReadSTDItem(CDBQueryBasePtr a_query)
- {
- int nCol;
- m_pSTDItem = CSTDItemPtr(new CSTDItem());
- CString sIncAName;
- nCol = (int)CSTDDataTable::ColumnID::S_NAME - (int)CSTDDataTable::ColumnID::MIN;
- sIncAName = a_query->GetColStringValue(nCol, _T(""));
- m_pSTDItem->SetName(sIncAName);
- int nIncAIdNow;
- nCol = (int)CSTDDataTable::ColumnID::N_INCA_ID - (int)CSTDDataTable::ColumnID::MIN;
- nIncAIdNow = a_query->GetColIntValue(nCol, -1);
- m_pSTDItem->SetSTDId(nIncAIdNow);
- CString sColor;
- nCol = (int)CSTDDataTable::ColumnID::S_COLOR - (int)CSTDDataTable::ColumnID::MIN;
- sColor = a_query->GetColStringValue(nCol, _T(""));
- m_pSTDItem->SetColor(sColor);
- double dHeightWidthRatio;
- nCol = (int)CSTDDataTable::ColumnID::F_HEIGHT_WIDTH_RATIO - (int)CSTDDataTable::ColumnID::MIN;
- dHeightWidthRatio = a_query->GetColFloatValue(nCol, -1);
- m_pSTDItem->SetWidth_HeightRadio(dHeightWidthRatio);
- int nGrayStart;
- nCol = (int)CSTDDataTable::ColumnID::N_GRAY_START - (int)CSTDDataTable::ColumnID::MIN;
- nGrayStart = a_query->GetColIntValue(nCol, -1);
-
- int nGrayEnd;
- nCol = (int)CSTDDataTable::ColumnID::N_GRAY_START - (int)CSTDDataTable::ColumnID::MIN;
- nGrayEnd = a_query->GetColIntValue(nCol, -1);
- CIntRangePtr pGrayRange = CIntRangePtr(new CIntRange());
- pGrayRange->SetStart(nGrayStart);
- pGrayRange->SetEnd(nGrayEnd);
- m_pSTDItem->SetGrayLevelRange(pGrayRange);
- int nElementRangeNum;
- nCol = (int)CSTDDataTable::ColumnID::N_ELEMENT_RANGE_NUM - (int)CSTDDataTable::ColumnID::MIN;
- nElementRangeNum = a_query->GetColIntValue(nCol, -1);
- m_pSTDItem->SetElementRange(nElementRangeNum);
- return TRUE;
- }
- CDBQueryBasePtr CSTDDataDB::GetQueryById(const long a_nIncAId)
- {
- CDBQueryBasePtr query;
- auto datastorePtr = GetDatastore();
- ASSERT(datastorePtr);
- if (!datastorePtr)
- {
- return query;
- }
- auto tableInfoPtr = GetTableInfo();
- ASSERT(tableInfoPtr);
- if (!tableInfoPtr)
- {
- return query;
- }
- CString sIncAIdColumnName = tableInfoPtr->GetColumnName((int)CSTDDataTable::ColumnID::N_INCA_ID - (int)CSTDDataTable::ColumnID::MIN);
- CString sSQLCommand;
- sSQLCommand.Format(_T("SELECT * FROM \'%s\' WHERE %s = %d AND %s = %d;"),
- (LPCTSTR)tableInfoPtr->GetTableName(),
- (LPCTSTR)sIncAIdColumnName,
- a_nIncAId);
- query = datastorePtr->QueryByCommand(sSQLCommand);
- ASSERT(query);
- if (!query || !query->IsValid())
- {
- LogErrorTrace(__FILE__, __LINE__, _T("Invalid quary command (%s)."), (LPCTSTR)sSQLCommand);
- ASSERT(FALSE);
- return (CDBQueryBasePtr());
- }
- // do the table related valid checking
- if (query->GetColCount() != GetTableInfo()->GetColumnCount())
- {
- LogErrorTrace(__FILE__, __LINE__, _T("query col num value is %d, but not %d"), query->GetColCount(), GetTableInfo()->GetColumnCount());
- ASSERT(FALSE);
- return (CDBQueryBasePtr());
- }
- return query;
- }
- }
|