CDSCrossF.cpp 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSCrossF.h"
  4. #include "ITS_OPLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. void TCrossCam::Copy(TCrossCam *AObj)
  9. {
  10. if (AObj)
  11. {
  12. AObj->CROSS_ID = CROSS_ID;
  13. AObj->CAM_ID = CAM_ID;
  14. AObj->CAM_NM = CAM_NM;
  15. AObj->DIRECTION = DIRECTION;
  16. AObj->X_CRDN = X_CRDN;
  17. AObj->Y_CRDN = Y_CRDN;
  18. AObj->ANGLE = ANGLE;
  19. AObj->IP = IP;
  20. AObj->ID = ID;
  21. AObj->PWD = PWD;
  22. AObj->RTSP_URL = RTSP_URL;
  23. AObj->RTSP_PORT = RTSP_PORT;
  24. AObj->HTTP_PORT = HTTP_PORT;
  25. AObj->TYPE_CD = TYPE_CD;
  26. AObj->DEL_YN = DEL_YN;
  27. AObj->CTLR_ID = CAM_ID;
  28. AObj->STRM_ADDR = RTSP_URL;
  29. //AObj->CTLR_NMBR = CROSS_ID;
  30. //AObj->CTLR_ID = CAM_ID;
  31. //AObj->CTLR_IP = CTLR_IP;
  32. //AObj->ISTL_LCTN_NM = ISTL_LCTN_NM;
  33. //AObj->ISTL_LCTN_ADDR = ISTL_LCTN_ADDR;
  34. }
  35. }
  36. //---------------------------------------------------------------------------
  37. //---------------------------------------------------------------------------
  38. TCross::TCross()
  39. {
  40. }
  41. //---------------------------------------------------------------------------
  42. TCross::~TCross()
  43. {
  44. }
  45. //---------------------------------------------------------------------------
  46. //---------------------------------------------------------------------------
  47. TCrossManager *CrossManager = NULL;
  48. //---------------------------------------------------------------------------
  49. TCrossManager::TCrossManager()
  50. {
  51. }
  52. //---------------------------------------------------------------------------
  53. TCrossManager::~TCrossManager()
  54. {
  55. FLists.RemoveAll();
  56. FCamLists.RemoveAll();
  57. }
  58. //---------------------------------------------------------------------------
  59. bool TCrossManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  60. {
  61. String sQry;
  62. TADOQuery *pADO = NULL;
  63. #ifdef USE_SC_TBL
  64. sQry = "SELECT A.IXR_ID, A.IXR_NM, A.IXR_TYPE, A.USE_EN, \r\n"
  65. " NVL(A.Y_CRDN, '0') AS Y_CRDN, \r\n"
  66. " NVL(A.X_CRDN, '0') AS X_CRDN \r\n"
  67. " FROM TB_SC_IXR_MNGM A \r\n";
  68. #else
  69. sQry = "SELECT A.* \r\n"
  70. " FROM TB_CRS A \r\n";
  71. #endif
  72. FLists.Lock();
  73. try
  74. {
  75. FLists.RemoveAll();
  76. try
  77. {
  78. pADO = new TADOQuery(NULL);
  79. pADO->Close();
  80. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  81. pADO->SQL->Clear();
  82. pADO->SQL->Text = sQry;
  83. pADO->Prepared = true;
  84. pADO->Open();
  85. for( ; !pADO->Eof; pADO->Next())
  86. {
  87. TCross *pObj = new TCross();
  88. #ifdef USE_SC_TBL
  89. pObj->CROSS_ID = pADO->FieldByName("IXR_ID")->AsString;
  90. pObj->CTLR_ID = pObj->CROSS_ID;
  91. pObj->CROSS_NM = pADO->FieldByName("IXR_NM")->AsString.Trim();
  92. pObj->CROSS_TYPE = pADO->FieldByName("IXR_TYPE")->AsString.Trim();
  93. pObj->X_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat;
  94. pObj->Y_CRDN = pADO->FieldByName("X_CRDN")->AsFloat;
  95. pObj->ZOOM_LEVEL = 0;
  96. pObj->LOCAL_GROUP_ID = "0";
  97. pObj->TYPE_CD = "CRS";
  98. pObj->DEL_YN = pADO->FieldByName("USE_EN")->AsInteger == 1 ? "N" : "Y";
  99. #else
  100. pObj->CROSS_ID = pADO->FieldByName("CROSS_ID")->AsString;
  101. pObj->CTLR_ID = pObj->CROSS_ID;
  102. pObj->CROSS_NM = pADO->FieldByName("NAME")->AsString.Trim();
  103. pObj->CROSS_TYPE = pADO->FieldByName("CROSS_TYPE")->AsString.Trim();
  104. pObj->X_CRDN = pADO->FieldByName("X")->AsFloat;
  105. pObj->Y_CRDN = pADO->FieldByName("Y")->AsFloat;
  106. pObj->ZOOM_LEVEL = pADO->FieldByName("ZOOM_LEVEL")->AsInteger;
  107. pObj->LOCAL_GROUP_ID = pADO->FieldByName("LOCAL_GROUP_ID")->AsString.Trim();
  108. pObj->TYPE_CD = "CRS";
  109. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString.Trim();
  110. #endif
  111. FLists.Push(pObj->CROSS_ID, pObj);
  112. pObj->Completed = true;
  113. }
  114. }
  115. catch(EDatabaseError &E)
  116. {
  117. DBERRORMSG("TCrossManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  118. throw Exception(String(E.ClassName()) + E.Message);
  119. }
  120. catch(Exception &e)
  121. {
  122. DBERRORMSG("TCrossManager::LoadFromDb", String(e.ClassName()), e.Message, sQry);
  123. throw Exception(String(e.ClassName()) + e.Message);
  124. }
  125. }
  126. __finally
  127. {
  128. if (pADO)
  129. {
  130. pADO->Close();
  131. delete pADO;
  132. }
  133. FLists.UnLock();
  134. }
  135. return LoadCrossCam(ADbConn);
  136. }
  137. //---------------------------------------------------------------------------
  138. bool TCrossManager::LoadCrossCam(TADOConnection *ADbConn/*=NULL*/)
  139. {
  140. String sQry;
  141. TADOQuery *pADO = NULL;
  142. FLists.Lock();
  143. try
  144. {
  145. FOR_STL(TCross*, pObj, FLists)
  146. {
  147. pObj->FLists.RemoveAll();
  148. }
  149. }
  150. __finally
  151. {
  152. FLists.UnLock();
  153. }
  154. #ifdef USE_SC_TBL
  155. sQry = "SELECT A.IXR_ID AS CROSS_ID, B.CMRA_ID AS CAM_ID, B.ISTL_LCTN AS NAME, \r\n"
  156. " DECODE(B.USE_EN, 1, 'N', 'Y') AS DEL_YN, \r\n"
  157. " C.DRCT_DVSN_CD AS DIRECTION, NVL(B.CMRA_Y_CRDN, 0) AS X, NVL(B.CMRA_X_CRDN, 0) AS Y, \r\n"
  158. " NVL(B.CMRA_ANGN, 0) AS ANGLE, \r\n"
  159. " B.CMRA_IP AS IP, B.CMRA_LOGN_ID AS ID, B.CMRA_LOGN_PW AS PW, \r\n"
  160. " B.CMRA_URL AS RTSP_URL, \r\n"
  161. " NVL(B.CMRA_PORT, 0) AS RTSP_PORT, NVL(B.CMRA_HTTP_PORT, 0) AS HTTP_PORT, \r\n"
  162. " 0 AS RIGHT_USE, C.DRCT_LCTN, B.HMPG_CMRA_URL AS HTTP_URL \r\n"
  163. " FROM TB_SC_IXR_MNGM A, TB_SC_CMRA_MNGM B, TB_SC_CMRA_DRCT_MNGM C \r\n"
  164. " WHERE A.IXR_ID = B.IXR_ID \r\n"
  165. " AND B.CMRA_ID = C.CMRA_ID \r\n"
  166. " AND B.IXR_ID = C.IXR_ID \r\n"
  167. " ORDER BY A.IXR_ID, B.CMRA_ID \r\n";
  168. #else
  169. sQry = "SELECT A.CROSS_ID, B.CAM_ID, B.NAME, B.DEL_YN, C.DIRECTION, C.X, C.Y, C.ANGLE, '' AS HTTP_RUL, \r\n"
  170. " B.IP, B.ID, B.PW, B.RTSP_URL, B.RTSP_PORT, B.HTTP_PORT, B.RIGHT_USE, B.NAME AS DRCT_LCTN \r\n"
  171. " FROM TB_CRS A, TB_CRS_CMRA B, TB_CRS_CMRA_DIR C \r\n"
  172. " WHERE A.CROSS_ID = B.CROSS_ID \r\n"
  173. " AND B.CAM_ID = C.CAM_ID \r\n"
  174. " ORDER BY A.CROSS_ID, B.CAM_ID \r\n";
  175. #endif
  176. try
  177. {
  178. FLists.Lock();
  179. FCamLists.Lock();
  180. FCamLists.RemoveAll();
  181. try
  182. {
  183. pADO = new TADOQuery(NULL);
  184. pADO->Close();
  185. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  186. pADO->SQL->Clear();
  187. pADO->SQL->Text = sQry;
  188. pADO->Prepared = true;
  189. pADO->Open();
  190. for( ; !pADO->Eof; pADO->Next())
  191. {
  192. String CROSS_ID = pADO->FieldByName("CROSS_ID")->AsString;
  193. TCross *pCross = FLists.Find(String(CROSS_ID)); // IXR_ID
  194. if (!pCross) continue;
  195. TCrossCam *pObj = new TCrossCam();
  196. if (pObj)
  197. {
  198. //pObj->CTLR_NMBR = CROSS_ID;
  199. pObj->CROSS_ID = CROSS_ID;
  200. pObj->CAM_ID = pADO->FieldByName("CAM_ID")->AsString;
  201. pObj->CTLR_ID = pObj->CAM_ID;
  202. pObj->CAM_NM = pADO->FieldByName("DRCT_LCTN")->AsString;
  203. pObj->ISTL_LCTN_NM = pADO->FieldByName("NAME")->AsString;
  204. pObj->ISTL_LCTN_ADDR = pADO->FieldByName("NAME")->AsString;
  205. pObj->DIRECTION = pADO->FieldByName("DIRECTION")->AsString.Trim();
  206. pObj->X_CRDN = pADO->FieldByName("X")->AsFloat;
  207. pObj->Y_CRDN = pADO->FieldByName("Y")->AsFloat;
  208. pObj->ANGLE = pADO->FieldByName("ANGLE")->AsInteger;
  209. pObj->IP = pADO->FieldByName("IP")->AsString.Trim();
  210. pObj->CTLR_IP = pObj->IP;
  211. pObj->ID = pADO->FieldByName("ID")->AsString.Trim();
  212. pObj->PWD = pADO->FieldByName("PW")->AsString.Trim();
  213. pObj->RTSP_URL = pADO->FieldByName("RTSP_URL")->AsString.Trim();
  214. pObj->HTTP_URL = pADO->FieldByName("HTTP_URL")->AsString.Trim();
  215. pObj->RTSP_PORT = pADO->FieldByName("RTSP_PORT")->AsInteger;
  216. pObj->HTTP_PORT = pADO->FieldByName("HTTP_PORT")->AsInteger;
  217. if (pObj->RTSP_URL == "<NULL>" || pObj->RTSP_URL == "NULL")
  218. {
  219. pObj->RTSP_URL = "";
  220. }
  221. pObj->STRM_ADDR = pObj->RTSP_URL;
  222. pObj->TYPE_CD = "CRSCAM";
  223. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString.Trim();
  224. pCross->FLists.Push(pObj->CAM_ID, pObj);
  225. TCrossCam *pObj2 = new TCrossCam();
  226. pObj->Copy(pObj2);
  227. FCamLists.Push(pObj2->CAM_ID, pObj2);
  228. }
  229. }
  230. }
  231. catch(EDatabaseError &E)
  232. {
  233. DBERRORMSG("TCrossManager::LoadCrossCam", String(E.ClassName()), E.Message, sQry);
  234. throw Exception(String(E.ClassName()) + E.Message);
  235. }
  236. catch(Exception &e)
  237. {
  238. DBERRORMSG("TCrossManager::LoadCrossCam", String(e.ClassName()), e.Message, sQry);
  239. throw Exception(String(e.ClassName()) + e.Message);
  240. }
  241. }
  242. __finally
  243. {
  244. if (pADO)
  245. {
  246. pADO->Close();
  247. delete pADO;
  248. }
  249. FLists.UnLock();
  250. FCamLists.UnLock();
  251. }
  252. return true;
  253. }
  254. //---------------------------------------------------------------------------
  255. bool TCrossManager::LoadStatusFromDb(TADOConnection *ADbConn/*=NULL*/)
  256. {
  257. #if 0
  258. String sQry;
  259. TADOQuery *pADO = NULL;
  260. #ifdef USE_SC_TBL
  261. return true;
  262. #else
  263. sQry = "SELECT * \r\n"
  264. " FROM TB_WCAM_CTLR_STTS A, \r\n"
  265. " TB_WCAM_CTLR B \r\n"
  266. " WHERE A.WCAM_CTLR_NMBR = B.WCAM_CTLR_NMBR \r\n"
  267. " AND A.UPDT_DT >= TO_CHAR(SYSDATE-2/1440, 'YYYYMMDDHH24MISS') \r\n";
  268. #endif
  269. FLists.Lock();
  270. try
  271. {
  272. FOR_STL(TCross*, pTmp, FLists)
  273. {
  274. pTmp->STATE.Comm = wcam_error;
  275. }
  276. TCross *pObj = NULL;
  277. try
  278. {
  279. int nORD;
  280. pADO = new TADOQuery(NULL);
  281. pADO->Close();
  282. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  283. pADO->SQL->Clear();
  284. pADO->SQL->Text = sQry;
  285. pADO->Prepared = true;
  286. pADO->Open();
  287. for( ; !pADO->Eof; pADO->Next())
  288. {
  289. String WCAM_CTLR_NMBR = pADO->FieldByName("WCAM_CTLR_NMBR")->AsString;
  290. pObj = FLists.Find(WCAM_CTLR_NMBR);
  291. if (!pObj) continue;
  292. String UPDT_DT = pADO->FieldByName("UPDT_DT")->AsString;
  293. String CMNC_STTS_CD = pADO->FieldByName("CMNC_STTS_CD")->AsString;
  294. if (CMNC_STTS_CD != "CMS0")
  295. {
  296. //Åë½ÅÀå¾Ö
  297. continue;
  298. }
  299. pObj->STATE.Comm = (CMNC_STTS_CD == "CMS0") ? wcam_normal : wcam_error;
  300. }
  301. }
  302. catch(EDatabaseError &E)
  303. {
  304. DBERRORLOG("TCrossManager::LoadStatusFromDb", String(E.ClassName()), E.Message, sQry);
  305. throw Exception(String(E.ClassName()) + E.Message);
  306. }
  307. catch(Exception &e)
  308. {
  309. DBERRORLOG("TCrossManager::LoadStatusFromDb", String(e.ClassName()), e.Message, sQry);
  310. throw Exception(String(e.ClassName()) + e.Message);
  311. }
  312. }
  313. __finally
  314. {
  315. FLists.UnLock();
  316. if (pADO)
  317. {
  318. pADO->Close();
  319. delete pADO;
  320. }
  321. }
  322. #endif
  323. return true;
  324. }
  325. //---------------------------------------------------------------------------
  326. bool TCrossManager::DeleteCross(TCross *AObj, TADOConnection *ADbConn/*=NULL*/)
  327. {
  328. String sQry;
  329. TADOQuery *pADO = NULL;
  330. #ifdef USE_SC_TBL
  331. sQry = "UPDATE TB_SC_IXR_MNGM \r\n"
  332. " SET USE_EN = 0 \r\n"
  333. " WHERE IXR_ID = :p01 \r\n";
  334. #else
  335. sQry = "UPDATE TB_CRS \r\n"
  336. " SET DEL_YN = 'Y' \r\n"
  337. " WHERE CROSS_ID = :p01 \r\n";
  338. #endif
  339. try
  340. {
  341. try
  342. {
  343. pADO = new TADOQuery(NULL);
  344. pADO->Close();
  345. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  346. pADO->SQL->Clear();
  347. pADO->SQL->Text = sQry;
  348. pADO->Parameters->ParamByName("p01")->Value = AObj->CROSS_ID;
  349. pADO->ExecSQL();
  350. sQry = "DELETE TB_FCLT_INFR \r\n"
  351. " WHERE FCLT_ID = :p01 \r\n";
  352. pADO->SQL->Clear();
  353. pADO->SQL->Text = sQry;
  354. pADO->Parameters->ParamByName("p01")->Value = AObj->CROSS_ID;
  355. pADO->ExecSQL();
  356. return true;
  357. }
  358. catch(EDatabaseError &E)
  359. {
  360. DBERRORLOG("TCrossManager::DeleteCross", String(E.ClassName()), E.Message, sQry);
  361. throw Exception(String(E.ClassName()) + E.Message);
  362. }
  363. catch(Exception &e)
  364. {
  365. DBERRORLOG("TCrossManager::DeleteCross", String(e.ClassName()), e.Message, sQry);
  366. throw Exception(String(e.ClassName()) + e.Message);
  367. }
  368. }
  369. __finally
  370. {
  371. if (pADO)
  372. {
  373. pADO->Close();
  374. delete pADO;
  375. }
  376. }
  377. return true;
  378. }
  379. //---------------------------------------------------------------------------
  380. bool TCrossManager::InsertCross(TCross *AObj, TADOConnection *ADbConn/*=NULL*/)
  381. {
  382. return MergeCross(AObj, ADbConn);
  383. }
  384. //---------------------------------------------------------------------------
  385. bool TCrossManager::UpdateCross(TCross *AObj, TADOConnection *ADbConn/*=NULL*/)
  386. {
  387. return MergeCross(AObj, ADbConn);
  388. }
  389. //---------------------------------------------------------------------------
  390. bool TCrossManager::MergeCross(TCross *AObj, TADOConnection *ADbConn/*=NULL*/)
  391. {
  392. String sQry;
  393. TADOQuery *pADO = NULL;
  394. #ifdef USE_SC_TBL
  395. return true;
  396. #else
  397. sQry = "MERGE INTO TB_CRS L \r\n"
  398. "USING (SELECT :p01 AS CROSS_ID, \r\n"
  399. " :p02 AS NAME, \r\n"
  400. " :p03 AS CROSS_TYPE, \r\n"
  401. " :p04 AS X, \r\n"
  402. " :p05 AS Y, \r\n"
  403. " :p06 AS ZOOM_LEVEL, \r\n"
  404. " :p07 AS LOCAL_GROUP_ID, \r\n"
  405. " :p08 AS DEL_YN \r\n"
  406. " FROM DUAL) M \r\n"
  407. " ON (L.CROSS_ID = M.CROSS_ID) \r\n"
  408. "WHEN MATCHED THEN \r\n"
  409. " UPDATE SET L.NAME = M.NAME, \r\n"
  410. " L.CROSS_TYPE = M.CROSS_TYPE, \r\n"
  411. " L.X = M.X, \r\n"
  412. " L.Y = M.Y, \r\n"
  413. " L.ZOOM_LEVEL = M.ZOOM_LEVEL, \r\n"
  414. " L.LOCAL_GROUP_ID = M.LOCAL_GROUP_ID, \r\n"
  415. " L.DEL_YN = M.DEL_YN \r\n"
  416. "WHEN NOT MATCHED THEN \r\n"
  417. " INSERT (CROSS_ID, \r\n"
  418. " NAME, \r\n"
  419. " CROSS_TYPE, \r\n"
  420. " X, \r\n"
  421. " Y, \r\n"
  422. " ZOOM_LEVEL, \r\n"
  423. " LOCAL_GROUP_ID, \r\n"
  424. " DEL_YN ) \r\n"
  425. " VALUES (M.CROSS_ID, \r\n"
  426. " M.NAME, \r\n"
  427. " M.CROSS_TYPE, \r\n"
  428. " M.X, \r\n"
  429. " M.Y, \r\n"
  430. " M.ZOOM_LEVEL, \r\n"
  431. " M.LOCAL_GROUP_ID, \r\n"
  432. " M.DEL_YN ) \r\n";
  433. #endif
  434. try
  435. {
  436. try
  437. {
  438. pADO = new TADOQuery(NULL);
  439. pADO->Close();
  440. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  441. pADO->SQL->Clear();
  442. pADO->SQL->Text = sQry;
  443. pADO->Parameters->ParamByName("p01")->Value = AObj->CROSS_ID;
  444. pADO->Parameters->ParamByName("p02")->Value = AObj->CROSS_NM;
  445. pADO->Parameters->ParamByName("p03")->Value = AObj->CROSS_TYPE;
  446. pADO->Parameters->ParamByName("p04")->Value = AObj->X_CRDN;
  447. pADO->Parameters->ParamByName("p05")->Value = AObj->Y_CRDN;
  448. pADO->Parameters->ParamByName("p06")->Value = AObj->ZOOM_LEVEL;
  449. pADO->Parameters->ParamByName("p07")->Value = AObj->LOCAL_GROUP_ID;
  450. pADO->Parameters->ParamByName("p08")->Value = AObj->DEL_YN;
  451. pADO->ExecSQL();
  452. return MergeFcltInfo(AObj, ADbConn);
  453. }
  454. catch(EDatabaseError &E)
  455. {
  456. DBERRORLOG("TCrossManager::MergeWCam", String(E.ClassName()), E.Message, sQry);
  457. throw Exception(String(E.ClassName()) + E.Message);
  458. }
  459. catch(Exception &e)
  460. {
  461. DBERRORLOG("TCrossManager::MergeWCam", String(e.ClassName()), e.Message, sQry);
  462. throw Exception(String(e.ClassName()) + e.Message);
  463. }
  464. }
  465. __finally
  466. {
  467. if (pADO)
  468. {
  469. pADO->Close();
  470. delete pADO;
  471. }
  472. }
  473. return true;
  474. }
  475. //---------------------------------------------------------------------------
  476. bool TCrossManager::MergeFcltInfo(TCross *AObj, TADOConnection *ADbConn/*=NULL*/)
  477. {
  478. String sQry;
  479. TADOQuery *pADO = NULL;
  480. sQry = "MERGE INTO TB_FCLT_INFR L \r\n"
  481. "USING (SELECT :p01 AS FCLT_ID, \r\n"
  482. " :p02 AS FCLT_TYPE, \r\n"
  483. " :p03 AS FCLT_LCTN \r\n"
  484. " FROM DUAL) M \r\n"
  485. " ON (L.FCLT_ID = M.FCLT_ID AND L.FCLT_TYPE = M.FCLT_TYPE) \r\n"
  486. "WHEN MATCHED \r\n"
  487. "THEN \r\n"
  488. " UPDATE SET L.FCLT_LCTN = M.FCLT_LCTN, \r\n"
  489. " L.DEL_YN = 'N' \r\n"
  490. "WHEN NOT MATCHED \r\n"
  491. "THEN \r\n"
  492. " INSERT ( FCLT_ID, FCLT_TYPE, FCLT_LCTN) \r\n"
  493. " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN) \r\n";
  494. try
  495. {
  496. try
  497. {
  498. pADO = new TADOQuery(NULL);
  499. pADO->Close();
  500. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  501. pADO->SQL->Clear();
  502. pADO->SQL->Text = sQry;
  503. pADO->Parameters->ParamByName("p01")->Value = AObj->CROSS_ID;
  504. pADO->Parameters->ParamByName("p02")->Value = "CRS";
  505. pADO->Parameters->ParamByName("p03")->Value = AObj->CROSS_NM;
  506. pADO->ExecSQL();
  507. return true;
  508. }
  509. catch(EDatabaseError &E)
  510. {
  511. DBERRORLOG("TCrossManager::MergeFcltInfo", String(E.ClassName()), E.Message, sQry);
  512. throw Exception(String(E.ClassName()) + E.Message);
  513. }
  514. catch(Exception &e)
  515. {
  516. DBERRORLOG("TCrossManager::MergeFcltInfo", String(e.ClassName()), e.Message, sQry);
  517. throw Exception(String(e.ClassName()) + e.Message);
  518. }
  519. }
  520. __finally
  521. {
  522. if (pADO)
  523. {
  524. pADO->Close();
  525. delete pADO;
  526. }
  527. }
  528. return true;
  529. }
  530. //---------------------------------------------------------------------------
  531. bool TCrossManager::GetNextCrossId(int &ANmbr, int &AId, TADOConnection *ADbConn/*=NULL*/)
  532. {
  533. String sQry;
  534. TADOQuery *pADO = NULL;
  535. // »ç¿ë¾ÈÇÔ......
  536. #ifdef USE_SC_TBL
  537. sQry = "SELECT NVL(MAX(IXR_ID), 0) + 1 AS NEWID FROM TB_SC_IXR_MNGM \r\n";
  538. #else
  539. sQry = "SELECT NVL(MAX(CROSS_ID), 0) + 1 AS NEWID FROM TB_CRS \r\n";
  540. #endif
  541. try
  542. {
  543. try
  544. {
  545. pADO = new TADOQuery(NULL);
  546. pADO->Close();
  547. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  548. pADO->SQL->Clear();
  549. pADO->SQL->Text = sQry;
  550. pADO->Prepared = true;
  551. pADO->Open();
  552. ANmbr = pADO->FieldByName("NEWID")->AsInteger;
  553. AId = ANmbr;
  554. return true;
  555. }
  556. catch(EDatabaseError &E)
  557. {
  558. DBERRORLOG("TCrossManager::GetNextCrossId", String(E.ClassName()), E.Message, sQry);
  559. throw Exception(String(E.ClassName()) + E.Message);
  560. }
  561. catch(Exception &e)
  562. {
  563. DBERRORLOG("TCrossManager::GetNextCrossId", String(e.ClassName()), e.Message, sQry);
  564. throw Exception(String(e.ClassName()) + e.Message);
  565. }
  566. }
  567. __finally
  568. {
  569. if (pADO)
  570. {
  571. pADO->Close();
  572. delete pADO;
  573. }
  574. }
  575. return false;
  576. }
  577. //---------------------------------------------------------------------------
  578. bool TCrossManager::SaveCrossCam(TCrossCam *AObj, TADOConnection *ADbConn/*=NULL*/)
  579. {
  580. return MergeCrossCam(AObj, ADbConn);
  581. }
  582. //---------------------------------------------------------------------------
  583. bool TCrossManager::DeleteCrossCam(TCrossCam *AObj, TADOConnection *ADbConn/*=NULL*/)
  584. {
  585. String sQry;
  586. TADOQuery *pADO = NULL;
  587. #ifdef USE_SC_TBL
  588. sQry = "UPDATE TB_SC_CMRA_MNGM \r\n"
  589. " SET USE_EN = 0 \r\n"
  590. " WHERE CMRA_ID = :p01 \r\n";
  591. #else
  592. sQry = "UPDATE TB_CRS_CMRA \r\n"
  593. " SET DEL_YN = 'Y' \r\n"
  594. " WHERE CAM_ID = :p01 \r\n";
  595. #endif
  596. try
  597. {
  598. try
  599. {
  600. pADO = new TADOQuery(NULL);
  601. pADO->Close();
  602. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  603. pADO->SQL->Clear();
  604. pADO->SQL->Text = sQry;
  605. pADO->Parameters->ParamByName("p01")->Value = AObj->CAM_ID;
  606. pADO->ExecSQL();
  607. sQry = "DELETE TB_FCLT_INFR \r\n"
  608. " WHERE FCLT_ID = :p01 \r\n";
  609. pADO->SQL->Clear();
  610. pADO->SQL->Text = sQry;
  611. pADO->Parameters->ParamByName("p01")->Value = AObj->CAM_ID;
  612. pADO->ExecSQL();
  613. return true;
  614. }
  615. catch(EDatabaseError &E)
  616. {
  617. DBERRORLOG("TCrossManager::DeleteCrossCam", String(E.ClassName()), E.Message, sQry);
  618. throw Exception(String(E.ClassName()) + E.Message);
  619. }
  620. catch(Exception &e)
  621. {
  622. DBERRORLOG("TCrossManager::DeleteCrossCam", String(e.ClassName()), e.Message, sQry);
  623. throw Exception(String(e.ClassName()) + e.Message);
  624. }
  625. }
  626. __finally
  627. {
  628. if (pADO)
  629. {
  630. pADO->Close();
  631. delete pADO;
  632. }
  633. }
  634. return true;
  635. }
  636. //---------------------------------------------------------------------------
  637. bool TCrossManager::MergeCrossCam(TCrossCam* AObj, TADOConnection *ADbConn/*=NULL*/)
  638. {
  639. String sQry;
  640. TADOQuery *pADO = NULL;
  641. try
  642. {
  643. try
  644. {
  645. pADO = new TADOQuery(NULL);
  646. pADO->Close();
  647. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  648. #ifdef USE_SC_TBL
  649. return true;
  650. #else
  651. sQry = "MERGE INTO TB_CRS_CMRA L \r\n"
  652. "USING (SELECT :p01 AS CAM_ID, \r\n"
  653. " :p02 AS PARENT_ID, \r\n"
  654. " :p03 AS NAME, \r\n"
  655. " :p04 AS IP, \r\n"
  656. " :p05 AS ID, \r\n"
  657. " :p06 AS PW, \r\n"
  658. " :p07 AS RTSP_URL, \r\n"
  659. " :p08 AS RTSP_PORT, \r\n"
  660. " :p09 AS HTTP_PORT, \r\n"
  661. " :p10 AS CROSS_ID, \r\n"
  662. " :p11 AS RIGHT_USE, \r\n"
  663. " :p12 AS DEL_YN \r\n"
  664. " FROM DUAL) M \r\n"
  665. " ON (L.CAM_ID = M.CAM_ID) \r\n"
  666. "WHEN MATCHED THEN \r\n"
  667. " UPDATE SET L.PARENT_ID = M.PARENT_ID, \r\n"
  668. " L.NAME = M.NAME, \r\n"
  669. " L.IP = M.IP, \r\n"
  670. " L.ID = M.ID, \r\n"
  671. " L.PW = M.PW, \r\n"
  672. " L.RTSP_URL = M.RTSP_URL, \r\n"
  673. " L.RTSP_PORT = M.RTSP_PORT, \r\n"
  674. " L.HTTP_PORT = M.HTTP_PORT, \r\n"
  675. " L.CROSS_ID = M.CROSS_ID, \r\n"
  676. " L.RIGHT_USE = M.RIGHT_USE, \r\n"
  677. " L.DEL_YN = M.DEL_YN \r\n"
  678. "WHEN NOT MATCHED THEN \r\n"
  679. " INSERT (CAM_ID, \r\n"
  680. " PARENT_ID, \r\n"
  681. " NAME, \r\n"
  682. " IP, \r\n"
  683. " ID, \r\n"
  684. " PW, \r\n"
  685. " RTSP_URL, \r\n"
  686. " RTSP_PORT, \r\n"
  687. " HTTP_PORT, \r\n"
  688. " CROSS_ID, \r\n"
  689. " RIGHT_USE, \r\n"
  690. " DEL_YN ) \r\n"
  691. " VALUES (M.CAM_ID, \r\n"
  692. " M.PARENT_ID, \r\n"
  693. " M.NAME, \r\n"
  694. " M.IP, \r\n"
  695. " M.ID, \r\n"
  696. " M.PW, \r\n"
  697. " M.RTSP_URL, \r\n"
  698. " M.RTSP_PORT, \r\n"
  699. " M.HTTP_PORT, \r\n"
  700. " M.CROSS_ID, \r\n"
  701. " M.RIGHT_USE, \r\n"
  702. " M.DEL_YN ) \r\n";
  703. #endif
  704. pADO->SQL->Clear();
  705. pADO->SQL->Text = sQry;
  706. pADO->Parameters->ParamByName("p01")->Value = AObj->CAM_ID;
  707. pADO->Parameters->ParamByName("p02")->Value = "";
  708. pADO->Parameters->ParamByName("p03")->Value = AObj->CAM_NM;
  709. pADO->Parameters->ParamByName("p04")->Value = AObj->IP;
  710. pADO->Parameters->ParamByName("p05")->Value = AObj->ID;
  711. pADO->Parameters->ParamByName("p06")->Value = AObj->PWD;
  712. pADO->Parameters->ParamByName("p07")->Value = AObj->RTSP_URL;
  713. pADO->Parameters->ParamByName("p08")->Value = AObj->RTSP_PORT;
  714. pADO->Parameters->ParamByName("p09")->Value = AObj->HTTP_PORT;
  715. pADO->Parameters->ParamByName("p10")->Value = AObj->CROSS_ID;
  716. pADO->Parameters->ParamByName("p11")->Value = AObj->RIGHT_USE;
  717. pADO->Parameters->ParamByName("p12")->Value = AObj->DEL_YN;
  718. pADO->ExecSQL();
  719. #ifdef USE_SC_TBL
  720. return true;
  721. #else
  722. sQry = "MERGE INTO TB_CRS_CMRA_DIR L \r\n"
  723. "USING (SELECT \r\n"
  724. " :p01 AS CAM_ID, \r\n"
  725. " :p02 AS DIRECTION, \r\n"
  726. " :p03 AS NAME, \r\n"
  727. " :p04 AS X, \r\n"
  728. " :p05 AS Y, \r\n"
  729. " :p06 AS ANGLE \r\n"
  730. " FROM DUAL) M \r\n"
  731. " ON (L.CAM_ID = M.CAM_ID) \r\n"
  732. "WHEN MATCHED THEN \r\n"
  733. " UPDATE SET \r\n"
  734. " L.DIRECTION = M.DIRECTION, \r\n"
  735. " L.NAME = M.NAME, \r\n"
  736. " L.X = M.X, \r\n"
  737. " L.Y = M.Y, \r\n"
  738. " L.ANGLE = M.ANGLE \r\n"
  739. "WHEN NOT MATCHED THEN \r\n"
  740. " INSERT ( \r\n"
  741. " CAM_ID, \r\n"
  742. " DIRECTION, \r\n"
  743. " NAME, \r\n"
  744. " X, \r\n"
  745. " Y, \r\n"
  746. " ANGLE ) \r\n"
  747. " VALUES ( \r\n"
  748. " M.CAM_ID, \r\n"
  749. " M.DIRECTION, \r\n"
  750. " M.NAME, \r\n"
  751. " M.X, \r\n"
  752. " M.Y, \r\n"
  753. " M.ANGLE ) \r\n";
  754. #endif
  755. pADO->SQL->Clear();
  756. pADO->SQL->Text = sQry;
  757. pADO->Parameters->ParamByName("p01")->Value = AObj->CAM_ID;
  758. pADO->Parameters->ParamByName("p02")->Value = AObj->DIRECTION;
  759. pADO->Parameters->ParamByName("p03")->Value = AObj->CAM_NM;
  760. pADO->Parameters->ParamByName("p04")->Value = AObj->X_CRDN;
  761. pADO->Parameters->ParamByName("p05")->Value = AObj->Y_CRDN;
  762. pADO->Parameters->ParamByName("p06")->Value = AObj->ANGLE;
  763. pADO->ExecSQL();
  764. return MergeFcltInfo2(AObj, ADbConn);
  765. }
  766. catch(EDatabaseError &E)
  767. {
  768. DBERRORLOG("TCrossManager::MergeCrossCam", String(E.ClassName()), E.Message, sQry);
  769. throw Exception(String(E.ClassName()) + E.Message);
  770. }
  771. catch(Exception &e)
  772. {
  773. DBERRORLOG("TCrossManager::MergeCrossCam", String(e.ClassName()), e.Message, sQry);
  774. throw Exception(String(e.ClassName()) + e.Message);
  775. }
  776. }
  777. __finally
  778. {
  779. if (pADO)
  780. {
  781. pADO->Close();
  782. delete pADO;
  783. }
  784. }
  785. return true;
  786. }
  787. //---------------------------------------------------------------------------
  788. bool TCrossManager::MergeFcltInfo2(TCrossCam *AObj, TADOConnection *ADbConn/*=NULL*/)
  789. {
  790. String sQry;
  791. TADOQuery *pADO = NULL;
  792. #ifdef USE_SC_TBL
  793. return true;
  794. #else
  795. sQry = "MERGE INTO TB_FCLT_INFR L \r\n"
  796. "USING (SELECT :p01 AS FCLT_ID, \r\n"
  797. " :p02 AS FCLT_TYPE, \r\n"
  798. " :p03 AS FCLT_LCTN \r\n"
  799. " FROM DUAL) M \r\n"
  800. " ON (L.FCLT_ID = M.FCLT_ID AND L.FCLT_TYPE = M.FCLT_TYPE) \r\n"
  801. "WHEN MATCHED \r\n"
  802. "THEN \r\n"
  803. " UPDATE SET L.FCLT_LCTN = M.FCLT_LCTN, \r\n"
  804. " L.DEL_YN = 'N' \r\n"
  805. "WHEN NOT MATCHED \r\n"
  806. "THEN \r\n"
  807. " INSERT ( FCLT_ID, FCLT_TYPE, FCLT_LCTN) \r\n"
  808. " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN) \r\n";
  809. #endif
  810. try
  811. {
  812. try
  813. {
  814. pADO = new TADOQuery(NULL);
  815. pADO->Close();
  816. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  817. pADO->SQL->Clear();
  818. pADO->SQL->Text = sQry;
  819. pADO->Parameters->ParamByName("p01")->Value = AObj->CAM_ID;
  820. pADO->Parameters->ParamByName("p02")->Value = "CRSCAM";
  821. pADO->Parameters->ParamByName("p03")->Value = AObj->CAM_NM;
  822. pADO->ExecSQL();
  823. return true;
  824. }
  825. catch(EDatabaseError &E)
  826. {
  827. DBERRORLOG("TCrossManager::MergeFcltInfo2", String(E.ClassName()), E.Message, sQry);
  828. throw Exception(String(E.ClassName()) + E.Message);
  829. }
  830. catch(Exception &e)
  831. {
  832. DBERRORLOG("TCrossManager::MergeFcltInfo2", String(e.ClassName()), e.Message, sQry);
  833. throw Exception(String(e.ClassName()) + e.Message);
  834. }
  835. }
  836. __finally
  837. {
  838. if (pADO)
  839. {
  840. pADO->Close();
  841. delete pADO;
  842. }
  843. }
  844. return true;
  845. }
  846. //---------------------------------------------------------------------------