//--------------------------------------------------------------------------- #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) { FMonitoringType = AMonitoringType; } //--------------------------------------------------------------------------- TMonitoringCtlrManager::~TMonitoringCtlrManager() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- bool TMonitoringCtlrManager::LoadCtlrFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; try { FLists.Lock(); FLists.RemoveAll(); } __finally { FLists.UnLock(); } sQry = "SELECT A.* \r\n" " FROM MST_CCAM A \r\n" " WHERE A.DEL_YN = 'N' \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()) { TMonitoringCtlr *pObj = new TMonitoringCtlr(); pObj->CCAM_ID = pADO->FieldByName("CAM_ID")->AsString; pObj->ID = pADO->FieldByName("CAM_ID")->AsString; pObj->CTLR_ID = pADO->FieldByName("CAM_ID")->AsString; pObj->NAME = pADO->FieldByName("NAME")->AsString; pObj->CTLR_IP = pADO->FieldByName("IP")->AsString; pObj->INFO1 = pADO->FieldByName("RTSP_PORT")->AsString; pObj->STRM_IP = pADO->FieldByName("IP")->AsString; pObj->STRM_ID = pADO->FieldByName("ID")->AsString; pObj->STRM_PSWD = pADO->FieldByName("PW")->AsString; pObj->STRM_URL = pADO->FieldByName("RTSP_URL")->AsString; //rtsp://100.100.10.51:554/3034/video1 //rtsp://user:password@100.100.10.51:554/3034/video1 pObj->INFO1 = pObj->INFO1.Trim(); if (pObj->INFO1 != "" && pObj->INFO1 != "554") { pObj->STRM_ADDR = "rtsp://" + pObj->STRM_IP + ":" + pObj->INFO1 + "/" + pObj->STRM_URL; } else { pObj->STRM_ADDR = "rtsp://" + pObj->STRM_IP + "/" + pObj->STRM_URL; } pObj->FULL_STRM_ADDR = pObj->STRM_ADDR; FLists.Push(pObj->CCAM_ID, pObj); } } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::LoadCtlrFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::LoadCtlrFromDb", 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 TMonitoringCtlrManager::InitMonitoringFormFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; // ¸ð´ÏÅ͸µÀ¯Çü(1:Çö½Ã,2,½Ã³ª¸®¿À,3,¿µ»ó) sQry = "SELECT COUNT(1) AS CNT \r\n" " FROM TB_CCAM_MONITORING \r\n" " WHERE MONITORING_TYPE = :p01 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = String(FMonitoringType); pADO->Open(); int nFormCnt = pADO->FieldByName("CNT")->AsInteger; if (nFormCnt > 0) return true; sQry = "INSERT INTO TB_CCAM_MONITORING ( \r\n" " MONITORING_TYPE, \r\n" " MONITORING_NM, \r\n" " MONITORING_SEQ, \r\n" " CCAM_ID, \r\n" " VIEW_MODE \r\n" " ) \r\n" " VALUES ( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " 0 \r\n" " ) \r\n"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; String sFormName = "Default"; nFormCnt = 0; FOR_STL(TMonitoringCtlr*, pObj, FLists) { if (nFormCnt++ > 16) break; /* ÇÑÈ­¸é¿¡ ÃÖ´ë 64°³ ±îÁö ¼³Á¤ */ pADO->Parameters->ParamByName("p01")->Value = String(FMonitoringType); pADO->Parameters->ParamByName("p02")->Value = sFormName; pADO->Parameters->ParamByName("p03")->Value = String(nFormCnt); pADO->Parameters->ParamByName("p04")->Value = pObj->CCAM_ID; pADO->ExecSQL(); //pADO->RowsAffected; } } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::InitMonitoringFormFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::InitMonitoringFormFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TMonitoringCtlrManager::LoadMonitoringFormFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; if (ObjScreenManager == NULL) { ObjScreenManager = new TMonitoringScreenManager(); } ObjScreenManager->Init(); sQry = "SELECT TRIM(A.MONITORING_NM) AS MONITORING_NM, \r\n" " A.MONITORING_SEQ, \r\n" " A.CCAM_ID, \r\n" " A.VIEW_MODE \r\n" " FROM TB_CCAM_MONITORING A, MST_CCAM B \r\n" " WHERE B.DEL_YN = 'N' \r\n" " AND B.CAM_ID = A.CCAM_ID \r\n" " AND A.MONITORING_TYPE = :p01 \r\n" " ORDER BY A.MONITORING_NM, A.MONITORING_SEQ \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->Parameters->ParamByName("p01")->Value = String(FMonitoringType); pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { String MONITORING_NM = pADO->FieldByName("MONITORING_NM")->AsString; int MONITORING_SEQ = pADO->FieldByName("MONITORING_SEQ")->AsInteger; String CCAM_ID = pADO->FieldByName("CCAM_ID")->AsString; int VIEW_MODE = pADO->FieldByName("VIEW_MODE")->AsInteger; TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(MONITORING_NM); if (!pObj) { pObj = new TMonitoringScreen(); pObj->NAME = MONITORING_NM; ObjScreenManager->FLists.Push(pObj->NAME, pObj); } TScreenCtlr *pScr = new TScreenCtlr(); pScr->SEQ = pObj->FLists.Size()+1; pScr->CCAM_ID = CCAM_ID; pScr->VIEW_MODE = VIEW_MODE; pObj->FLists.Push(pScr->SEQ, pScr); } } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::LoadMonitoringFormFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::LoadMonitoringFormFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); FOR_STL(TMonitoringScreen*, pObj, ObjScreenManager->FLists) { int nCtlrCount = pObj->FLists.Size(); switch(nCtlrCount) { case 0: case 1: pObj->LAYOUT = 0; break; //1*1 case 2: case 3: case 4: pObj->LAYOUT = 1; break; //2*2 case 5: case 6: pObj->LAYOUT = 3; break; //3*2 case 7: case 8: case 9: pObj->LAYOUT = 2; break; //3*3 case 10: case 11: case 12: pObj->LAYOUT = 4; break; //4*3 case 13: case 14: case 15: case 16: pObj->LAYOUT = 5; break; //4*4 case 17: case 18: case 19: case 20: pObj->LAYOUT = 7; break; //5*4 case 21: case 22: case 23: case 24: pObj->LAYOUT = 8; break; //6*4 case 25: case 26: case 27: case 28: case 29: case 30: pObj->LAYOUT = 9; break; //6*5 default: if (nCtlrCount <= 42) pObj->LAYOUT = 10; //7*6 else if (nCtlrCount <= 56) pObj->LAYOUT = 11; //8*7 else pObj->LAYOUT = 12; //8*8 break; } } } return true; } //--------------------------------------------------------------------------- bool TMonitoringCtlrManager::DelMonitoringFormFromDb(String AMonitoringName, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "DELETE TB_CCAM_MONITORING \r\n" " WHERE MONITORING_TYPE = :p01 \r\n" " AND MONITORING_NM = :p02 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = String(FMonitoringType); pADO->Parameters->ParamByName("p02")->Value = AMonitoringName; pADO->ExecSQL(); //pADO->RowsAffected; } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::DelMonitoringFormFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::DelMonitoringFormFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TMonitoringCtlrManager::InsMonitoringFormFromDb(String AMonitoringName, int ASeq, String ACtlrNmbr, int AViewMode, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_CCAM_MONITORING ( \r\n" " MONITORING_TYPE, \r\n" " MONITORING_NM, \r\n" " MONITORING_SEQ, \r\n" " CCAM_ID, \r\n" " VIEW_MODE \r\n" " ) \r\n" " VALUES ( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05 \r\n" " ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = String(FMonitoringType); pADO->Parameters->ParamByName("p02")->Value = AMonitoringName; pADO->Parameters->ParamByName("p03")->Value = ASeq; pADO->Parameters->ParamByName("p04")->Value = ACtlrNmbr; pADO->Parameters->ParamByName("p05")->Value = AViewMode; pADO->ExecSQL(); //pADO->RowsAffected; } catch(EDatabaseError &E) { DBERRORMSG("TMonitoringCtlrManager::InsMonitoringFormFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TMonitoringCtlrManager::InsMonitoringFormFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //---------------------------------------------------------------------------