123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "CDSVmsIxrF.h"
- #include "ITS_OPLibF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- //---------------------------------------------------------------------------
- TVmsIxrManager *VmsIxrManager = NULL;
- //---------------------------------------------------------------------------
- TVmsIxrManager::TVmsIxrManager()
- {
- }
- //---------------------------------------------------------------------------
- TVmsIxrManager::~TVmsIxrManager()
- {
- FLists.RemoveAll();
- }
- //---------------------------------------------------------------------------
- bool TVmsIxrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- FLists.Lock();
- try
- {
- FLists.RemoveAll();
- }
- __finally
- {
- FLists.UnLock();
- }
- sQry = "SELECT A.* \r\n"
- " FROM TB_VMS_RLTN_IXR A \r\n"
- " ORDER BY A.VMS_CTLR_NMBR, A.ORD \r\n";
- FLists.Lock();
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString;
-
- TVmsIxr *pVms = FLists.Find(VMS_CTLR_NMBR);
- if (!pVms) {
- pVms = new TVmsIxr();
- pVms->VMS_CTLR_NMBR = VMS_CTLR_NMBR;
- FLists.Push(VMS_CTLR_NMBR, pVms);
- }
- if (!pVms) {
- continue;
- }
-
- TVmsRltnIxr *pObj = new TVmsRltnIxr();
- pObj->VMS_CTLR_NMBR = VMS_CTLR_NMBR;
- pObj->SGNL_IXR_NMBR = pADO->FieldByName("SGNL_IXR_NMBR")->AsString;
- pObj->ORD = pADO->FieldByName("ORD")->AsInteger;
- pVms->FLists.Push(pObj->ORD, pObj);
- }
- }
- catch(EDatabaseError &E)
- {
- DBERRORMSG("VMS 긴급차량우선신호 교차로 정보 조회", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &e)
- {
- DBERRORMSG("VMS 긴급차량우선신호 교차로 정보 조회", String(e.ClassName()), e.Message, sQry);
- throw Exception(String(e.ClassName()) + e.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- FLists.UnLock();
- }
- return true;
- }
- //---------------------------------------------------------------------------
- bool TVmsIxrManager::DeleteVmsIxr(TVmsIxr *AObj, TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- try
- {
- String VMS_CTLR_NMBR = AObj->VMS_CTLR_NMBR;
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- sQry = "DELETE FROM TB_VMS_RLTN_IXR WHERE VMS_CTLR_NMBR = :p01";
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_NMBR;
- pADO->ExecSQL();
- return true;
- }
- catch(EDatabaseError &E)
- {
- DBERRORLOG("VMS 긴급차량우선신호 교차로 삭제", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &e)
- {
- DBERRORLOG("VMS 긴급차량우선신호 교차로 삭제", String(e.ClassName()), e.Message, sQry);
- throw Exception(String(e.ClassName()) + e.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- }
- return true;
- }
- //---------------------------------------------------------------------------
- bool TVmsIxrManager::MergeVmsIxr(TVmsIxr *AObj, TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- int ii;
- try
- {
- try
- {
- DeleteVmsIxr(AObj, ADbConn);
-
- sQry = "INSERT INTO TB_VMS_RLTN_IXR(VMS_CTLR_NMBR, SGNL_IXR_NMBR, ORD) VALUES(:p01, :p02, :p03)";
-
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- ii = 0;
- FOR_STL(TVmsRltnIxr *, pIxr, AObj->FLists)
- {
- pIxr->ORD = ii+1;
- pADO->Parameters->ParamByName("p01")->Value = pIxr->VMS_CTLR_NMBR;
- pADO->Parameters->ParamByName("p02")->Value = pIxr->SGNL_IXR_NMBR;
- pADO->Parameters->ParamByName("p03")->Value = String(pIxr->ORD);
- pADO->ExecSQL();
- ii++;
- }
- return true;
- }
- catch(EDatabaseError &E)
- {
- DBERRORLOG("VMS 긴급차량우선신호 교차로 정보저장", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &e)
- {
- DBERRORLOG("VMS 긴급차량우선신호 교차로 정보저장", String(e.ClassName()), e.Message, sQry);
- throw Exception(String(e.ClassName()) + e.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- }
- return true;
- }
- //---------------------------------------------------------------------------
|