FrmInitializeF.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "WindowMsgF.h"
  4. #include "CDSCodeF.h"
  5. #include "CDSTrafficGradeF.h"
  6. #include "CDSLayerF.h"
  7. #include "CDSNodeF.h"
  8. #include "CDSLinkF.h"
  9. #include "CDSIfscF.h"
  10. #include "CDSRoadF.h"
  11. #include "CDSFacilityF.h"
  12. #include "CDSProcessF.h"
  13. #include "CDSIncidentF.h"
  14. #include "CDSRepeatCongestF.h"
  15. #include "CDSPrltCtlrF.h"
  16. #include "CDSPrkPlceF.h"
  17. #include "CDSUtisF.h"
  18. #include "CDSCompanyF.h"
  19. #include "CDSColSysF.h"
  20. #include "CDSVilgFrcsF.h"
  21. #include "CDSDatabaseF.h"
  22. #include "ITSLangTransF.h"
  23. #pragma hdrstop
  24. #include "FrmInitializeF.h"
  25. #include "FrmMainF.h"
  26. #include "ITS_OPLibF.h"
  27. //---------------------------------------------------------------------------
  28. #pragma package(smart_init)
  29. #pragma link "cxContainer"
  30. #pragma link "cxControls"
  31. #pragma link "cxEdit"
  32. #pragma link "cxGraphics"
  33. #pragma link "cxLabel"
  34. #pragma link "cxLookAndFeelPainters"
  35. #pragma link "cxLookAndFeels"
  36. #pragma link "cxProgressBar"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinsCore"
  40. #pragma link "IdAntiFreeze"
  41. #pragma link "IdAntiFreezeBase"
  42. #pragma link "IdBaseComponent"
  43. #pragma link "IdComponent"
  44. #pragma link "IdExplicitTLSClientServerBase"
  45. #pragma link "IdFTP"
  46. #pragma link "IdTCPClient"
  47. #pragma link "IdTCPConnection"
  48. #pragma link "dxSkinMcSkin"
  49. #pragma resource "*.dfm"
  50. //TFrmInitialize *FrmInitialize = NULL;
  51. //---------------------------------------------------------------------------
  52. __fastcall TFrmInitialize::TFrmInitialize(TComponent* Owner)
  53. : TForm(Owner)
  54. {
  55. //ADOQry->Connection = ITSDb_GetConnection();
  56. LangTrans->Translate(this, ITSDb_GetConnection());
  57. }
  58. //---------------------------------------------------------------------------
  59. void __fastcall TFrmInitialize::FormShow(TObject *Sender)
  60. {
  61. Refresh();
  62. TmrShow->Enabled = true;
  63. }
  64. //---------------------------------------------------------------------------
  65. void __fastcall TFrmInitialize::TmrShowTimer(TObject *Sender)
  66. {
  67. TmrShow->Enabled = false;
  68. Application->ProcessMessages();
  69. cxProgressBar1->Properties->Max = 150;
  70. try
  71. {
  72. Application->ProcessMessages();
  73. cxProgressBar1->Position = 5;
  74. Application->ProcessMessages();
  75. if (!ItsLayerManager)
  76. {
  77. ItsLayerManager = new TItsLayerManager();
  78. //ItsLayerManager->LoadFromDb();
  79. }
  80. cxProgressBar1->Position = 10;
  81. LblStatus->Caption = cxLabel1->Caption;//"코드정보 로딩...";
  82. Application->ProcessMessages();
  83. if (!ItsCodeManager)
  84. {
  85. ItsCodeManager = new TItsCodeManager();
  86. ItsCodeManager->LoadFromDb();
  87. }
  88. if (!ItsColSysManager)
  89. {
  90. ItsColSysManager = new TItsColSysManager();
  91. ItsColSysManager->LoadFromDb();
  92. }
  93. cxProgressBar1->Position = 20;
  94. LblStatus->Caption = cxLabel2->Caption;
  95. Application->ProcessMessages();
  96. if (!ItsTrafficGradeManager)
  97. {
  98. ItsTrafficGradeManager = new TItsTrafficGradeManager();
  99. ItsTrafficGradeManager->LoadFromDb();
  100. }
  101. cxProgressBar1->Position = 25;
  102. LblStatus->Caption = cxLabel3->Caption;
  103. Application->ProcessMessages();
  104. if (!ItsVilgFrcsManager)
  105. {
  106. ItsVilgFrcsManager = new TItsVilgFrcsManager();
  107. #if defined(USE_VILG) || defined(USE_ATMP)
  108. #ifdef USE_VILG
  109. ItsVilgFrcsManager->LoadFromDb();
  110. #endif
  111. #ifdef USE_ATMP
  112. ItsVilgFrcsManager->LoadFromDbAtmp();
  113. #endif
  114. #endif
  115. }
  116. cxProgressBar1->Position = 30;
  117. LblStatus->Caption = cxLabel4->Caption;
  118. Application->ProcessMessages();
  119. if (!ItsNodeManager)
  120. {
  121. ItsNodeManager = new TItsNodeManager();
  122. ItsNodeManager->LoadFromDb();
  123. }
  124. cxProgressBar1->Position = 40;
  125. LblStatus->Caption = cxLabel5->Caption;
  126. //레벨1
  127. Application->ProcessMessages();
  128. if (!ItsLinkManager)
  129. {
  130. ItsLinkManager = new TItsLinkManager();
  131. ItsLinkManager->LoadFromDb();
  132. }
  133. //레벨2
  134. cxProgressBar1->Position = 50;
  135. LblStatus->Caption = cxLabel6->Caption;
  136. Application->ProcessMessages();
  137. if (!ItsIfscManager)
  138. {
  139. ItsIfscManager = new TItsIfscManager();
  140. ItsIfscManager->LoadFromDb();
  141. }
  142. //레벨3
  143. cxProgressBar1->Position = 60;
  144. LblStatus->Caption = cxLabel7->Caption;
  145. Application->ProcessMessages();
  146. if (!ItsRoadManager)
  147. {
  148. ItsRoadManager = new TItsRoadManager();
  149. ItsRoadManager->LoadFromDb();
  150. }
  151. cxProgressBar1->Position = 70;
  152. LblStatus->Caption = cxLabel8->Caption;
  153. Application->ProcessMessages();
  154. if (!ItsRepeatCongestManager)
  155. {
  156. ItsRepeatCongestManager = new TItsRepeatCongestManager();
  157. }
  158. cxProgressBar1->Position = 110;
  159. #if 0
  160. LblStatus->Caption = cxLabel12->Caption;
  161. Application->ProcessMessages();
  162. if (!ItsUtisManager)
  163. {
  164. ItsUtisManager = new TItsUtisManager();
  165. ItsUtisManager->SetCenterId(CenterId);
  166. ItsUtisManager->LoadFromDb();
  167. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_05);
  168. }
  169. #endif
  170. cxProgressBar1->Position = 110;
  171. LblStatus->Caption = cxLabel13->Caption;
  172. Application->ProcessMessages();
  173. if (!ItsFacilityManager)
  174. {
  175. ItsFacilityManager = new TItsFacilityManager();
  176. ItsFacilityManager->SetCenterId(CenterId);
  177. ItsFacilityManager->LoadFromDb();
  178. }
  179. cxProgressBar1->Position = 120;
  180. LblStatus->Caption = cxLabel14->Caption;//"프로세스정보 로딩...";
  181. Application->ProcessMessages();
  182. if (!ItsProcessManager)
  183. {
  184. ItsProcessManager = new TItsProcessManager();
  185. ItsProcessManager->LoadFromDb();
  186. }
  187. cxProgressBar1->Position = 130;
  188. LblStatus->Caption = cxLabel15->Caption;
  189. Application->ProcessMessages();
  190. if (!ItsIncidentManager)
  191. {
  192. ItsIncidentManager = new TItsIncidentManager();
  193. }
  194. if (!ItsCompanyManager)
  195. {
  196. ItsCompanyManager = new TItsCompanyManager();
  197. }
  198. if (!ItsDatabaseManager)
  199. {
  200. ItsDatabaseManager = new TItsDatabaseManager();
  201. }
  202. #if defined(USE_VILG) || defined(USE_ATMP)
  203. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_WEATHER);
  204. #endif
  205. #if 0
  206. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_DATABASE_STTS);
  207. #endif
  208. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_FACILITY_STTS);
  209. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_PROCESS_STTS);
  210. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_INCIDENT);
  211. FrmMain->PostJobMessage(WM_THREAD, WP_PARAM_TRAFFIC, LP_MSG_TRAFFIC); //1,2,3레벨 및 반복정체 구간 소통정보 조회
  212. }
  213. catch(...)
  214. {
  215. }
  216. UploadVmsVideoFiles();
  217. Close();
  218. }
  219. //---------------------------------------------------------------------------
  220. void __fastcall TFrmInitialize::FormClose(TObject *Sender, TCloseAction &Action)
  221. {
  222. Action = caFree;
  223. }
  224. //---------------------------------------------------------------------------
  225. bool __fastcall TFrmInitialize::VmsFtpConnect()
  226. {
  227. if (g_AppCfg.vmsFtp.SERVER == "") return false;
  228. IdFtp->Host = g_AppCfg.vmsFtp.SERVER;
  229. IdFtp->Port = g_AppCfg.vmsFtp.PORT;
  230. IdFtp->Username = g_AppCfg.vmsFtp.USER;
  231. IdFtp->Password = g_AppCfg.vmsFtp.PSWD;
  232. IdFtp->Passive = g_AppCfg.vmsFtp.PASSIVE;
  233. String sErrMsg;
  234. bool bConnect = false;
  235. try
  236. {
  237. IdFtp->Connect();
  238. IdFtp->ChangeDir("VIDEO");
  239. IdFtp->IOHandler->DefStringEncoding = TIdTextEncoding::UTF8;//IndyTextEncoding(949);
  240. bConnect = true;
  241. IdFtp->TransferType = ftBinary;
  242. }
  243. catch (EIdSocketError &exSock)
  244. {
  245. sErrMsg = exSock.Message;
  246. sErrMsg = StringReplace(sErrMsg, "\r\n", " ", TReplaceFlags() << rfReplaceAll);
  247. //Application->MessageBox(sErrMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  248. return false;
  249. }
  250. catch (Exception &e)
  251. {
  252. sErrMsg = e.Message;
  253. sErrMsg = StringReplace(sErrMsg, "\r\n", " ", TReplaceFlags() << rfReplaceAll);
  254. //Application->MessageBox(sErrMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  255. return false;
  256. }
  257. return bConnect;
  258. }
  259. //---------------------------------------------------------------------------
  260. bool __fastcall TFrmInitialize::VmsFtpFileDownload(String AOrgFile, String ADstFile)
  261. {
  262. String sErrMsg;
  263. try
  264. {
  265. IdFtp->TransferType = ftBinary;
  266. IdFtp->Get(AOrgFile, ADstFile, false);
  267. }
  268. catch (EIdSocketError &exSock)
  269. {
  270. sErrMsg = exSock.Message;
  271. sErrMsg = StringReplace(sErrMsg, "\r\n", " ", TReplaceFlags() << rfReplaceAll);
  272. //Application->MessageBox(sErrMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  273. return false;
  274. }
  275. catch (Exception &e)
  276. {
  277. sErrMsg = e.Message;
  278. sErrMsg = StringReplace(sErrMsg, "\r\n", " ", TReplaceFlags() << rfReplaceAll);
  279. //Application->MessageBox(sErrMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  280. return false;
  281. }
  282. return true;
  283. }
  284. //---------------------------------------------------------------------------
  285. void __fastcall TFrmInitialize::VmsFtpDisconnect()
  286. {
  287. if (IdFtp->Connected())
  288. {
  289. IdFtp->Abort();
  290. IdFtp->Quit();
  291. IdFtp->Disconnect();
  292. }
  293. }
  294. //---------------------------------------------------------------------------
  295. bool __fastcall TFrmInitialize::UploadVmsVideoFiles()
  296. {
  297. String sQry;
  298. TADOQuery *pADO = NULL;
  299. return true;
  300. sQry = "SELECT SYMB_LIB_NMBR, SYMB_FILE_NM \r\n"
  301. " FROM TB_VMS_SYMB_LIB \r\n"
  302. " WHERE SYMB_LIB_NMBR BETWEEN 5000 AND 5999 \r\n"
  303. " AND SYMB_TYPE = 'SBT3' \r\n"
  304. " AND DEL_YN = 'N' \r\n";
  305. ForceDirectories(g_sVideoDir.c_str());
  306. if (!VmsFtpConnect()) return false;
  307. bool bRes = false;
  308. try
  309. {
  310. try
  311. {
  312. pADO = new TADOQuery(NULL);
  313. pADO->Close();
  314. pADO->Connection = ITSDb_GetConnection();
  315. ITSDb_SQLText(pADO, sQry);
  316. ITSDb_SQLOpen(pADO);
  317. for( ; !pADO->Eof; pADO->Next())
  318. {
  319. String SYMB_FILE_NM = pADO->FieldByName("SYMB_FILE_NM")->AsString;
  320. String strmFileName = g_sVideoDir + SYMB_FILE_NM;
  321. if (!FileExists(strmFileName))
  322. {
  323. VmsFtpFileDownload(SYMB_FILE_NM, strmFileName);
  324. }
  325. }
  326. bRes = true;
  327. }
  328. catch(EDatabaseError &E)
  329. {
  330. DBERRORMSG("TFrmInitialize::UploadVmsVideoFiles", String(E.ClassName()), E.Message, sQry);
  331. throw Exception(String(E.ClassName()) + E.Message);
  332. }
  333. catch(Exception &e)
  334. {
  335. DBERRORMSG("TFrmInitialize::UploadVmsVideoFiles", String(e.ClassName()), e.Message, sQry);
  336. throw Exception(String(e.ClassName()) + e.Message);
  337. }
  338. }
  339. __finally
  340. {
  341. if (pADO)
  342. {
  343. pADO->Close();
  344. delete pADO;
  345. }
  346. VmsFtpDisconnect();
  347. }
  348. return bRes;
  349. }
  350. //---------------------------------------------------------------------------