STDGroupDB.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #pragma once
  2. #include "stdafx.h"
  3. #include "OTSSTDLib.h"
  4. #include "STDGroupTable.h"
  5. #include "STDGroupDB.h"
  6. using namespace OTSSQLITE;
  7. namespace OTSClassifyEngine
  8. {
  9. CSTDGroupDB::CSTDGroupDB(CDBStoreBasePtr a_datastore)
  10. {
  11. m_tableInfo.reset(new CSTDGroupTable());
  12. myDB = CreateNewSQLiteDB(a_datastore,m_tableInfo);
  13. }
  14. CSTDGroupDB::~CSTDGroupDB()
  15. {
  16. }
  17. BOOL CSTDGroupDB::GetSTDGroups(CSTDLibPtr pOretype)
  18. {
  19. auto datastorePtr = GetDatastore();
  20. auto tableInfoPtr = GetTableInfo();
  21. if (!datastorePtr || !tableInfoPtr)
  22. {
  23. return FALSE;
  24. }
  25. CString sTableName = tableInfoPtr->GetTableName();
  26. if (!datastorePtr->IsTableExists(sTableName))
  27. {
  28. return FALSE;
  29. }
  30. CString strSql = _T("");
  31. strSql.Format(_T("select %s, %s, %s, %s from %s order by %s"),
  32. tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ID - (int)CSTDGroupTable::ColumnID::MIN),
  33. tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::S_NAME - (int)CSTDGroupTable::ColumnID::MIN),
  34. tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN),
  35. tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN),
  36. tableInfoPtr->GetTableName(),
  37. tableInfoPtr->GetColumnName((int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN));
  38. auto query = datastorePtr->QueryByCommand(strSql);
  39. if (!query || !query->IsValid())
  40. {
  41. return FALSE;
  42. }
  43. if (query->GetColCount() != 4)
  44. {
  45. return FALSE;
  46. }
  47. return GetSTDGroups(query, pOretype);
  48. }
  49. BOOL CSTDGroupDB::GetSTDGroups(CDBQueryBasePtr a_query, CSTDLibPtr pOretype)
  50. {
  51. while (!a_query->IsEOF())
  52. {
  53. CClassifyPtr pClassify = GetSTDGroup(a_query);
  54. pOretype->AddClassify(pClassify.get());
  55. a_query->NextRow();
  56. }
  57. return true;
  58. }
  59. CClassifyPtr CSTDGroupDB::GetSTDGroup(CDBQueryBasePtr a_query)
  60. {
  61. int iCol = 0;
  62. int iValue = 0;
  63. CString strValue = "";
  64. CClassifyPtr pClassify = CClassifyPtr(new CClassify());
  65. iCol = (int)CSTDGroupTable::ColumnID::N_ID - (int)CSTDGroupTable::ColumnID::MIN;
  66. iValue = a_query->GetColIntValue(iCol, 0);
  67. pClassify->SetID(iValue);
  68. iCol = (int)CSTDGroupTable::ColumnID::S_NAME - (int)CSTDGroupTable::ColumnID::MIN;
  69. strValue = a_query->GetColStringValue(iCol, "");
  70. pClassify->SetName(strValue);
  71. iCol = (int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN;
  72. iValue = a_query->GetColIntValue(iCol, 0);
  73. pClassify->SetColor(iValue);
  74. iCol = (int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN;
  75. iValue = a_query->GetColIntValue(iCol, 0);
  76. pClassify->SetOrder(iValue);
  77. return pClassify;
  78. }
  79. CDBTableBasePtr CSTDGroupDB::GetTableInfo()
  80. {
  81. return m_tableInfo;
  82. }
  83. BOOL CSTDGroupDB::Init(const BOOL a_bClean /*= FALSE*/)
  84. {
  85. return myDB->Init(a_bClean);
  86. }
  87. BOOL CSTDGroupDB::CreateTable(const BOOL a_bForce /*= FALSE*/)
  88. {
  89. return myDB->Init(a_bForce);
  90. }
  91. BOOL CSTDGroupDB::DeleteTable()
  92. {
  93. return myDB->DeleteTable();
  94. }
  95. BOOL CSTDGroupDB::RemoveAllRows()
  96. {
  97. return myDB->RemoveAllRows();
  98. }
  99. BOOL CSTDGroupDB::IsDBExist()
  100. {
  101. return myDB->IsDBExist();
  102. }
  103. OTSSQLITE::CDBStoreBasePtr CSTDGroupDB::GetDatastore()
  104. {
  105. return myDB->GetDatastore();
  106. }
  107. OTSSQLITE::CDBQueryBasePtr CSTDGroupDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)
  108. {
  109. return myDB->GetTableQuery();
  110. }
  111. }