ParticleSTDDB.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #include "stdafx.h"
  2. #include "ParticleSTDDB.h"
  3. #include "ParticleSTDTable.h"
  4. #include "ParticleSTD.h"
  5. namespace OTSClassifyEngine
  6. {
  7. using namespace OTSSQLITE;
  8. CParticleSTDDB::CParticleSTDDB(CDBStoreBasePtr a_datastore)
  9. {
  10. m_tableInfo.reset(new CParticleSTDTable());
  11. myDB = CreateNewSQLiteDB(a_datastore, m_tableInfo);
  12. }
  13. CParticleSTDDB::~CParticleSTDDB()
  14. {
  15. }
  16. CDBTableBasePtr CParticleSTDDB::GetTableInfo()
  17. {
  18. /*if (!m_tableInfo)
  19. {
  20. m_tableInfo.reset(new CSTDDataTable);
  21. }*/
  22. return m_tableInfo;
  23. }
  24. BOOL CParticleSTDDB::Init(const BOOL a_bClean /*= FALSE*/)
  25. {
  26. return myDB->Init(a_bClean);
  27. }
  28. BOOL CParticleSTDDB::CreateTable(const BOOL a_bForce /*= FALSE*/)
  29. {
  30. return myDB->CreateTable(a_bForce);
  31. }
  32. BOOL CParticleSTDDB::DeleteTable()
  33. {
  34. return myDB->DeleteTable();
  35. }
  36. BOOL CParticleSTDDB::RemoveAllRows()
  37. {
  38. return myDB->RemoveAllRows();
  39. }
  40. BOOL CParticleSTDDB::IsDBExist()
  41. {
  42. return myDB->IsDBExist();
  43. }
  44. OTSSQLITE::CDBStoreBasePtr CParticleSTDDB::GetDatastore()
  45. {
  46. return myDB->GetDatastore();
  47. }
  48. OTSSQLITE::CDBQueryBasePtr CParticleSTDDB::GetTableQuery(LPCTSTR a_sOrderColumnName /*= nullptr*/)
  49. {
  50. return myDB->GetTableQuery(a_sOrderColumnName);
  51. }
  52. ParticleSTDPtr CParticleSTDDB::GetPartSTDLib(ParticleSTDPtr partStd,BOOL bForce/* = FALSE*/)
  53. {
  54. if (bForce)
  55. {
  56. partStd->PartSTDItemListClear();
  57. }
  58. auto query = GetTableQuery("STDId");
  59. ASSERT(query);
  60. if (!query)
  61. {
  62. return FALSE;
  63. }
  64. auto partstdlist= ReadParticleSTDList(query);
  65. partStd->setSTDList(partstdlist);
  66. //m_pOretype->SetName(_T(""));
  67. return partStd;
  68. }
  69. PartSTDItemList CParticleSTDDB::ReadParticleSTDList(CDBQueryBasePtr a_query)
  70. {
  71. PartSTDItemList listSTDItem;
  72. int nRowId = 0;
  73. int nWrongItems = 0;
  74. while (!a_query->IsEOF())
  75. {
  76. if (!ReadParticleSTDItem(a_query)) //current x-ray point
  77. {
  78. LogErrorTrace(__FILE__, __LINE__, _T("Read xray point failed"));
  79. nWrongItems++;
  80. break;
  81. }
  82. listSTDItem.push_back(m_pSTDItem);
  83. a_query->NextRow();
  84. nRowId++;
  85. }
  86. return listSTDItem;
  87. }
  88. BOOL CParticleSTDDB::ReadParticleSTDItem(CDBQueryBasePtr a_query)
  89. {
  90. int nCol;
  91. m_pSTDItem = PartSTDItemPtr(new PartSTDItem());
  92. int nIncAIdNow;
  93. nCol = (int)CParticleSTDTable::ColumnID::N_STDId - (int)CParticleSTDTable::ColumnID::MIN;
  94. nIncAIdNow = a_query->GetColIntValue(nCol, -1);
  95. m_pSTDItem->SetID(nIncAIdNow);
  96. CString sIncAName;
  97. nCol = (int)CParticleSTDTable::ColumnID::S_StrName - (int)CParticleSTDTable::ColumnID::MIN;
  98. sIncAName = a_query->GetColStringValue(nCol, _T(""));
  99. m_pSTDItem->SetName(sIncAName.GetString());
  100. CString sColor;
  101. nCol = (int)CParticleSTDTable::ColumnID::S_COLOR - (int)CParticleSTDTable::ColumnID::MIN;
  102. sColor = a_query->GetColStringValue(nCol, _T(""));
  103. m_pSTDItem->SetColor(sColor.GetString());
  104. CString sKeyElementList;
  105. nCol = (int)CParticleSTDTable::ColumnID::S_KeyElementList - (int)CParticleSTDTable::ColumnID::MIN;
  106. sKeyElementList = a_query->GetColStringValue(nCol, _T(""));
  107. std::vector < std::string> keyeleStrlist;
  108. xmls::SplitString(sKeyElementList.GetBuffer(), keyeleStrlist, ",");
  109. CElementsList elelist;
  110. for (auto s : keyeleStrlist)
  111. {
  112. CElementPtr ele = CElementPtr(new CElement(s.c_str()));
  113. elelist.push_back(ele);
  114. }
  115. m_pSTDItem->SetKeyElementList(elelist);
  116. CString sSubElementList;
  117. nCol = (int)CParticleSTDTable::ColumnID::S_SubElementList - (int)CParticleSTDTable::ColumnID::MIN;
  118. sSubElementList = a_query->GetColStringValue(nCol, _T(""));
  119. std::vector < std::string> SubeleStrlist;
  120. xmls::SplitString(sSubElementList.GetBuffer(), SubeleStrlist, ",");
  121. elelist.clear();
  122. for (auto s : SubeleStrlist)
  123. {
  124. CElementPtr ele = CElementPtr(new CElement(s.c_str()));
  125. elelist.push_back(ele);
  126. }
  127. m_pSTDItem->SetSubElementList(elelist);
  128. CString sUsingImgPropertyList;
  129. nCol = (int)CParticleSTDTable::ColumnID::S_UsingImgPropertyList - (int)CParticleSTDTable::ColumnID::MIN;
  130. sUsingImgPropertyList = a_query->GetColStringValue(nCol, _T(""));
  131. std::vector < std::string> UsingImgPropertyeleStrlist;
  132. xmls::SplitString(sUsingImgPropertyList.GetBuffer(), UsingImgPropertyeleStrlist, ",");
  133. std::vector<std::string> val;
  134. for (auto s : UsingImgPropertyeleStrlist)
  135. {
  136. val.push_back(s);
  137. }
  138. m_pSTDItem->SetUsingImgPropertyNameList(val);
  139. CString sUsingOtherPropertyList;
  140. nCol = (int)CParticleSTDTable::ColumnID::S_UsingOtherPropertyList - (int)CParticleSTDTable::ColumnID::MIN;
  141. sUsingOtherPropertyList = a_query->GetColStringValue(nCol, _T(""));
  142. std::vector < std::string> UsingOtherPropertyStrlist;
  143. xmls::SplitString(sUsingOtherPropertyList.GetBuffer(), UsingOtherPropertyStrlist, ",");
  144. val.clear();
  145. for (auto s : UsingOtherPropertyStrlist)
  146. {
  147. val.push_back(s);
  148. }
  149. m_pSTDItem->SetUsingOtherpropertyList(val);
  150. CString sExpression;
  151. nCol = (int)CParticleSTDTable::ColumnID::S_Expression - (int)CParticleSTDTable::ColumnID::MIN;
  152. sExpression = a_query->GetColStringValue(nCol, _T(""));
  153. m_pSTDItem->SetExpressionStr(sExpression.GetString());
  154. std::string dHardness;
  155. nCol = (int)CParticleSTDTable::ColumnID::S_Hardness - (int)CParticleSTDTable::ColumnID::MIN;
  156. dHardness = a_query->GetColStringValue(nCol, _T(""));
  157. m_pSTDItem->SetHardness(dHardness);
  158. std::string dDensity;
  159. nCol = (int)CParticleSTDTable::ColumnID::S_Density - (int)CParticleSTDTable::ColumnID::MIN;
  160. dDensity = a_query->GetColStringValue(nCol, _T(""));
  161. m_pSTDItem->SetDensity(dDensity);
  162. std::string dElectrical_conductivity;
  163. nCol = (int)CParticleSTDTable::ColumnID::S_Electrical_conductivity - (int)CParticleSTDTable::ColumnID::MIN;
  164. dElectrical_conductivity = a_query->GetColStringValue(nCol, _T(""));
  165. m_pSTDItem->SetElectrical_conductivity(dElectrical_conductivity);
  166. int nBSE;
  167. nCol = (int)CParticleSTDTable::ColumnID::N_BSE - (int)CParticleSTDTable::ColumnID::MIN;
  168. nBSE = a_query->GetColIntValue(nCol, -1);
  169. m_pSTDItem->SetBSE(nBSE);
  170. CString sFormula;
  171. nCol = (int)CParticleSTDTable::ColumnID::S_Formula - (int)CParticleSTDTable::ColumnID::MIN;
  172. sFormula = a_query->GetColStringValue(nCol, _T(""));
  173. m_pSTDItem->SetFormula(sFormula.GetString());
  174. CString sElement;
  175. nCol = (int)CParticleSTDTable::ColumnID::S_Element - (int)CParticleSTDTable::ColumnID::MIN;
  176. sElement = a_query->GetColStringValue(nCol, _T(""));
  177. m_pSTDItem->SetElement(sElement.GetString());
  178. return TRUE;
  179. }
  180. }