CDSMonitoringObjF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "AppGlobalF.h"
  4. #include "CDSMonitoringObjF.h"
  5. #include <inifiles.hpp>
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. //---------------------------------------------------------------------------
  9. TMonitoringScreenManager *ObjScreenManager = NULL;
  10. //---------------------------------------------------------------------------
  11. TMonitoringScreenManager::TMonitoringScreenManager()
  12. {
  13. }
  14. //---------------------------------------------------------------------------
  15. TMonitoringScreenManager::~TMonitoringScreenManager()
  16. {
  17. FLists.RemoveAll();
  18. }
  19. //---------------------------------------------------------------------------
  20. void TMonitoringScreenManager::Init()
  21. {
  22. FLists.RemoveAll();
  23. }
  24. //---------------------------------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. TMonitoringCtlrManager *ObjCtlrManager = NULL;
  27. //---------------------------------------------------------------------------
  28. TMonitoringCtlrManager::TMonitoringCtlrManager(int AMonitoringType)
  29. {
  30. String sAppName = ChangeFileExt(ExtractFileName(Application->ExeName), ".ini");
  31. String sCfgDir = ExtractFilePath(Application->ExeName) + "Cfg\\";
  32. FCfgFile = sCfgDir + sAppName;
  33. FMonitoringType = AMonitoringType;
  34. }
  35. //---------------------------------------------------------------------------
  36. TMonitoringCtlrManager::~TMonitoringCtlrManager()
  37. {
  38. FLists.RemoveAll();
  39. }
  40. //---------------------------------------------------------------------------
  41. bool TMonitoringCtlrManager::LoadCtlrFromDb(TADOConnection *ADbConn/*=NULL*/)
  42. {
  43. try
  44. {
  45. FLists.Lock();
  46. FLists.RemoveAll();
  47. }
  48. __finally
  49. {
  50. FLists.UnLock();
  51. }
  52. TIniFile *pIniFile = NULL;
  53. pIniFile = new TIniFile(FCfgFile);
  54. try
  55. {
  56. FLists.Lock();
  57. try
  58. {
  59. String item;
  60. for(int ii = 1; ii <= 200; ii++)
  61. {
  62. item.printf(L"%03d", ii);
  63. String info = pIniFile->ReadString("CAMERA", item, "").Trim();
  64. if (info == "") {
  65. continue;
  66. }
  67. TStringList *pStringList = new TStringList;
  68. try {
  69. try {
  70. pStringList->CommaText = info;
  71. if (pStringList->Count < 5) {
  72. continue;
  73. }
  74. TMonitoringCtlr *pObj = new TMonitoringCtlr();
  75. pObj->CTLR_NMBR = pStringList->Strings[0];
  76. pObj->ID = pStringList->Strings[1];
  77. pObj->CTLR_ID = pStringList->Strings[1];
  78. pObj->NAME = pStringList->Strings[2];
  79. pObj->CTLR_IP = pStringList->Strings[3];
  80. pObj->STRM_ADDR = pStringList->Strings[4];
  81. pObj->FULL_STRM_ADDR = pObj->STRM_ADDR;
  82. if (pStringList->Count > 5) {
  83. pObj->FULL_STRM_ADDR = pStringList->Strings[5];
  84. }
  85. FLists.Push(pObj->CTLR_NMBR, pObj);
  86. } catch(Exception &e) {
  87. }
  88. } __finally {
  89. if (pStringList) delete pStringList;
  90. }
  91. }
  92. }
  93. catch(EDatabaseError &E)
  94. {
  95. throw Exception(String(E.ClassName()) + E.Message);
  96. }
  97. catch(Exception &e)
  98. {
  99. throw Exception(String(e.ClassName()) + e.Message);
  100. }
  101. }
  102. __finally
  103. {
  104. FLists.UnLock();
  105. if (pIniFile) delete pIniFile;
  106. pIniFile = NULL;
  107. }
  108. return true;
  109. }
  110. //---------------------------------------------------------------------------
  111. bool TMonitoringCtlrManager::InitMonitoringFormFromDb(TADOConnection *ADbConn/*=NULL*/)
  112. {
  113. TIniFile *pIniFile = NULL;
  114. pIniFile = new TIniFile(FCfgFile);
  115. try {
  116. String item;
  117. int COUNT = 0;
  118. for (int ii = 1; ii <= MAX_CAMERA_SCREEM; ii++) {
  119. item.printf(L"%03d", ii);
  120. String MONITORING_NM = pIniFile->ReadString("MONITORING", item, "").Trim();
  121. if (MONITORING_NM != "") {
  122. COUNT++;
  123. break;
  124. }
  125. }
  126. if (COUNT <= 0) {
  127. // 기본 모니터링 화면 생성
  128. String section = "기본";
  129. pIniFile->WriteString("MONITORING", "COUNT", "1");
  130. pIniFile->WriteString("MONITORING", "001", section);
  131. int nFormCnt = 0;
  132. FOR_STL(TMonitoringCtlr*, pObj, FLists)
  133. {
  134. nFormCnt++;
  135. item.printf(L"%03d", nFormCnt);
  136. pIniFile->WriteString(section, item, pObj->CTLR_NMBR);
  137. if (nFormCnt == 16) break;
  138. }
  139. }
  140. }
  141. __finally
  142. {
  143. if (pIniFile) delete pIniFile;
  144. pIniFile = NULL;
  145. }
  146. return true;
  147. }
  148. //---------------------------------------------------------------------------
  149. bool TMonitoringCtlrManager::LoadMonitoringFormFromDb(TADOConnection *ADbConn/*=NULL*/)
  150. {
  151. String sQry;
  152. TADOQuery *pADO = NULL;
  153. if (ObjScreenManager == NULL)
  154. {
  155. ObjScreenManager = new TMonitoringScreenManager();
  156. }
  157. ObjScreenManager->Init();
  158. TIniFile *pIniFile = NULL;
  159. pIniFile = new TIniFile(FCfgFile);
  160. try {
  161. String item;
  162. for (int nForms = 1; nForms <= MAX_CAMERA_SCREEM; nForms++) {
  163. item.printf(L"%03d", nForms);
  164. String MONITORING_NM = pIniFile->ReadString("MONITORING", item, "").Trim();
  165. if (MONITORING_NM == "") {
  166. continue;
  167. }
  168. String seq;
  169. for(int ii = 1; ii <= MAX_CAMERA_PER_SCREEM; ii++)
  170. {
  171. seq.printf(L"%03d", ii);
  172. String cameraId = pIniFile->ReadString(MONITORING_NM, seq, "").Trim();
  173. if (cameraId == "") {
  174. continue;
  175. }
  176. TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(MONITORING_NM);
  177. if (!pObj)
  178. {
  179. pObj = new TMonitoringScreen();
  180. pObj->SEQ = ii;
  181. pObj->NAME = MONITORING_NM;
  182. ObjScreenManager->FLists.Push(pObj->NAME, pObj);
  183. }
  184. TMonitoringCtlr *pCamera = FLists.Find(cameraId);
  185. if (pCamera) {
  186. TScreenCtlr *pScr = new TScreenCtlr();
  187. pScr->SEQ = pObj->FLists.Size()+1;
  188. pScr->CTLR_NMBR = cameraId;
  189. pScr->VIEW_MODE = 1;
  190. pObj->FLists.Push(pScr->SEQ, pScr);
  191. }
  192. }
  193. }
  194. }
  195. __finally
  196. {
  197. if (pIniFile) delete pIniFile;
  198. pIniFile = NULL;
  199. FLists.UnLock();
  200. FOR_STL(TMonitoringScreen*, pObj, ObjScreenManager->FLists)
  201. {
  202. int nCtlrCount = pObj->FLists.Size();
  203. switch(nCtlrCount)
  204. {
  205. case 0: case 1: pObj->LAYOUT = 0; break; //1*1
  206. case 2: case 3: case 4: pObj->LAYOUT = 1; break; //2*2
  207. case 5: case 6: pObj->LAYOUT = 3; break; //3*2
  208. case 7: case 8: case 9: pObj->LAYOUT = 2; break; //3*3
  209. case 10: case 11: case 12: pObj->LAYOUT = 4; break; //4*3
  210. case 13: case 14: case 15: case 16: pObj->LAYOUT = 5; break; //4*4
  211. case 17: case 18: case 19: case 20: pObj->LAYOUT = 7; break; //5*4
  212. case 21: case 22: case 23: case 24: pObj->LAYOUT = 8; break; //6*4
  213. case 25: case 26: case 27: case 28:
  214. case 29: case 30: pObj->LAYOUT = 9; break; //6*5
  215. default:
  216. if (nCtlrCount <= 42) pObj->LAYOUT = 10; //7*6
  217. else if (nCtlrCount <= 56) pObj->LAYOUT = 11; //8*7
  218. else pObj->LAYOUT = 12; //8*8
  219. break;
  220. }
  221. }
  222. }
  223. return true;
  224. }
  225. //---------------------------------------------------------------------------
  226. bool TMonitoringCtlrManager::DelMonitoringFormFromDb(String AMonitoringName, String ANewFormName, TADOConnection *ADbConn/*=NULL*/)
  227. {
  228. String oldFormName = AMonitoringName.Trim();
  229. String newFormName = ANewFormName.Trim();
  230. TIniFile *pIniFile = NULL;
  231. pIniFile = new TIniFile(FCfgFile);
  232. String item;
  233. try {
  234. if (oldFormName != "") {
  235. // 기존 데이터 변경 또는 삭제
  236. // 화면에 속한 데이터 삭제
  237. pIniFile->EraseSection(oldFormName);
  238. if (newFormName != "") {
  239. // 기존 데이터 변경
  240. if (oldFormName == newFormName) {
  241. // 이름이 변경되지 않아 처리할 게 없음.
  242. }
  243. else {
  244. // 화면명칭 변경됨
  245. TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(oldFormName);
  246. if (pObj) {
  247. item.printf(L"%03d", pObj->SEQ);
  248. pIniFile->WriteString("MONITORING", item, newFormName);
  249. }
  250. }
  251. }
  252. else {
  253. // 기존 데이터 삭제
  254. //pIniFile->EraseSection("MONITORING");
  255. for (int ii = 1; ii <= MAX_CAMERA_SCREEM; ii++) {
  256. item.printf(L"%03d", ii);
  257. pIniFile->DeleteKey("MONITORING", item);
  258. }
  259. int nForms = 1;
  260. FOR_STL(TMonitoringScreen*, pScreen, ObjScreenManager->FLists) {
  261. if (oldFormName == pScreen->NAME) {
  262. continue;
  263. }
  264. item.printf(L"%03d", nForms++);
  265. pIniFile->WriteString("MONITORING", item, pScreen->NAME);
  266. }
  267. }
  268. }
  269. else {
  270. if (newFormName != "") {
  271. // 신규화면 추가
  272. item.printf(L"%03d", ObjScreenManager->FLists.Size() + 1);
  273. pIniFile->WriteString("MONITORING", item, newFormName);
  274. }
  275. }
  276. }
  277. __finally
  278. {
  279. if (pIniFile) delete pIniFile;
  280. pIniFile = NULL;
  281. }
  282. return true;
  283. }
  284. //---------------------------------------------------------------------------
  285. bool TMonitoringCtlrManager::InsMonitoringFormFromDb(String AMonitoringName, int ASeq, String ACtlrNmbr, int AViewMode, TADOConnection *ADbConn/*=NULL*/)
  286. {
  287. TIniFile *pIniFile = NULL;
  288. pIniFile = new TIniFile(FCfgFile);
  289. try {
  290. String item;
  291. item.printf(L"%03d", ASeq);
  292. pIniFile->WriteString(AMonitoringName, item, ACtlrNmbr);
  293. }
  294. __finally
  295. {
  296. if (pIniFile) delete pIniFile;
  297. pIniFile = NULL;
  298. }
  299. return true;
  300. }
  301. //---------------------------------------------------------------------------
  302. bool TMonitoringCtlrManager::SaveCameraInfo(int ASeq, String ANmbr, String AId, String ANm, String AIp, String AStream, String AFullStream/*=""*/)
  303. {
  304. TIniFile *pIniFile = NULL;
  305. pIniFile = new TIniFile(FCfgFile);
  306. String item;
  307. String data;
  308. try {
  309. if (ASeq == 1) {
  310. pIniFile->EraseSection("CAMERA_INFO");
  311. }
  312. item.printf(L"%03d", ASeq);
  313. if (AFullStream == "")
  314. data.printf(L"%s,%s,%s,%s,%s", ANmbr, AId, ANm, AIp, AStream);
  315. else
  316. data.printf(L"%s,%s,%s,%s,%s,%s", ANmbr, AId, ANm, AIp, AStream, AFullStream);
  317. pIniFile->WriteString("CAMERA_INFO", item, data);
  318. }
  319. __finally
  320. {
  321. if (pIniFile) delete pIniFile;
  322. pIniFile = NULL;
  323. }
  324. return true;
  325. }
  326. //---------------------------------------------------------------------------