//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSSgnlCtlrF.h" #include "ITS_OPLibF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TSgnlCtlrManager *SgnlCtlrManager = NULL; //--------------------------------------------------------------------------- TSgnlCtlrManager::TSgnlCtlrManager() { } //--------------------------------------------------------------------------- TSgnlCtlrManager::~TSgnlCtlrManager() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- bool TSgnlCtlrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.SGNL_IXR_NMBR, A.X_CRDN/1000000 AS X_CRDN, A.Y_CRDN/1000000 AS Y_CRDN, \r\n" " B.IXR_NM AS IXR_NM, \r\n" " NVL(B.NODE_ID, 0) AS NODE_ID, \r\n" " NVL(B.CCTV_TYPE, 0) AS CCTV_TYPE, \r\n" " NVL(B.CCTV_NMBR, 0) AS CCTV_NMBR \r\n" " FROM SGNL_CTLR A \r\n" " LEFT OUTER JOIN SGNL_IXR_MNGM B \r\n" " ON A.SGNL_IXR_NMBR = B.SGNL_IXR_NMBR \r\n" " ORDER BY A.SGNL_IXR_NMBR \r\n"; FLists.Lock(); try { FLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TSgnlCtlr *pObj = new TSgnlCtlr(); pObj->SGNL_IXR_NMBR = pADO->FieldByName("SGNL_IXR_NMBR")->AsString; pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsFloat; pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat; pObj->IXR_NM = pADO->FieldByName("IXR_NM")->AsString.Trim(); pObj->NODE_ID = pADO->FieldByName("NODE_ID")->AsString; pObj->CCTV_TYPE = pADO->FieldByName("CCTV_TYPE")->AsInteger; pObj->CCTV_NMBR = pADO->FieldByName("CCTV_NMBR")->AsString; pObj->CTLR_NMBR = pObj->SGNL_IXR_NMBR; pObj->CTLR_ID = pObj->SGNL_IXR_NMBR; pObj->NAME = pObj->IXR_NM; FLists.Push(pObj->SGNL_IXR_NMBR, pObj); } } catch(EDatabaseError &E) { DBERRORMSG("TSgnlCtlrManager::LoadFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TSgnlCtlrManager::LoadFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //---------------------------------------------------------------------------