//--------------------------------------------------------------------------- #pragma hdrstop #include "AppGlobalF.h" #include "CDSMonitoringObjF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TMonitoringScreenManager *ObjScreenManager = NULL; //--------------------------------------------------------------------------- TMonitoringScreenManager::TMonitoringScreenManager() { } //--------------------------------------------------------------------------- TMonitoringScreenManager::~TMonitoringScreenManager() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- void TMonitoringScreenManager::Init() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TMonitoringCtlrManager *ObjCtlrManager = NULL; //--------------------------------------------------------------------------- TMonitoringCtlrManager::TMonitoringCtlrManager(int AMonitoringType) { } //--------------------------------------------------------------------------- TMonitoringCtlrManager::~TMonitoringCtlrManager() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- bool TMonitoringCtlrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; if (ObjScreenManager == NULL) { ObjScreenManager = new TMonitoringScreenManager(); } ObjScreenManager->Init(); sQry = "SELECT '[' || A.CROSS_ID || '] ' || A.NAME AS MONITORING_NM, A.NAME AS CROSS_NAME, \r\n" " A.CROSS_ID, A.CROSS_TYPE, NVL(A.X, 0) AS CROSS_X_CRDN, NVL(A.Y, 0) AS CROSS_Y_CRDN, \r\n" " B.CAM_ID, B.NAME AS CAM_NAME, B.IP AS CAM_IP, B.ID AS RTSP_ID, \r\n" " B.PW AS RTSP_PWD, B.RTSP_URL, NVL(B.RTSP_PORT, 0) AS RTSP_PORT, \r\n" " C.DIRECTION, NVL(C.X, 0) AS X_CRDN, NVL(C.Y, 0) AS Y_CRDN \r\n" " FROM MST_CROSS A, MST_CCAM B, MST_CCAM_ACCESS C \r\n" " WHERE A.DEL_YN = 'N' \r\n" " AND B.DEL_YN = 'N' \r\n" " AND A.CROSS_ID = B.CROSS_ID \r\n" " AND B.CAM_ID = C.CAM_ID \r\n" " ORDER BY A.CROSS_ID, C.DIRECTION \r\n"; try { FLists.Lock(); 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 NAME = pADO->FieldByName("MONITORING_NM")->AsString; TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(NAME); if (!pObj) { pObj = new TMonitoringScreen(); pObj->NAME = NAME; pObj->CROSS_ID = pADO->FieldByName("CROSS_ID")->AsString; pObj->CROSS_NAME = pADO->FieldByName("CROSS_NAME")->AsString; pObj->CROSS_TYPE = pADO->FieldByName("CROSS_TYPE")->AsString; pObj->X_CRDN = pADO->FieldByName("CROSS_X_CRDN")->AsFloat; pObj->Y_CRDN = pADO->FieldByName("CROSS_Y_CRDN")->AsFloat; ObjScreenManager->FLists.Push(pObj->NAME, pObj); } TScreenCtlr *pScr = new TScreenCtlr(); pScr->DIRECTION = pADO->FieldByName("DIRECTION")->AsInteger; pScr->DIRECTION += 1; // TODO: ±¸¹Ì ³Ø½ºÁ¨Àº 0ºÎÅÍ ½ÃÀÛ pScr->CAM_ID = pADO->FieldByName("CAM_ID")->AsString; pScr->CAM_NAME = pADO->FieldByName("CAM_NAME")->AsString; pScr->RTSP_ID = pADO->FieldByName("RTSP_ID")->AsString; pScr->RTSP_PWD = pADO->FieldByName("RTSP_PWD")->AsString; pScr->CAM_IP = pADO->FieldByName("CAM_IP")->AsString; pScr->RTSP_PORT = pADO->FieldByName("RTSP_PORT")->AsInteger; pScr->RTSP_URL = pADO->FieldByName("RTSP_URL")->AsString; pScr->X_CRDN = pADO->FieldByName("X_CRDN")->AsFloat; pScr->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat; //rtsp://100.100.10.51:554/3034/video1 //rtsp://user:password@100.100.10.51:554/3034/video1 if (pScr->RTSP_PORT != 554) { pScr->STRM_ADDR = "rtsp://" + pScr->CAM_IP + ":" + pScr->RTSP_PORT + "/" + pScr->RTSP_URL; } else { pScr->STRM_ADDR = "rtsp://" + pScr->CAM_IP + "/" + pScr->RTSP_URL; } pScr->FULL_STRM_ADDR = pScr->STRM_ADDR; pObj->FLists.Push(pScr->DIRECTION, pScr); } } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::LoadFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::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; } //---------------------------------------------------------------------------