CDSCrossF.cpp 31 KB

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