CDSCrossF.cpp 31 KB

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