STDGroupDB.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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(CGroupClassifyList& grouplist)
  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. while (!query->IsEOF())
  48. {
  49. CGroupClassifyPtr pClassify = GetSTDGroup(query);
  50. grouplist.push_back(pClassify);
  51. query->NextRow();
  52. }
  53. return true;
  54. }
  55. CGroupClassifyPtr CSTDGroupDB::GetSTDGroup(CDBQueryBasePtr a_query)
  56. {
  57. int iCol = 0;
  58. int iValue = 0;
  59. CString strValue = "";
  60. CGroupClassifyPtr pClassify = CGroupClassifyPtr(new CGroupClassify());
  61. iCol = (int)CSTDGroupTable::ColumnID::N_ID - (int)CSTDGroupTable::ColumnID::MIN;
  62. iValue = a_query->GetColIntValue(iCol, 0);
  63. pClassify->SetID(iValue);
  64. iCol = (int)CSTDGroupTable::ColumnID::S_NAME - (int)CSTDGroupTable::ColumnID::MIN;
  65. strValue = a_query->GetColStringValue(iCol, "");
  66. pClassify->SetName(strValue);
  67. iCol = (int)CSTDGroupTable::ColumnID::S_COLOR - (int)CSTDGroupTable::ColumnID::MIN;
  68. iValue = a_query->GetColIntValue(iCol, 0);
  69. pClassify->SetColor(iValue);
  70. iCol = (int)CSTDGroupTable::ColumnID::N_ORDER - (int)CSTDGroupTable::ColumnID::MIN;
  71. iValue = a_query->GetColIntValue(iCol, 0);
  72. pClassify->SetOrder(iValue);
  73. return pClassify;
  74. }
  75. CDBTableBasePtr CSTDGroupDB::GetTableInfo()
  76. {
  77. return m_tableInfo;
  78. }
  79. BOOL CSTDGroupDB::Init(const BOOL a_bClean /*= FALSE*/)
  80. {
  81. return myDB->Init(a_bClean);
  82. }
  83. BOOL CSTDGroupDB::CreateTable(const BOOL a_bForce /*= FALSE*/)
  84. {
  85. return myDB->Init(a_bForce);
  86. }
  87. BOOL CSTDGroupDB::DeleteTable()
  88. {
  89. return myDB->DeleteTable();
  90. }
  91. BOOL CSTDGroupDB::RemoveAllRows()
  92. {
  93. return myDB->RemoveAllRows();
  94. }
  95. BOOL CSTDGroupDB::IsDBExist()
  96. {
  97. return myDB->IsDBExist();
  98. }
  99. OTSSQLITE::CDBStoreBasePtr CSTDGroupDB::GetDatastore()
  100. {
  101. return myDB->GetDatastore();
  102. }
  103. OTSSQLITE::CDBQueryBasePtr CSTDGroupDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)
  104. {
  105. return myDB->GetTableQuery();
  106. }
  107. }