//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSCrossF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- void TCrossCam::Copy(TCrossCam *AObj) { if (AObj) { AObj->CROSS_ID = CROSS_ID; AObj->CAM_ID = CAM_ID; AObj->CAM_NM = CAM_NM; AObj->DIRECTION = DIRECTION; AObj->ANGLE = ANGLE; AObj->IP = IP; AObj->ID = ID; AObj->PWD = PWD; AObj->RTSP_URL = RTSP_URL; AObj->RTSP_PORT = RTSP_PORT; AObj->HTTP_PORT = HTTP_PORT; } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TCross::TCross() { } //--------------------------------------------------------------------------- TCross::~TCross() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TCrossManager *CrossManager = NULL; //--------------------------------------------------------------------------- TCrossManager::TCrossManager() { } //--------------------------------------------------------------------------- TCrossManager::~TCrossManager() { FLists.RemoveAll(); FCamLists.RemoveAll(); } //--------------------------------------------------------------------------- bool TCrossManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.* \r\n" " FROM MST_CROSS A \r\n" " WHERE DEL_YN = 'N' \r\n"; FLists.Lock(); try { FLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TCross *pObj = new TCross(); pObj->CROSS_ID = pADO->FieldByName("CROSS_ID")->AsString; pObj->CROSS_NM = pADO->FieldByName("NAME")->AsString.Trim(); pObj->CROSS_TYPE = pADO->FieldByName("CROSS_TYPE")->AsString.Trim(); FLists.Push(pObj->CROSS_ID, pObj); } } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return LoadCrossCam(ADbConn); } //--------------------------------------------------------------------------- bool TCrossManager::LoadCrossCam(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FLists.Lock(); try { FOR_STL(TCross*, pObj, FLists) { pObj->FLists.RemoveAll(); } } __finally { FLists.UnLock(); } sQry = "SELECT A.CROSS_ID, B.CAM_ID, B.NAME, B.DEL_YN, C.DIRECTION, C.X, C.Y, C.ANGLE, \r\n" " B.IP, B.ID, B.PW, B.RTSP_URL, B.RTSP_PORT, B.HTTP_PORT, B.RIGHT_USE \r\n" " FROM MST_CROSS A, MST_CCAM B, MST_CCAM_ACCESS C \r\n" " WHERE A.CROSS_ID = B.CROSS_ID \r\n" " AND B.CAM_ID = C.CAM_ID \r\n" " AND A.DEL_YN = 'N' \r\n" " AND B.DEL_YN = 'N' \r\n" " ORDER BY A.CROSS_ID, B.CAM_ID \r\n"; try { String WCAM_CTLR_NMBR; FLists.Lock(); FCamLists.Lock(); FCamLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { String CROSS_ID = pADO->FieldByName("CROSS_ID")->AsString; TCross *pCross = FLists.Find(String(CROSS_ID)); if (!pCross) continue; TCrossCam *pObj = new TCrossCam(); if (pObj) { pObj->CROSS_ID = CROSS_ID; pObj->CAM_ID = pADO->FieldByName("CAM_ID")->AsString; pObj->CAM_NM = pADO->FieldByName("NAME")->AsString; pObj->DIRECTION = pADO->FieldByName("DIRECTION")->AsString.Trim(); pObj->ANGLE = pADO->FieldByName("ANGLE")->AsInteger; pObj->IP = pADO->FieldByName("IP")->AsString.Trim(); pObj->ID = pADO->FieldByName("ID")->AsString.Trim(); pObj->PWD = pADO->FieldByName("PW")->AsString.Trim(); pObj->RTSP_URL = pADO->FieldByName("RTSP_URL")->AsString.Trim(); pObj->RTSP_PORT = pADO->FieldByName("RTSP_PORT")->AsInteger; pObj->HTTP_PORT = pADO->FieldByName("HTTP_PORT")->AsInteger; pCross->FLists.Push(pObj->CAM_ID, pObj); TCrossCam *pObj2 = new TCrossCam(); pObj->Copy(pObj2); FCamLists.Push(pObj2->CAM_ID, pObj2); } } } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); FCamLists.UnLock(); } return true; } //---------------------------------------------------------------------------