CDSVmsIxrF.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSVmsIxrF.h"
  4. #include "ITS_OPLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. TVmsIxrManager *VmsIxrManager = NULL;
  9. //---------------------------------------------------------------------------
  10. TVmsIxrManager::TVmsIxrManager()
  11. {
  12. }
  13. //---------------------------------------------------------------------------
  14. TVmsIxrManager::~TVmsIxrManager()
  15. {
  16. FLists.RemoveAll();
  17. }
  18. //---------------------------------------------------------------------------
  19. bool TVmsIxrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  20. {
  21. String sQry;
  22. TADOQuery *pADO = NULL;
  23. FLists.Lock();
  24. try
  25. {
  26. FLists.RemoveAll();
  27. }
  28. __finally
  29. {
  30. FLists.UnLock();
  31. }
  32. sQry = "SELECT A.* \r\n"
  33. " FROM TB_VMS_RLTN_IXR A \r\n"
  34. " ORDER BY A.VMS_CTLR_NMBR, A.ORD \r\n";
  35. FLists.Lock();
  36. try
  37. {
  38. try
  39. {
  40. pADO = new TADOQuery(NULL);
  41. pADO->Close();
  42. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  43. pADO->SQL->Clear();
  44. pADO->SQL->Text = sQry;
  45. pADO->Open();
  46. for( ; !pADO->Eof; pADO->Next())
  47. {
  48. String VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString;
  49. TVmsIxr *pVms = FLists.Find(VMS_CTLR_NMBR);
  50. if (!pVms) {
  51. pVms = new TVmsIxr();
  52. pVms->VMS_CTLR_NMBR = VMS_CTLR_NMBR;
  53. FLists.Push(VMS_CTLR_NMBR, pVms);
  54. }
  55. if (!pVms) {
  56. continue;
  57. }
  58. TVmsRltnIxr *pObj = new TVmsRltnIxr();
  59. pObj->VMS_CTLR_NMBR = VMS_CTLR_NMBR;
  60. pObj->SGNL_IXR_NMBR = pADO->FieldByName("SGNL_IXR_NMBR")->AsString;
  61. pObj->ORD = pADO->FieldByName("ORD")->AsInteger;
  62. pVms->FLists.Push(pObj->ORD, pObj);
  63. }
  64. }
  65. catch(EDatabaseError &E)
  66. {
  67. DBERRORMSG("VMS 긴급차량우선신호 교차로 정보 조회", String(E.ClassName()), E.Message, sQry);
  68. throw Exception(String(E.ClassName()) + E.Message);
  69. }
  70. catch(Exception &e)
  71. {
  72. DBERRORMSG("VMS 긴급차량우선신호 교차로 정보 조회", String(e.ClassName()), e.Message, sQry);
  73. throw Exception(String(e.ClassName()) + e.Message);
  74. }
  75. }
  76. __finally
  77. {
  78. if (pADO)
  79. {
  80. pADO->Close();
  81. delete pADO;
  82. }
  83. FLists.UnLock();
  84. }
  85. return true;
  86. }
  87. //---------------------------------------------------------------------------
  88. bool TVmsIxrManager::DeleteVmsIxr(TVmsIxr *AObj, TADOConnection *ADbConn/*=NULL*/)
  89. {
  90. String sQry;
  91. TADOQuery *pADO = NULL;
  92. try
  93. {
  94. String VMS_CTLR_NMBR = AObj->VMS_CTLR_NMBR;
  95. try
  96. {
  97. pADO = new TADOQuery(NULL);
  98. pADO->Close();
  99. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  100. sQry = "DELETE FROM TB_VMS_RLTN_IXR WHERE VMS_CTLR_NMBR = :p01";
  101. pADO->SQL->Clear();
  102. pADO->SQL->Text = sQry;
  103. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_NMBR;
  104. pADO->ExecSQL();
  105. return true;
  106. }
  107. catch(EDatabaseError &E)
  108. {
  109. DBERRORLOG("VMS 긴급차량우선신호 교차로 삭제", String(E.ClassName()), E.Message, sQry);
  110. throw Exception(String(E.ClassName()) + E.Message);
  111. }
  112. catch(Exception &e)
  113. {
  114. DBERRORLOG("VMS 긴급차량우선신호 교차로 삭제", String(e.ClassName()), e.Message, sQry);
  115. throw Exception(String(e.ClassName()) + e.Message);
  116. }
  117. }
  118. __finally
  119. {
  120. if (pADO)
  121. {
  122. pADO->Close();
  123. delete pADO;
  124. }
  125. }
  126. return true;
  127. }
  128. //---------------------------------------------------------------------------
  129. bool TVmsIxrManager::MergeVmsIxr(TVmsIxr *AObj, TADOConnection *ADbConn/*=NULL*/)
  130. {
  131. String sQry;
  132. TADOQuery *pADO = NULL;
  133. int ii;
  134. try
  135. {
  136. try
  137. {
  138. DeleteVmsIxr(AObj, ADbConn);
  139. sQry = "INSERT INTO TB_VMS_RLTN_IXR(VMS_CTLR_NMBR, SGNL_IXR_NMBR, ORD) VALUES(:p01, :p02, :p03)";
  140. pADO = new TADOQuery(NULL);
  141. pADO->Close();
  142. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  143. pADO->SQL->Clear();
  144. pADO->SQL->Text = sQry;
  145. ii = 0;
  146. FOR_STL(TVmsRltnIxr *, pIxr, AObj->FLists)
  147. {
  148. pIxr->ORD = ii+1;
  149. pADO->Parameters->ParamByName("p01")->Value = pIxr->VMS_CTLR_NMBR;
  150. pADO->Parameters->ParamByName("p02")->Value = pIxr->SGNL_IXR_NMBR;
  151. pADO->Parameters->ParamByName("p03")->Value = String(pIxr->ORD);
  152. pADO->ExecSQL();
  153. ii++;
  154. }
  155. return true;
  156. }
  157. catch(EDatabaseError &E)
  158. {
  159. DBERRORLOG("VMS 긴급차량우선신호 교차로 정보저장", String(E.ClassName()), E.Message, sQry);
  160. throw Exception(String(E.ClassName()) + E.Message);
  161. }
  162. catch(Exception &e)
  163. {
  164. DBERRORLOG("VMS 긴급차량우선신호 교차로 정보저장", String(e.ClassName()), e.Message, sQry);
  165. throw Exception(String(e.ClassName()) + e.Message);
  166. }
  167. }
  168. __finally
  169. {
  170. if (pADO)
  171. {
  172. pADO->Close();
  173. delete pADO;
  174. }
  175. }
  176. return true;
  177. }
  178. //---------------------------------------------------------------------------