#pragma once #include "stdafx.h" //#include "OTSSTDLib.h" #include "STDGroupTable.h" #include "STDGroupDB.h" using namespace OTSSQLITE; namespace OTSClassifyEngine { CSTDGroupDB::CSTDGroupDB(CDBStoreBasePtr a_datastore) { m_tableInfo.reset(new CSTDGroupTable()); myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo); } CSTDGroupDB::~CSTDGroupDB() { } BOOL CSTDGroupDB::GetSTDGroups(CGroupClassifyList& grouplist) { auto datastorePtr = GetDatastore(); auto tableInfoPtr = GetTableInfo(); if (!datastorePtr || !tableInfoPtr) { return FALSE; } CString sTableName = tableInfoPtr->GetTableName(); if (!datastorePtr->IsTableExists(sTableName)) { return FALSE; } CString strSql = _T(""); strSql.Format(_T("select %s, %s, %s, %s from %s order by %s"), tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ID - (int)CSTDGroupTable::ColumnID::MIN), tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::S_NAME - (int)CSTDGroupTable::ColumnID::MIN), tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN), tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN), tableInfoPtr->GetTableName(), tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN)); auto query = datastorePtr->QueryByCommand(strSql); if (!query || !query->IsValid()) { return FALSE; } if (query->GetColCount() != 4) { return FALSE; } while (!query->IsEOF()) { CGroupClassifyPtr pClassify = GetSTDGroup(query); grouplist.push_back(pClassify); query->NextRow(); } return true; } CGroupClassifyPtr CSTDGroupDB::GetSTDGroup(CDBQueryBasePtr a_query) { int iCol = 0; int iValue = 0; CString strValue = ""; CGroupClassifyPtr pClassify = CGroupClassifyPtr(new CGroupClassify()); iCol = (int)CSTDGroupTable::ColumnID::N_ID - (int)CSTDGroupTable::ColumnID::MIN; iValue = a_query->GetColIntValue(iCol, 0); pClassify->SetID(iValue); iCol = (int)CSTDGroupTable::ColumnID::S_NAME - (int)CSTDGroupTable::ColumnID::MIN; strValue = a_query->GetColStringValue(iCol, ""); pClassify->SetName(strValue); iCol = (int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN; iValue = a_query->GetColIntValue(iCol, 0); pClassify->SetColor(iValue); iCol = (int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN; iValue = a_query->GetColIntValue(iCol, 0); pClassify->SetOrder(iValue); return pClassify; } CDBTableBasePtr CSTDGroupDB::GetTableInfo() { return m_tableInfo; } BOOL CSTDGroupDB::Init(const BOOL a_bClean /*= FALSE*/) { return myDB->Init(a_bClean); } BOOL CSTDGroupDB::CreateTable(const BOOL a_bForce /*= FALSE*/) { return myDB->Init(a_bForce); } BOOL CSTDGroupDB::DeleteTable() { return myDB->DeleteTable(); } BOOL CSTDGroupDB::RemoveAllRows() { return myDB->RemoveAllRows(); } BOOL CSTDGroupDB::IsDBExist() { return myDB->IsDBExist(); } OTSSQLITE::CDBStoreBasePtr CSTDGroupDB::GetDatastore() { return myDB->GetDatastore(); } OTSSQLITE::CDBQueryBasePtr CSTDGroupDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/) { return myDB->GetTableQuery(); } }