shjung 3 年之前
父节点
当前提交
643939da96
共有 57 个文件被更改,包括 404 次插入1900 次删除
  1. 6 0
      src/main/java/com/its/traf/controller/its/TrafPrcs05MController.java
  2. 10 28
      src/main/java/com/its/traf/controller/its/TrafPrcs05MPrepareController.java
  3. 7 0
      src/main/java/com/its/traf/controller/its/TrafPrcsDDController.java
  4. 8 1
      src/main/java/com/its/traf/controller/its/TrafPrcsHHController.java
  5. 7 0
      src/main/java/com/its/traf/controller/its/TrafPrcsMNController.java
  6. 5 0
      src/main/java/com/its/traf/controller/its/TrafPrcsReptCngsSectController.java
  7. 7 0
      src/main/java/com/its/traf/controller/its/TrafPrcsYYController.java
  8. 91 7
      src/main/java/com/its/traf/global/AppRepository.java
  9. 57 0
      src/main/java/com/its/traf/global/TrafJobType.java
  10. 17 11
      src/main/java/com/its/traf/global/TrafPrcsVo.java
  11. 13 2
      src/main/java/com/its/traf/service/its/TbIfscService.java
  12. 12 0
      src/main/java/com/its/traf/service/its/TbIncdService.java
  13. 14 4
      src/main/java/com/its/traf/service/its/TbLinkService.java
  14. 13 2
      src/main/java/com/its/traf/service/its/TbRoadService.java
  15. 17 9
      src/main/java/com/its/traf/service/its/TbVmsIfscService.java
  16. 22 0
      src/main/java/com/its/traf/service/its/collect/LinkRawDataCollectWorker.java
  17. 13 0
      src/main/java/com/its/traf/service/its/dao/IfscDaoService.java
  18. 13 0
      src/main/java/com/its/traf/service/its/dao/LinkDaoService.java
  19. 3 0
      src/main/java/com/its/traf/service/its/dao/ReptCngsSectDaoService.java
  20. 13 0
      src/main/java/com/its/traf/service/its/dao/RoadDaoService.java
  21. 4 0
      src/main/java/com/its/traf/service/its/dao/VmsIfscDaoService.java
  22. 29 53
      src/main/java/com/its/traf/ui/MainUI.java
  23. 6 1
      src/main/java/com/its/traf/ui/TrafPrcsTableCellRenderer.java
  24. 2 2
      src/main/java/com/its/traf/ui/TrafPrcsTableModel.java
  25. 0 31
      src/main/java/com/its/traf/ui/TrafStatTableCellRenderer.java
  26. 0 147
      src/main/java/com/its/traf/ui/TrafStatTableModel.java
  27. 0 8
      src/main/java/com/its/traf/vo/TrafJobType.java
  28. 0 43
      src/main/java/com/its/traf/vo/TrafStatVo.java
  29. 0 94
      src/main/java/com/its/traf/webapp/config/WebSecurityConfig.java
  30. 0 149
      src/main/java/com/its/traf/webapp/controller/WebAppCommonController.java
  31. 0 23
      src/main/java/com/its/traf/webapp/controller/WebAppController.java
  32. 0 196
      src/main/java/com/its/traf/webapp/security/SessionListener.java
  33. 0 48
      src/main/java/com/its/traf/webapp/security/UserAuthenticationProvider.java
  34. 0 198
      src/main/java/com/its/traf/webapp/service/FileService.java
  35. 0 40
      src/main/java/com/its/traf/webapp/service/UserService.java
  36. 0 19
      src/main/java/com/its/traf/webapp/vo/voFileInfo.java
  37. 0 51
      src/main/java/com/its/traf/webapp/vo/voUser.java
  38. 3 1
      src/main/resources/application-dev.yml
  39. 2 0
      src/main/resources/application-prod.yml
  40. 6 1
      src/main/resources/application.yml
  41. 2 2
      src/main/resources/logback-spring.xml
  42. 2 2
      src/main/resources/mybatis/mapper/utis/collect/LinkRawDataMOCT01.xml
  43. 0 53
      src/main/resources/static/css/jquery.treegrid.css
  44. 0 38
      src/main/resources/static/js/ajax.js
  45. 0 1
      src/main/resources/static/js/jquery-2.2.4.min.js
  46. 0 0
      src/main/resources/static/js/jquery.treegrid.min.js
  47. 0 27
      src/main/resources/static/js/login.js
  48. 0 266
      src/main/resources/static/js/main.js
  49. 0 0
      src/main/resources/static/js/moment.min.js
  50. 0 91
      src/main/webapp/WEB-INF/jsp/cctv.jsp
  51. 0 10
      src/main/webapp/WEB-INF/jsp/head.jsp
  52. 0 12
      src/main/webapp/WEB-INF/jsp/header.jsp
  53. 0 60
      src/main/webapp/WEB-INF/jsp/log.jsp
  54. 0 26
      src/main/webapp/WEB-INF/jsp/login.jsp
  55. 0 20
      src/main/webapp/WEB-INF/jsp/menu.jsp
  56. 0 32
      src/main/webapp/WEB-INF/jsp/system.jsp
  57. 0 91
      src/main/webapp/WEB-INF/jsp/wcam.jsp

+ 6 - 0
src/main/java/com/its/traf/controller/its/TrafPrcs05MController.java

@@ -1,7 +1,9 @@
 package com.its.traf.controller.its;
 
 import com.its.app.utils.TimeUtils;
+import com.its.traf.global.AppRepository;
 import com.its.traf.service.its.*;
+import com.its.traf.global.TrafJobType;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -61,6 +63,8 @@ public class TrafPrcs05MController implements AbstractTrafPrcsController {
             log.error("이전 가공처리가 완료되지 않았습니다.");
         }
 
+        AppRepository.getInstance().startJob(TrafJobType.PRCS_05M_ALL);
+
         // 가공 시작
         this.prcsTime.setProcessing(true);
 
@@ -94,5 +98,7 @@ public class TrafPrcs05MController implements AbstractTrafPrcsController {
 
         // 가공 완료
         this.prcsTime.setProcessing(false);
+
+        AppRepository.getInstance().endJob(TrafJobType.PRCS_05M_ALL, 0, true);
     }
 }

+ 10 - 28
src/main/java/com/its/traf/controller/its/TrafPrcs05MPrepareController.java

@@ -2,9 +2,7 @@ package com.its.traf.controller.its;
 
 import com.its.traf.global.AppRepository;
 import com.its.traf.service.its.*;
-import com.its.traf.ui.MainUI;
-import com.its.traf.vo.TrafJobType;
-import com.its.traf.vo.TrafPrcsVo;
+import com.its.traf.global.TrafJobType;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -51,58 +49,42 @@ public class TrafPrcs05MPrepareController implements AbstractTrafPrcsController
          * 파라미터 정보 로딩
          * 수집시스템정보, 휴일정보, 구간소통등급정보, VMS 정보제공구간 소틍등급, 링크 가공 파라미터정보
          */
-        TrafPrcsVo paraVo = AppRepository.getInstance().getPrcsMap().get(TrafJobType.LOAD_PARAMETER.ordinal());
-        if (paraVo != null) {
-            paraVo.startTime();
-        }
+        AppRepository.getInstance().startJob(TrafJobType.LOAD_ALL);
+
+        AppRepository.getInstance().startJob(TrafJobType.LOAD_PARAMETER);
         this.clctSystStupService.load();
         this.hldyInfrService.load();
         this.sectGradService.load();
         this.vmsIfscCmtrGradService.load();
         this.linkParaSetupService.load();
-        if (paraVo != null) {
-            paraVo.endTime(this.clctSystStupService.count() + this.hldyInfrService.count() + this.sectGradService.count() + this.vmsIfscCmtrGradService.count() + this.linkParaSetupService.count());
-        }
+        AppRepository.getInstance().endJob(TrafJobType.LOAD_PARAMETER, this.clctSystStupService.count() + this.hldyInfrService.count() + this.sectGradService.count() + this.vmsIfscCmtrGradService.count() + this.linkParaSetupService.count(), false);
 
         /*
          * 기초 정보 로딩
          * 링크, 정보제공구간, 도로, VMS 정보제공구간, 동질구간, 정보가공제외구간
          */
-        TrafPrcsVo baseVo = AppRepository.getInstance().getPrcsMap().get(TrafJobType.LOAD_BASEDATA.ordinal());
-        if (baseVo != null) {
-            baseVo.startTime();
-        }
+        AppRepository.getInstance().startJob(TrafJobType.LOAD_BASEDATA);
         this.linkService.load();
         this.ifscService.load();
         this.roadService.load();
         this.vmsIfscService.load();
         this.eqtySectService.load();
         this.incdRstrSectService.load();    // 돌발발생 통제구간으로 소통정보 생성하지 않음.
-        if (baseVo != null) {
-            baseVo.endTime(this.linkService.count() + this.ifscService.count() + this.roadService.count() + this.vmsIfscService.count() + this.eqtySectService.count() + this.incdRstrSectService.count());
-        }
+        AppRepository.getInstance().endJob(TrafJobType.LOAD_BASEDATA, this.linkService.count() + this.ifscService.count() + this.roadService.count() + this.vmsIfscService.count() + this.eqtySectService.count() + this.incdRstrSectService.count(), false);
 
         /*
          * 패턴정보 로딩
          * LINK 5M, LINK 15M, IFSC 5M, ROAD 5M
          */
-        TrafPrcsVo ptrnVo = AppRepository.getInstance().getPrcsMap().get(TrafJobType.LOAD_PATTERN.ordinal());
-        if (ptrnVo != null) {
-            ptrnVo.startTime();
-        }
+        AppRepository.getInstance().startJob(TrafJobType.LOAD_PATTERN);
         this.ptrnLink05MService.load();
         this.ptrnLink15MService.load();
         this.ptrnIfsc05MService.load();
         this.ptrnIfsc15MService.load();
         this.ptrnRoad05MService.load();
         this.ptrnRoad15MService.load();
-        if (ptrnVo != null) {
-            ptrnVo.endTime(this.ptrnLink05MService.count() + this.ptrnLink15MService.count() + this.ptrnIfsc05MService.count() + this.ptrnIfsc15MService.count() + this.ptrnRoad05MService.count() + this.ptrnRoad15MService.count());
-        }
+        AppRepository.getInstance().endJob(TrafJobType.LOAD_PATTERN, this.ptrnLink05MService.count() + this.ptrnLink15MService.count() + this.ptrnIfsc05MService.count() + this.ptrnIfsc15MService.count() + this.ptrnRoad05MService.count() + this.ptrnRoad15MService.count(), false);
 
-        MainUI UI = MainUI.getInstance();
-        if (UI != null) {
-            UI.updateTrafPrcs();
-        }
+        AppRepository.getInstance().endJob(TrafJobType.LOAD_ALL, 0, true);
     }
 }

+ 7 - 0
src/main/java/com/its/traf/controller/its/TrafPrcsDDController.java

@@ -2,6 +2,8 @@ package com.its.traf.controller.its;
 
 import com.its.app.utils.TimeUtils;
 import com.its.traf.define.ITS;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -53,8 +55,13 @@ public class TrafPrcsDDController implements AbstractTrafPrcsController {
         voStat.setSTAT_TO(this.toTime);
         voStat.setDAY_TYPE_CD(weekCd);
 
+        AppRepository.getInstance().startJob(TrafJobType.STAT_LINK_DD);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_STAT_MN_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_IFSC_DD);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_STAT_MN_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_ROAD_DD);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_STAT_MN_CREATE, false, voStat, 1));
 
         // 돌발 구간별 일 통계

+ 8 - 1
src/main/java/com/its/traf/controller/its/TrafPrcsHHController.java

@@ -2,10 +2,12 @@ package com.its.traf.controller.its;
 
 import com.its.app.utils.TimeUtils;
 import com.its.traf.define.ITS;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
-import com.its.traf.service.its.*;
+import com.its.traf.service.its.TbHldyInfrService;
 import com.its.traf.vo.statistics.voStatistics;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -52,8 +54,13 @@ public class TrafPrcsHHController implements AbstractTrafPrcsController {
         voStat.setSTAT_TO(this.toTime);
         voStat.setDAY_TYPE_CD(weekCd);
 
+        AppRepository.getInstance().startJob(TrafJobType.STAT_LINK_HH);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_STAT_HH_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_IFSC_HH);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_STAT_HH_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_ROAD_HH);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_STAT_HH_CREATE, false, voStat, 1));
     }
 }

+ 7 - 0
src/main/java/com/its/traf/controller/its/TrafPrcsMNController.java

@@ -2,6 +2,8 @@ package com.its.traf.controller.its;
 
 import com.its.app.utils.TimeUtils;
 import com.its.traf.define.ITS;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -52,8 +54,13 @@ public class TrafPrcsMNController implements AbstractTrafPrcsController {
         voStat.setSTAT_TO(this.toTime);
         voStat.setDAY_TYPE_CD(weekCd);
 
+        AppRepository.getInstance().startJob(TrafJobType.STAT_LINK_MN);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_STAT_MN_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_IFSC_MN);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_STAT_MN_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_ROAD_MN);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_STAT_MN_CREATE, false, voStat, 1));
 
         // 돌발 구간별 일 통계

+ 5 - 0
src/main/java/com/its/traf/controller/its/TrafPrcsReptCngsSectController.java

@@ -8,6 +8,8 @@ import com.its.traf.dto.its.IfscCngsAvgDto;
 import com.its.traf.dto.its.IfscCngsDto;
 import com.its.traf.dto.its.IfscReptCngsDto;
 import com.its.traf.dto.its.TbIfscDto;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -323,6 +325,8 @@ public class TrafPrcsReptCngsSectController implements AbstractTrafPrcsControlle
 
         if (insLists.size() > 0) {
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_REPT_CNGS_SECT_UPDATE, false, insLists, insLists.size()));
+        } else {
+            AppRepository.getInstance().endJob(TrafJobType.PRCN_REPT_CNGS_SECT, 0, true);
         }
     }
 
@@ -333,6 +337,7 @@ public class TrafPrcsReptCngsSectController implements AbstractTrafPrcsControlle
             return;
         }
 
+        AppRepository.getInstance().startJob(TrafJobType.PRCN_REPT_CNGS_SECT);
         initialize();
         loadCngsLists();
         calcCngsCounts();

+ 7 - 0
src/main/java/com/its/traf/controller/its/TrafPrcsYYController.java

@@ -2,6 +2,8 @@ package com.its.traf.controller.its;
 
 import com.its.app.utils.TimeUtils;
 import com.its.traf.define.ITS;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -52,8 +54,13 @@ public class TrafPrcsYYController implements AbstractTrafPrcsController {
         voStat.setSTAT_TO(this.toTime);
         voStat.setDAY_TYPE_CD(weekCd);
 
+        AppRepository.getInstance().startJob(TrafJobType.STAT_LINK_YY);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_STAT_YY_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_IFSC_YY);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_STAT_YY_CREATE, false, voStat, 1));
+
+        AppRepository.getInstance().startJob(TrafJobType.STAT_ROAD_YY);
         this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_STAT_YY_CREATE, false, voStat, 1));
     }
 }

+ 91 - 7
src/main/java/com/its/traf/global/AppRepository.java

@@ -1,8 +1,6 @@
 package com.its.traf.global;
 
-import com.its.traf.vo.TrafJobType;
-import com.its.traf.vo.TrafPrcsVo;
-import com.its.traf.vo.TrafStatVo;
+import com.its.traf.ui.MainUI;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
@@ -16,7 +14,7 @@ public class AppRepository {
     private static AppRepository _instance = null;
 
     public ConcurrentHashMap<Integer, TrafPrcsVo> prcsMap = null;
-    public ConcurrentHashMap<Integer, TrafStatVo> statMap = null;
+    public ConcurrentHashMap<Integer, TrafPrcsVo> statMap = null;
 
     public static AppRepository getInstance() {
         if (_instance == null) {
@@ -36,15 +34,101 @@ public class AppRepository {
     public void initMap() {
         initPrcsMap();
         initStatMap();
+
+//        TrafJobType arr[] = TrafJobType.values();
+//        for (TrafJobType col : arr) {
+//            System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: " + col + " at index " + col.ordinal());
+//        }
     }
 
     private void initPrcsMap() {
         int idx = 0;
-        this.prcsMap.put(TrafJobType.LOAD_PARAMETER.ordinal(), new TrafPrcsVo(idx++, "파리미터 로딩", "CLCT_SYST_STUP,HLDY_INFR,SECT_GRAD,VMS_IFSC_CMTR_GRAD,LINK_PARA_STUP"));
-        this.prcsMap.put(TrafJobType.LOAD_BASEDATA.ordinal(), new TrafPrcsVo(idx++, "기초정보 로딩", "LINK,IFSC,ROAD,VMS_IFSC,EQTY_SECT,INCD_RSTR_SECT"));
-        this.prcsMap.put(TrafJobType.LOAD_PATTERN.ordinal(), new TrafPrcsVo(idx++, "패턴정보 로딩", "LINK05,IFSC05,ROAD05,LINK15,IFSC15,ROAD15"));
+        this.prcsMap.put(TrafJobType.PRCS_05M_ALL.ordinal(), new TrafPrcsVo(idx++, "교통정보가공", "ALL"));
+
+        this.prcsMap.put(TrafJobType.LOAD_PARAMETER.ordinal(), new TrafPrcsVo(idx++, "기초정보로딩-파리미터", "CLCT_SYST_STUP,HLDY_INFR,SECT_GRAD,VMS_IFSC_CMTR_GRAD,LINK_PARA_STUP"));
+        this.prcsMap.put(TrafJobType.LOAD_BASEDATA.ordinal(), new TrafPrcsVo(idx++, "기초정보로딩-기본정보", "LINK,IFSC,ROAD,VMS_IFSC,EQTY_SECT,INCD_RSTR_SECT"));
+        this.prcsMap.put(TrafJobType.LOAD_PATTERN.ordinal(), new TrafPrcsVo(idx++, "기초정보로딩-패턴정보", "LINK05,IFSC05,ROAD05,LINK15,IFSC15,ROAD15"));
+        this.prcsMap.put(TrafJobType.LOAD_ALL.ordinal(), new TrafPrcsVo(idx++, "기초정보로딩", "ALL"));
+
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_INCD.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-돌발", "INCD_OCRR,INCD_RSTR_SECT"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_OPER.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-운영자", "LINK_SYOP_TRAF,IFSC_RLTN_LINK"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_VDS.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-VDS", "VDS_DTCT_CLCT,VDS_DTCT_RLTN_LINK,VDS_DTCT"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_DSRC.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-DSRC", "RSE_SECT_RLTN_LINK,RSE_SECT_TRAF"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_MOCT.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-민간정보연계", "TRAFFIC_MOCT,LINK"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_GITS.ordinal(), new TrafPrcsVo(idx++, "소통정보수집-경기도연계", "EI_LINK_CUR,LINK"));
+        this.prcsMap.put(TrafJobType.PRCS_LOAD_RAW_ALL.ordinal(), new TrafPrcsVo(idx++, "소통정보수집", "ALL"));
+
+        this.prcsMap.put(TrafJobType.PRCS_LINK_TRAF.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-LINK-TRAF", "LINK_TRAF"));
+        this.prcsMap.put(TrafJobType.PRCS_LINK_TRAF_HS.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-LINK-TRAF-HS", "LINK_TRAF_HS"));
+        this.prcsMap.put(TrafJobType.PRCS_IFSC_TRAF.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-IFSC-TRAF", "IFSC_TRAF"));
+        this.prcsMap.put(TrafJobType.PRCS_IFSC_TRAF_HS.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-IFSC-TRAF-HS", "IFSC_TRAF_HS"));
+        this.prcsMap.put(TrafJobType.PRCS_ROAD_TRAF.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-ROAD-TRAF", "ROAD_TRAF"));
+        this.prcsMap.put(TrafJobType.PRCS_ROAD_TRAF_HS.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-ROAD-TRAF-HS", "ROAD_TRAF_HS"));
+        this.prcsMap.put(TrafJobType.PRCS_VMS_TRAF.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-VMS-TRAF", "VMS_TRAF"));
+        this.prcsMap.put(TrafJobType.PRCS_VMS_TRAF_HS.ordinal(), new TrafPrcsVo(idx++, "소통정보가공-VMS-TRAF-HS", "VMS_TRAF_HS"));
+
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_LINK_05M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-LINK-05M", "LINK_PTRN_5M"));
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_IFSC_05M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-IFSC-05M", "IFSC_PTRN_5M"));
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_ROAD_05M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-ROAD-05M", "ROAD_PTRN_5M"));
+
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_LINK_15M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-LINK-15M", "LINK_PTRN_15M"));
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_IFSC_15M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-IFSC-15M", "IFSC_PTRN_15M"));
+        this.prcsMap.put(TrafJobType.PRCS_PTRN_ROAD_15M.ordinal(), new TrafPrcsVo(idx++, "패턴정보생성-ROAD-15M", "ROAD_PTRN_15M"));
     }
     private void initStatMap() {
+        int idx = 0;
+        this.statMap.put(TrafJobType.STAT_LINK_15M.ordinal(), new TrafPrcsVo(idx++, "15분통계-LINK-15M", "LINK_STAT_15M"));
+        this.statMap.put(TrafJobType.STAT_IFSC_15M.ordinal(), new TrafPrcsVo(idx++, "15분통계-IFSC-15M", "IFSC_STAT_15M"));
+        this.statMap.put(TrafJobType.STAT_ROAD_15M.ordinal(), new TrafPrcsVo(idx++, "15분통계-ROAD-15M", "ROAD_STAT_15M"));
+
+        this.statMap.put(TrafJobType.STAT_LINK_HH.ordinal(), new TrafPrcsVo(idx++, "시간통계-LINK-HH", "LINK_STAT_HH"));
+        this.statMap.put(TrafJobType.STAT_IFSC_HH.ordinal(), new TrafPrcsVo(idx++, "시간통계-IFSC-HH", "IFSC_STAT_HH"));
+        this.statMap.put(TrafJobType.STAT_ROAD_HH.ordinal(), new TrafPrcsVo(idx++, "시간통계-ROAD-HH", "ROAD_STAT_HH"));
+
+        this.statMap.put(TrafJobType.STAT_LINK_DD.ordinal(), new TrafPrcsVo(idx++, "일 통계-LINK-DD", "LINK_STAT_DD"));
+        this.statMap.put(TrafJobType.STAT_IFSC_DD.ordinal(), new TrafPrcsVo(idx++, "일 통계-IFSC-DD", "IFSC_STAT_DD"));
+        this.statMap.put(TrafJobType.STAT_ROAD_DD.ordinal(), new TrafPrcsVo(idx++, "일 통계-ROAD-DD", "ROAD_STAT_DD"));
+
+        this.statMap.put(TrafJobType.STAT_LINK_MN.ordinal(), new TrafPrcsVo(idx++, "월 통계-LINK-MN", "LINK_STAT_MN"));
+        this.statMap.put(TrafJobType.STAT_IFSC_MN.ordinal(), new TrafPrcsVo(idx++, "월 통계-IFSC-MN", "IFSC_STAT_MN"));
+        this.statMap.put(TrafJobType.STAT_ROAD_MN.ordinal(), new TrafPrcsVo(idx++, "월 통계-ROAD-MN", "ROAD_STAT_MN"));
+
+        this.statMap.put(TrafJobType.STAT_LINK_YY.ordinal(), new TrafPrcsVo(idx++, "년 통계-LINK-YY", "LINK_STAT_YY"));
+        this.statMap.put(TrafJobType.STAT_IFSC_YY.ordinal(), new TrafPrcsVo(idx++, "년 통계-IFSC-YY", "IFSC_STAT_YY"));
+        this.statMap.put(TrafJobType.STAT_ROAD_YY.ordinal(), new TrafPrcsVo(idx++, "년 통계-ROAD-YY", "ROAD_STAT_YY"));
 
+        this.statMap.put(TrafJobType.PRCN_REPT_CNGS_SECT.ordinal(), new TrafPrcsVo(idx++, "반복정체판정", "REPT_CNGS_SECT"));
+    }
+
+    public void startJob(TrafJobType jobType) {
+        TrafPrcsVo prcsVo = AppRepository.getInstance().getPrcsMap().get(jobType.ordinal());
+        if (prcsVo == null) {
+            prcsVo = AppRepository.getInstance().getStatMap().get(jobType.ordinal());
+        }
+        if (prcsVo != null) {
+            prcsVo.startTime();
+        }
+    }
+
+    public void endJob(TrafJobType jobType, int jobCount, boolean isUIUpdate) {
+        boolean isStat = false;
+        TrafPrcsVo prcsVo = AppRepository.getInstance().getPrcsMap().get(jobType.ordinal());
+        if (prcsVo == null) {
+            isStat = true;
+            prcsVo = AppRepository.getInstance().getStatMap().get(jobType.ordinal());
+        }
+        if (prcsVo != null) {
+            prcsVo.endTime(jobCount);
+        }
+        if (isUIUpdate) {
+            MainUI UI = MainUI.getInstance();
+            if (UI != null) {
+                if (isStat) {
+                    UI.updateTrafStat();
+                } else {
+                    UI.updateTrafPrcs();
+                }
+            }
+        }
     }
 }

+ 57 - 0
src/main/java/com/its/traf/global/TrafJobType.java

@@ -0,0 +1,57 @@
+package com.its.traf.global;
+
+public enum TrafJobType {
+
+    PRCS_05M_ALL,
+    LOAD_PARAMETER,
+    LOAD_BASEDATA,
+    LOAD_PATTERN,
+    LOAD_ALL,
+
+    PRCS_LOAD_INCD,
+    PRCS_LOAD_RAW_OPER,
+    PRCS_LOAD_RAW_VDS,
+    PRCS_LOAD_RAW_DSRC,
+    PRCS_LOAD_RAW_MOCT,
+    PRCS_LOAD_RAW_GITS,
+    PRCS_LOAD_RAW_ALL,
+
+    PRCS_LINK_TRAF,
+    PRCS_LINK_TRAF_HS,
+    PRCS_IFSC_TRAF,
+    PRCS_IFSC_TRAF_HS,
+    PRCS_ROAD_TRAF,
+    PRCS_ROAD_TRAF_HS,
+    PRCS_VMS_TRAF,
+    PRCS_VMS_TRAF_HS,
+
+    PRCS_PTRN_LINK_05M,
+    PRCS_PTRN_IFSC_05M,
+    PRCS_PTRN_ROAD_05M,
+    PRCS_PTRN_LINK_15M,
+    PRCS_PTRN_IFSC_15M,
+    PRCS_PTRN_ROAD_15M,
+
+    /////////////////////////////////////////////////////////////////////////////////////////
+    STAT_LINK_15M,
+    STAT_IFSC_15M,
+    STAT_ROAD_15M,
+
+    STAT_LINK_HH,
+    STAT_IFSC_HH,
+    STAT_ROAD_HH,
+
+    STAT_LINK_DD,
+    STAT_IFSC_DD,
+    STAT_ROAD_DD,
+
+    STAT_LINK_MN,
+    STAT_IFSC_MN,
+    STAT_ROAD_MN,
+
+    STAT_LINK_YY,
+    STAT_IFSC_YY,
+    STAT_ROAD_YY,
+
+    PRCN_REPT_CNGS_SECT,
+}

+ 17 - 11
src/main/java/com/its/traf/vo/TrafPrcsVo.java → src/main/java/com/its/traf/global/TrafPrcsVo.java

@@ -1,4 +1,4 @@
-package com.its.traf.vo;
+package com.its.traf.global;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -10,34 +10,40 @@ import lombok.ToString;
 public class TrafPrcsVo {
     private int    index;
     private int    jobSeq;
-    private String job;
+    private String jobName;
     private String target;
 
     private long startTm;
     private long endTm;
-    private int  jobCount;
-    private int  jobTm;
-    private int  avgJobTm;
+    private long jobCount;
+    private long jobTm;
+    private long avgJobTm;
+    private long totalJobRuns;
 
-    public TrafPrcsVo(int jobSeq, String job, String target) {
+    public TrafPrcsVo(int jobSeq, String jobName, String target) {
+        this.index = 0;
         this.jobSeq = jobSeq;
-        this.job = job;
+        this.jobName = jobName;
         this.target = target;
         this.jobTm = 0;
         this.avgJobTm = 0;
+        this.totalJobRuns = 0;
     }
 
     public void startTime() {
         this.startTm = System.currentTimeMillis();
+        this.jobCount = 0;
+        this.totalJobRuns++;
     }
+
     public void endTime(int jobCount) {
-        this.jobCount = jobCount;
+        this.jobCount += jobCount;
         this.endTm = System.currentTimeMillis();
-        this.jobTm = (int)(this.endTm - this.startTm);
+        this.jobTm = this.endTm - this.startTm;
         if (this.avgJobTm > 0) {
-            this.avgJobTm = this.jobTm;
-        } else {
             this.avgJobTm = (this.jobTm + this.avgJobTm) / 2;
+        } else {
+            this.avgJobTm = this.jobTm;
         }
     }
 }

+ 13 - 2
src/main/java/com/its/traf/service/its/TbIfscService.java

@@ -6,6 +6,8 @@ import com.its.traf.dao.repository.its.TbIfscRltnLinkRepository;
 import com.its.traf.dto.its.*;
 import com.its.traf.entity.its.TbIfsc;
 import com.its.traf.entity.its.TbIfscRltnLink;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -224,8 +226,14 @@ public class TbIfscService extends AbstractDataService<Long, TbIfscDto> implemen
             }
         }
 
-        this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_TRAF_UPDATE, false, updLists, updLists.size()));
-        this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_IFSC_TRAF);
+            this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_TRAF_UPDATE, false, updLists, updLists.size()));
+        //}
+        //if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_IFSC_TRAF_HS);
+            this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //}
     }
 
     /**
@@ -301,6 +309,7 @@ public class TbIfscService extends AbstractDataService<Long, TbIfscDto> implemen
         }
 
         if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.STAT_IFSC_15M);
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_STAT_15M_INSERT, false, insLists, insLists.size()));
         }
     }
@@ -381,6 +390,7 @@ public class TbIfscService extends AbstractDataService<Long, TbIfscDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_IFSC_05M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_PTRN_HLDY_05M_UPDATE, false, updLists, updLists.size()));
             } else {
@@ -484,6 +494,7 @@ public class TbIfscService extends AbstractDataService<Long, TbIfscDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_IFSC_15M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_IFSC_PTRN_HLDY_15M_UPDATE, false, updLists, updLists.size()));
             } else {

+ 12 - 0
src/main/java/com/its/traf/service/its/TbIncdService.java

@@ -3,7 +3,10 @@ package com.its.traf.service.its;
 import com.its.traf.dao.mapper.its.IncdMapper;
 import com.its.traf.dto.its.TbIncdOcrrDto;
 import com.its.traf.dto.its.TbLinkDto;
+import com.its.traf.global.AppRepository;
 import com.its.traf.service.AbstractDataService;
+import com.its.traf.global.TrafJobType;
+import com.its.traf.global.TrafPrcsVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -38,6 +41,11 @@ public class TbIncdService extends AbstractDataService<Long, TbIncdOcrrDto> {
 
         init();
 
+        TrafPrcsVo prcsVo = AppRepository.getInstance().getPrcsMap().get(TrafJobType.PRCS_LOAD_INCD.ordinal());
+        if (prcsVo != null) {
+            prcsVo.startTime();
+        }
+
         List<TbIncdOcrrDto> lists = this.mapper.selectIncdOcrr();
         for (TbIncdOcrrDto incd: lists) {
             TbLinkDto link = this.linkService.get(incd.getLinkId());
@@ -46,6 +54,10 @@ public class TbIncdService extends AbstractDataService<Long, TbIncdOcrrDto> {
             }
         }
         this.dataNum = lists.size();
+
+        if (prcsVo != null) {
+            prcsVo.endTime(this.dataNum);
+        }
         return this.dataNum;
     }
 

+ 14 - 4
src/main/java/com/its/traf/service/its/TbLinkService.java

@@ -5,6 +5,7 @@ import com.its.traf.dao.repository.its.TbLinkRepository;
 import com.its.traf.define.ITS;
 import com.its.traf.dto.its.*;
 import com.its.traf.entity.its.TbLink;
+import com.its.traf.global.AppRepository;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -16,6 +17,7 @@ import com.its.traf.service.its.prcs.TrafPrcsCorrectAlgo;
 import com.its.traf.service.its.prcs.TrafPrcsFilteringAlgo;
 import com.its.traf.service.its.prcs.TrafPrcsFusionAlgo;
 import com.its.traf.service.its.prcs.TrafPrcsSmoothingAlgo;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.vo.traffic.voLinkFilter;
 import com.its.traf.vo.traffic.voLinkTraf;
 import lombok.RequiredArgsConstructor;
@@ -168,7 +170,9 @@ public class TbLinkService extends AbstractDataService<Long, TbLinkDto> implemen
     @SchedulerElapsed
     public void collect() {
         // 원시 수집 교통정보 로딩
+        AppRepository.getInstance().startJob(TrafJobType.PRCS_LOAD_RAW_ALL);
         this.linkRawDataCollectService.collect();
+        AppRepository.getInstance().endJob(TrafJobType.PRCS_LOAD_RAW_ALL, 0, true);
     }
 
     /*
@@ -543,12 +547,15 @@ public class TbLinkService extends AbstractDataService<Long, TbLinkDto> implemen
                 this.missNum++;
             }
         }
-        if (updLists.size() > 0) {
+
+        //if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_LINK_TRAF);
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_TRAF_UPDATE, false, updLists, updLists.size()));
-        }
-        if (insLists.size() > 0) {
+        //}
+        //if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_LINK_TRAF_HS);
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_TRAF_HS_INSERT, false, insLists, insLists.size()));
-        }
+        //}
     }
 
     @SchedulerElapsed
@@ -670,6 +677,7 @@ public class TbLinkService extends AbstractDataService<Long, TbLinkDto> implemen
         }
 
         if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.STAT_LINK_15M);
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_STAT_15M_INSERT, false, insLists, insLists.size()));
         }
     }
@@ -767,6 +775,7 @@ public class TbLinkService extends AbstractDataService<Long, TbLinkDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_LINK_05M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_PTRN_HLDY_05M_UPDATE, false, updLists, updLists.size()));
             } else {
@@ -870,6 +879,7 @@ public class TbLinkService extends AbstractDataService<Long, TbLinkDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_LINK_15M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_LINK_PTRN_HLDY_15M_UPDATE, false, updLists, updLists.size()));
             } else {

+ 13 - 2
src/main/java/com/its/traf/service/its/TbRoadService.java

@@ -6,6 +6,8 @@ import com.its.traf.dao.repository.its.TbRoadRltnIfscRepository;
 import com.its.traf.dto.its.*;
 import com.its.traf.entity.its.TbRoad;
 import com.its.traf.entity.its.TbRoadRltnIfsc;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -225,8 +227,14 @@ public class TbRoadService extends AbstractDataService<Long, TbRoadDto> implemen
             }
         }
 
-        this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_TRAF_UPDATE, false, updLists, updLists.size()));
-        this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_ROAD_TRAF);
+            this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_TRAF_UPDATE, false, updLists, updLists.size()));
+        //}
+        //if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_ROAD_TRAF_HS);
+            this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //}
     }
 
     /**
@@ -302,6 +310,7 @@ public class TbRoadService extends AbstractDataService<Long, TbRoadDto> implemen
         }
 
         if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.STAT_ROAD_15M);
             this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_STAT_15M_INSERT, false, insLists, insLists.size()));
         }
     }
@@ -382,6 +391,7 @@ public class TbRoadService extends AbstractDataService<Long, TbRoadDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_ROAD_05M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_PTRN_HLDY_05M_UPDATE, false, updLists, updLists.size()));
             } else {
@@ -485,6 +495,7 @@ public class TbRoadService extends AbstractDataService<Long, TbRoadDto> implemen
         }
 
         if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_PTRN_ROAD_15M);
             if (this.hldyService.isHoliday()) {
                 this.dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_ROAD_PTRN_HLDY_15M_UPDATE, false, updLists, updLists.size()));
             } else {

+ 17 - 9
src/main/java/com/its/traf/service/its/TbVmsIfscService.java

@@ -9,6 +9,8 @@ import com.its.traf.dto.its.TbVmsIfscDto;
 import com.its.traf.dto.its.TbVmsIfscRltnIfscDto;
 import com.its.traf.entity.its.TbVmsIfsc;
 import com.its.traf.entity.its.TbVmsIfscRltnIfsc;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsData;
 import com.its.traf.process.DbmsDataProcess;
 import com.its.traf.process.DbmsDataType;
@@ -169,7 +171,7 @@ public class TbVmsIfscService extends AbstractDataService<Long, TbVmsIfscDto> im
     public void saveTraffic() {
         List<HashMap<String, Object>> updLists = new ArrayList<HashMap<String, Object>>();
         List<HashMap<String, Object>> insLists = new ArrayList<HashMap<String, Object>>();
-        for(Long id: keySet()) {
+        for (Long id : keySet()) {
             TbVmsIfscDto vmsIfsc = get(id);
             if ("N".equals(vmsIfsc.getUseYn())) {
                 continue;
@@ -178,12 +180,12 @@ public class TbVmsIfscService extends AbstractDataService<Long, TbVmsIfscDto> im
 
             voVmsIfscTraf traf = vmsIfsc.getTrafV();
             HashMap<String, Object> param = new HashMap<String, Object>();
-            param.put("VMS_IFSC_ID",    traf.getVMS_IFSC_ID());
-            param.put("CURR_DT",        traf.getCURR_DT());
-            param.put("PRCN_DT",        traf.getPRCN_DT());
-            param.put("SPED",           traf.getSPED());
-            param.put("TRVL_HH",        traf.getTRVL_HH());
-            param.put("CMTR_GRAD_CD",   traf.getCMTR_GRAD_CD());
+            param.put("VMS_IFSC_ID", traf.getVMS_IFSC_ID());
+            param.put("CURR_DT", traf.getCURR_DT());
+            param.put("PRCN_DT", traf.getPRCN_DT());
+            param.put("SPED", traf.getSPED());
+            param.put("TRVL_HH", traf.getTRVL_HH());
+            param.put("CMTR_GRAD_CD", traf.getCMTR_GRAD_CD());
             updLists.add(param);
             if (traf.getSPED() > 0) {
                 insLists.add(param);
@@ -198,7 +200,13 @@ public class TbVmsIfscService extends AbstractDataService<Long, TbVmsIfscDto> im
         }
 
         DbmsDataProcess dbmsDataProcess = (DbmsDataProcess) AppUtils.getBean(DbmsDataProcess.class);
-        dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_VMS_IFSC_TRAF_UPDATE, false, updLists, updLists.size()));
-        dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_VMS_IFSC_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //if (updLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_VMS_TRAF);
+            dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_VMS_IFSC_TRAF_UPDATE, false, updLists, updLists.size()));
+        //}
+        //if (insLists.size() > 0) {
+            AppRepository.getInstance().startJob(TrafJobType.PRCS_VMS_TRAF_HS);
+            dbmsDataProcess.add(new DbmsData(DbmsDataType.TB_VMS_IFSC_TRAF_HS_INSERT, false, insLists, insLists.size()));
+        //}
     }
 }

+ 22 - 0
src/main/java/com/its/traf/service/its/collect/LinkRawDataCollectWorker.java

@@ -3,7 +3,9 @@ package com.its.traf.service.its.collect;
 import com.its.traf.config.AppUtils;
 import com.its.traf.dto.its.LinkRawDataDto;
 import com.its.traf.dto.its.LinkRawDataResultDto;
+import com.its.traf.global.AppRepository;
 import com.its.traf.service.its.dao.LinkRawDataDaoService;
+import com.its.traf.global.TrafJobType;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -26,6 +28,23 @@ public class LinkRawDataCollectWorker implements Runnable {
     public void run() {
         SqlSessionFactory sqlSessionFactory = null;
         String beanName = this.CLCT_SYST_CD.toLowerCase();
+
+        TrafJobType jobType = null;
+        if ("oper01".equals(beanName)) {
+            jobType = TrafJobType.PRCS_LOAD_RAW_OPER;
+        } else if ("vds01".equals(beanName)) {
+            jobType = TrafJobType.PRCS_LOAD_RAW_VDS;
+        } else if ("dsrc01".equals(beanName)) {
+            jobType = TrafJobType.PRCS_LOAD_RAW_DSRC;
+        } else if ("moct01".equals(beanName)) {
+            jobType = TrafJobType.PRCS_LOAD_RAW_MOCT;
+        } else if ("gits01".equals(beanName)) {
+            jobType = TrafJobType.PRCS_LOAD_RAW_GITS;
+        }
+        if (jobType != null) {
+            AppRepository.getInstance().startJob(jobType);
+        }
+
         try {
             sqlSessionFactory = (SqlSessionFactory)AppUtils.getBean(beanName);
         } catch (Exception e) {
@@ -46,6 +65,9 @@ public class LinkRawDataCollectWorker implements Runnable {
         } catch (Exception e) {
             this.mapData.put(this.CLCT_SYST_CD, LinkRawDataResultDto.builder().CLCT_SYST_CD(this.CLCT_SYST_CD).lists(new ArrayList<>()).build());
         }
+        if (jobType != null) {
+            AppRepository.getInstance().endJob(jobType, this.mapData.get(this.CLCT_SYST_CD).getLists().size(), false);
+        }
     }
 
 }

+ 13 - 0
src/main/java/com/its/traf/service/its/dao/IfscDaoService.java

@@ -1,6 +1,8 @@
 package com.its.traf.service.its.dao;
 
 import com.its.traf.dao.mapper.its.IfscMapper;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsDataType;
 import com.its.traf.vo.statistics.voStatistics;
 import lombok.extern.slf4j.Slf4j;
@@ -38,15 +40,19 @@ public class IfscDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_IFSC_STAT_HH_CREATE:
                 result = this.mapper.createIfscTrafStatHh((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_IFSC_HH, result, true);
                 break;
             case TB_IFSC_STAT_DD_CREATE:
                 result = this.mapper.createIfscTrafStatDd((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_IFSC_DD, result, true);
                 break;
             case TB_IFSC_STAT_MN_CREATE:
                 result = this.mapper.createIfscTrafStatMn((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_IFSC_MN, result, true);
                 break;
             case TB_IFSC_STAT_YY_CREATE:
                 result = this.mapper.createIfscTrafStatYy((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_IFSC_YY, result, true);
                 break;
             default:
                 log.error("[DIRECT-SQL] {}: ..END. [{}], Unknown SQL Type.", proceedName, type.name());
@@ -69,9 +75,11 @@ public class IfscDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_IFSC_TRAF_HS_INSERT:
                 result = insertBatch("insertIfscTrafHs", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_IFSC_TRAF_HS, result, true);
                 break;
             case TB_IFSC_STAT_15M_INSERT:
                 result = insertBatch("insertIfscTrafStat15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_IFSC_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-INST] {}: ..END. [{}], Unknown BATCH INSERT Type.", proceedName, type.name());
@@ -95,18 +103,23 @@ public class IfscDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_IFSC_TRAF_UPDATE:
                 result = updateBatch("updateIfscTraf", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_IFSC_TRAF, result, true);
                 break;
             case TB_IFSC_PTRN_05M_UPDATE:
                 result = updateBatch("updateIfscPtrn05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_IFSC_05M, result, true);
                 break;
             case TB_IFSC_PTRN_HLDY_05M_UPDATE:
                 result = updateBatch("updateIfscPtrnHldy05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_IFSC_05M, result, true);
                 break;
             case TB_IFSC_PTRN_15M_UPDATE:
                 result = updateBatch("updateIfscPtrn15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_IFSC_15M, result, true);
                 break;
             case TB_IFSC_PTRN_HLDY_15M_UPDATE:
                 result = updateBatch("updateIfscPtrnHldy15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_IFSC_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-UPDT] {}: ..END. [{}], Unknown BATCH UPDATE Type.", proceedName, type.name());

+ 13 - 0
src/main/java/com/its/traf/service/its/dao/LinkDaoService.java

@@ -2,6 +2,8 @@ package com.its.traf.service.its.dao;
 
 import com.its.traf.dao.mapper.its.LinkMapper;
 import com.its.traf.dto.its.TbTrafPrcnStatDto;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsDataType;
 import com.its.traf.vo.statistics.voStatistics;
 import lombok.extern.slf4j.Slf4j;
@@ -42,15 +44,19 @@ public class LinkDaoService extends BatchDaoService implements AbstractDaoServic
                 break;
             case TB_LINK_STAT_HH_CREATE:
                 result = this.mapper.createLinkTrafStatHh((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_LINK_HH, result, true);
                 break;
             case TB_LINK_STAT_DD_CREATE:
                 result = this.mapper.createLinkTrafStatDd((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_LINK_DD, result, true);
                 break;
             case TB_LINK_STAT_MN_CREATE:
                 result = this.mapper.createLinkTrafStatMn((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_LINK_MN, result, true);
                 break;
             case TB_LINK_STAT_YY_CREATE:
                 result = this.mapper.createLinkTrafStatYy((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_LINK_YY, result, true);
                 break;
             default:
                 log.error("[DIRECT-SQL] {}: ..END. [{}], Unknown SQL Type.", proceedName, type.name());
@@ -73,6 +79,7 @@ public class LinkDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_LINK_TRAF_HS_INSERT:
                 result = insertBatch("insertLinkTrafHs", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_LINK_TRAF_HS, result, true);
                 break;
             case TB_LINK_TRAF_CLCT_HS_INSERT:
                 result = insertBatch("insertLinkTrafClctHs", lists);
@@ -85,6 +92,7 @@ public class LinkDaoService extends BatchDaoService implements AbstractDaoServic
                 break;
             case TB_LINK_STAT_15M_INSERT:
                 result = insertBatch("insertLinkTrafStat15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_LINK_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-INST] {}: ..END. [{}], Unknown BATCH INSERT Type.", proceedName, type.name());
@@ -108,18 +116,23 @@ public class LinkDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_LINK_TRAF_UPDATE:
                 result = updateBatch("updateLinkTraf", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_LINK_TRAF, result, true);
                 break;
             case TB_LINK_PTRN_05M_UPDATE:
                 result = updateBatch("updateLinkPtrn05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_LINK_05M, result, true);
                 break;
             case TB_LINK_PTRN_HLDY_05M_UPDATE:
                 result = updateBatch("updateLinkPtrnHldy05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_LINK_05M, result, true);
                 break;
             case TB_LINK_PTRN_15M_UPDATE:
                 result = updateBatch("updateLinkPtrn15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_LINK_15M, result, true);
                 break;
             case TB_LINK_PTRN_HLDY_15M_UPDATE:
                 result = updateBatch("updateLinkPtrnHldy15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_LINK_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-UPDT] {}: ..END. [{}], Unknown BATCH UPDATE Type.", proceedName, type.name());

+ 3 - 0
src/main/java/com/its/traf/service/its/dao/ReptCngsSectDaoService.java

@@ -1,6 +1,8 @@
 package com.its.traf.service.its.dao;
 
 import com.its.traf.dao.mapper.its.ReptCngsSectMapper;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsDataType;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -47,6 +49,7 @@ public class ReptCngsSectDaoService extends BatchDaoService implements AbstractD
         int result = 0;
         if (type == DbmsDataType.TB_REPT_CNGS_SECT_UPDATE) {
             result = updateBatch("updateReptCngsSect", lists);
+            AppRepository.getInstance().endJob(TrafJobType.PRCN_REPT_CNGS_SECT, result, true);
         }
         else {
             log.error("[BATCH-UPDT] {}: ..END. [{}], Unknown BATCH UPDATE Type.", proceedName, type.name());

+ 13 - 0
src/main/java/com/its/traf/service/its/dao/RoadDaoService.java

@@ -1,6 +1,8 @@
 package com.its.traf.service.its.dao;
 
 import com.its.traf.dao.mapper.its.RoadMapper;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsDataType;
 import com.its.traf.vo.statistics.voStatistics;
 import lombok.extern.slf4j.Slf4j;
@@ -38,15 +40,19 @@ public class RoadDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_ROAD_STAT_HH_CREATE:
                 result = this.mapper.createRoadTrafStatHh((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_ROAD_HH, result, true);
                 break;
             case TB_ROAD_STAT_DD_CREATE:
                 result = this.mapper.createRoadTrafStatDd((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_ROAD_DD, result, true);
                 break;
             case TB_ROAD_STAT_MN_CREATE:
                 result = this.mapper.createRoadTrafStatMn((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_ROAD_MN, result, true);
                 break;
             case TB_ROAD_STAT_YY_CREATE:
                 result = this.mapper.createRoadTrafStatYy((voStatistics)obj);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_ROAD_YY, result, true);
                 break;
             default:
                 log.error("[DIRECT-SQL] {}: ..END. [{}], Unknown SQL Type.", proceedName, type.name());
@@ -69,9 +75,11 @@ public class RoadDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_ROAD_TRAF_HS_INSERT:
                 result = insertBatch("insertRoadTrafHs", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_ROAD_TRAF_HS, result, true);
                 break;
             case TB_ROAD_STAT_15M_INSERT:
                 result = insertBatch("insertRoadTrafStat15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.STAT_ROAD_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-INST] {}: ..END. [{}], Unknown BATCH INSERT Type.", proceedName, type.name());
@@ -95,18 +103,23 @@ public class RoadDaoService extends BatchDaoService implements AbstractDaoServic
         switch(type) {
             case TB_ROAD_TRAF_UPDATE:
                 result = updateBatch("updateRoadTraf", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_ROAD_TRAF, result, true);
                 break;
             case TB_ROAD_PTRN_05M_UPDATE:
                 result = updateBatch("updateRoadPtrn05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_ROAD_05M, result, true);
                 break;
             case TB_ROAD_PTRN_HLDY_05M_UPDATE:
                 result = updateBatch("updateRoadPtrnHldy05M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_ROAD_05M, result, true);
                 break;
             case TB_ROAD_PTRN_15M_UPDATE:
                 result = updateBatch("updateRoadPtrn15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_ROAD_15M, result, true);
                 break;
             case TB_ROAD_PTRN_HLDY_15M_UPDATE:
                 result = updateBatch("updateRoadPtrnHldy15M", lists);
+                AppRepository.getInstance().endJob(TrafJobType.PRCS_PTRN_ROAD_15M, result, true);
                 break;
             default:
                 log.error("[BATCH-UPDT] {}: ..END. [{}], Unknown BATCH UPDATE Type.", proceedName, type.name());

+ 4 - 0
src/main/java/com/its/traf/service/its/dao/VmsIfscDaoService.java

@@ -1,6 +1,8 @@
 package com.its.traf.service.its.dao;
 
 import com.its.traf.dao.mapper.its.LinkMapper;
+import com.its.traf.global.AppRepository;
+import com.its.traf.global.TrafJobType;
 import com.its.traf.process.DbmsDataType;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.SqlSessionFactory;
@@ -42,6 +44,7 @@ public class VmsIfscDaoService extends BatchDaoService implements AbstractDaoSer
         int result = 0;
         if (type == DbmsDataType.TB_VMS_IFSC_TRAF_HS_INSERT) {
             result = updateBatch("insertVmsIfscTrafHs", lists);
+            AppRepository.getInstance().endJob(TrafJobType.PRCS_VMS_TRAF_HS, result, true);
             lists.clear();
         }
         else {
@@ -63,6 +66,7 @@ public class VmsIfscDaoService extends BatchDaoService implements AbstractDaoSer
         int result = 0;
         if (type == DbmsDataType.TB_VMS_IFSC_TRAF_UPDATE) {
             result = updateBatch("updateVmsIfscTraf", lists);
+            AppRepository.getInstance().endJob(TrafJobType.PRCS_VMS_TRAF, result, true);
         }
         else {
             log.error("[BATCH-UPDT] {}: ..END. [{}], Unknown BATCH UPDATE Type.", proceedName, type.name());

+ 29 - 53
src/main/java/com/its/traf/ui/MainUI.java

@@ -4,10 +4,8 @@ import com.intellij.uiDesigner.core.GridConstraints;
 import com.intellij.uiDesigner.core.GridLayoutManager;
 import com.intellij.uiDesigner.core.Spacer;
 import com.its.app.utils.SysUtils;
-import com.its.traf.entity.TrafPrcsInfr;
 import com.its.traf.global.AppRepository;
-import com.its.traf.vo.TrafPrcsVo;
-import com.its.traf.vo.TrafStatVo;
+import com.its.traf.global.TrafPrcsVo;
 import com.sun.management.OperatingSystemMXBean;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
@@ -41,9 +39,9 @@ public class MainUI {
     private Long tick = Long.valueOf(0);
 
     private TrafPrcsTableModel trafPrcsTableModel = null;
-    private TrafStatTableModel trafStatTableModel = null;
+    private TrafPrcsTableModel trafStatTableModel = null;
     private TableCellRenderer cellPrcsRender = new TrafPrcsTableCellRenderer();
-    private TableCellRenderer cellStatRender = new TrafStatTableCellRenderer();
+    private TableCellRenderer cellStatRender = new TrafPrcsTableCellRenderer();
 
     private JPanel rootPanel;
     private JPanel pnlCtlr;
@@ -160,30 +158,12 @@ public class MainUI {
 
     }
 
-    public boolean updateControllerInfo() {
-//        int row = tblCtlrList.getSelectedRow();
-//        if (row < 0) {
-//            return false;
-//        }
-//
-//        txtId.setText("");
-//        txtName.setText("");
-//        TrafPrcsTableModel tableModel = (TrafPrcsTableModel) tblCtlrList.getModel();
-//        selObj = tableModel.getControllerInfo(row);
-//        if (selObj != null) {
-//            //txtId.setText(selObj.getRSE_ID());
-//            txtName.setText(selObj.getRSE_NM());
-//            return true;
-//        }
-        return false;
-    }
-
     /**
      * 목록 헤더 생성
      */
-    private void initTblListUI(List<TrafPrcsVo> prcsList, List<TrafStatVo> statList) {
+    private void initTblListUI(List<TrafPrcsVo> prcsList, List<TrafPrcsVo> statList) {
         this.trafPrcsTableModel = new TrafPrcsTableModel(prcsList);
-        this.trafStatTableModel = new TrafStatTableModel(statList);
+        this.trafStatTableModel = new TrafPrcsTableModel(statList);
         listPrcs.setModel(this.trafPrcsTableModel);
         listStat.setModel(this.trafStatTableModel);
 
@@ -197,13 +177,13 @@ public class MainUI {
 
         TableColumnModel getColumnModel = listPrcs.getColumnModel();
         getColumnModel.getColumn(0).setPreferredWidth(30);      //  "S",
-        getColumnModel.getColumn(1).setPreferredWidth(120);     //  "작업명",
-        getColumnModel.getColumn(2).setPreferredWidth(250);     //  "타겟",
-        getColumnModel.getColumn(3).setPreferredWidth(130);     //  "시작시각",
-        getColumnModel.getColumn(4).setPreferredWidth(130);     //  "종료시각",
-        getColumnModel.getColumn(5).setPreferredWidth(70);      //  "건수(EA)",
-        getColumnModel.getColumn(6).setPreferredWidth(70);      //  "작업시간(ms)",
-        getColumnModel.getColumn(7).setPreferredWidth(70);      //  "평균작업시간",
+        getColumnModel.getColumn(1).setPreferredWidth(180);     //  "작업명",
+        getColumnModel.getColumn(2).setPreferredWidth(230);     //  "타겟",
+        getColumnModel.getColumn(3).setPreferredWidth(150);     //  "시작시각",
+        getColumnModel.getColumn(4).setPreferredWidth(150);     //  "종료시각",
+        getColumnModel.getColumn(5).setPreferredWidth(60);      //  "건수(EA)",
+        getColumnModel.getColumn(6).setPreferredWidth(60);      //  "작업시간(ms)",
+        getColumnModel.getColumn(7).setPreferredWidth(60);      //  "평균작업시간",
 
         getColumnModel.getColumn(0).setMaxWidth(30);
         getColumnModel.getColumn(0).setMinWidth(30);
@@ -246,9 +226,22 @@ public class MainUI {
 
     public void LoadControllerInfo() {
         SortedMap<Integer, TrafPrcsVo> prcsMap = new TreeMap<>();
-        SortedMap<Integer, TrafStatVo> statMap = new TreeMap<>();
-        List<TrafPrcsVo> prcsList = new ArrayList<TrafPrcsVo>(AppRepository.getInstance().getPrcsMap().values());
-        List<TrafStatVo> statList = new ArrayList<TrafStatVo>(AppRepository.getInstance().getStatMap().values());
+        for (Map.Entry<Integer, TrafPrcsVo> e : AppRepository.getInstance().getPrcsMap().entrySet()) {
+            TrafPrcsVo obj = e.getValue();
+            prcsMap.put(obj.getJobSeq(), obj);
+        }
+
+        SortedMap<Integer, TrafPrcsVo> statMap = new TreeMap<>();
+        for (Map.Entry<Integer, TrafPrcsVo> e : AppRepository.getInstance().getStatMap().entrySet()) {
+            TrafPrcsVo obj = e.getValue();
+            statMap.put(obj.getJobSeq(), obj);
+        }
+
+//        List<TrafPrcsVo> prcsList = new ArrayList<TrafPrcsVo>(AppRepository.getInstance().getPrcsMap().values());
+//        List<TrafPrcsVo> statList = new ArrayList<TrafPrcsVo>(AppRepository.getInstance().getStatMap().values());
+        List<TrafPrcsVo> prcsList = new ArrayList<TrafPrcsVo>(prcsMap.values());
+        List<TrafPrcsVo> statList = new ArrayList<TrafPrcsVo>(statMap.values());
+
         initTblListUI(prcsList, statList);
     }
 
@@ -265,7 +258,7 @@ public class MainUI {
 
     public void updateTrafStat() {
         try {
-            TrafStatTableModel tableModel = (TrafStatTableModel) this.listStat.getModel();
+            TrafPrcsTableModel tableModel = (TrafPrcsTableModel) this.listStat.getModel();
             if (tableModel != null) {
                 tableModel.fireTableDataChanged();
             }
@@ -274,23 +267,6 @@ public class MainUI {
         }
     }
 
-    public void updateCtlrStts(TrafPrcsInfr obj) {
-        if (this.trafPrcsTableModel == null) {
-            return;
-        }
-//        for (int ii = 0; ii < this.ctlrSttsTableModel.getRowCount(); ii++) {
-//            if (obj.getRSE_ID().equals(this.ctlrSttsTableModel.getValueAt(ii, 2).toString())) {
-//                int modelRow = tblCtlrList.convertRowIndexToModel(ii);
-//                this.ctlrSttsTableModel.setValue(obj, ii, modelRow);
-//                break;
-//            }
-//        }
-//        TrafPrcsTableModel tableModel = (TrafPrcsTableModel) tblCtlrList.getModel();
-//        if (tableModel != null) {
-//            tableModel.fireTableDataChanged();
-//        }
-    }
-
     {
 // GUI initializer generated by IntelliJ IDEA GUI Designer
 // >>> IMPORTANT!! <<<

+ 6 - 1
src/main/java/com/its/traf/ui/TrafPrcsTableCellRenderer.java

@@ -9,7 +9,12 @@ public class TrafPrcsTableCellRenderer extends DefaultTableCellRenderer {
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
 
         Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-        cell.setBackground(new Color(255, 255, 255, 255));
+        String target = table.getModel().getValueAt(row, 2).toString();
+        if ("ALL".contains(target)) {
+            cell.setBackground(new Color(255, 255, 0, 255));
+        } else {
+            cell.setBackground(new Color(255, 255, 255, 255));
+        }
         switch(column) {
             case 0: case 3: case 4:
                 setHorizontalAlignment(SwingConstants.CENTER);

+ 2 - 2
src/main/java/com/its/traf/ui/TrafPrcsTableModel.java

@@ -1,6 +1,6 @@
 package com.its.traf.ui;
 
-import com.its.traf.vo.TrafPrcsVo;
+import com.its.traf.global.TrafPrcsVo;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.swing.table.AbstractTableModel;
@@ -88,7 +88,7 @@ public class TrafPrcsTableModel extends AbstractTableModel {
                     returnValue = info.getIndex();
                     break;
                 case 1:
-                    returnValue = info.getJob();
+                    returnValue = info.getJobName();
                     break;
                 case 2:
                     returnValue = info.getTarget();

+ 0 - 31
src/main/java/com/its/traf/ui/TrafStatTableCellRenderer.java

@@ -1,31 +0,0 @@
-package com.its.traf.ui;
-
-import javax.swing.*;
-import javax.swing.table.DefaultTableCellRenderer;
-import java.awt.*;
-
-public class TrafStatTableCellRenderer extends DefaultTableCellRenderer {
-
-    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
-
-        Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-        cell.setBackground(new Color(255, 255, 255, 255));
-        switch(column) {
-            case 0: case 3: case 4:
-                setHorizontalAlignment(SwingConstants.CENTER);
-                break;
-            case 5: case 6: case 7:
-                setHorizontalAlignment(SwingConstants.RIGHT);
-                break;
-            default:
-                setHorizontalAlignment(SwingConstants.LEFT);
-                break;
-        }
-
-        if (column == 0) {
-            cell.setBackground(Color.LIGHT_GRAY);
-        }
-
-        return cell;
-    }
-}

+ 0 - 147
src/main/java/com/its/traf/ui/TrafStatTableModel.java

@@ -1,147 +0,0 @@
-package com.its.traf.ui;
-
-import com.its.traf.vo.TrafStatVo;
-import lombok.extern.slf4j.Slf4j;
-
-import javax.swing.table.AbstractTableModel;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
-@Slf4j
-public class TrafStatTableModel extends AbstractTableModel {
-    private static final long serialVersionUID = 1331132425472559704L;
-
-    private List<TrafStatVo> ctlrList = Collections.synchronizedList(new ArrayList<TrafStatVo>());
-    private final String[] columnNames = {
-            "#",
-            "작업명",
-            "TARGET",
-            "시작시각",
-            "종료시각",
-            "건수(EA)",
-            "작업시간(ms)",
-            "평균작업시간"
-    };
-    public static final String[] netStateStr = {
-            "Close", "Login", "Connect",
-    };
-
-    public TrafStatTableModel(List<TrafStatVo> ctlrList) {
-        this.ctlrList = ctlrList;
-
-        int indexCount = 1;
-        for (TrafStatVo obj : ctlrList) {
-            obj.setIndex(indexCount++);
-        }
-    }
-
-    @Override
-    public int getColumnCount() {
-        return columnNames.length;
-    }
-
-    @Override
-    public int getRowCount() {
-        int size = 0;
-        synchronized (this.ctlrList) {
-            size = this.ctlrList.size();
-        }
-        return size;
-    }
-
-    @Override
-    public String getColumnName(int columnIndex) {
-        if (columnIndex < columnNames.length) {
-            return columnNames[columnIndex];
-        }
-        return super.getColumnName(columnIndex);
-    }
-
-    @Override
-    public Class<?> getColumnClass(int columnIndex) {
-        if (ctlrList.isEmpty()) {
-            return Object.class;
-        }
-        return getValueAt(0, columnIndex).getClass();
-    }
-
-    public TrafStatVo getControllerInfo(int row) {
-        TrafStatVo info = this.ctlrList.get(row);
-        return info;
-    }
-
-    @Override
-    public Object getValueAt(int rowIndex, int columnIndex) {
-        Object returnValue = null;
-        synchronized (this.ctlrList) {
-            TrafStatVo info = this.ctlrList.get(rowIndex);
-            if (info == null) {
-                return "";
-            }
-
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
-            switch (columnIndex) {
-                case 0:
-                    returnValue = info.getIndex();
-                    break;
-                case 1:
-                    returnValue = info.getJob();
-                    break;
-                case 2:
-                    returnValue = info.getTarget();
-                    break;
-                case 3:
-                    returnValue = sdf.format(new Date(info.getStartTm()));
-                    break;
-                case 4:
-                    returnValue = sdf.format(new Date(info.getEndTm()));
-                    break;
-                case 5:
-                    returnValue = info.getJobCount();
-                    break;
-                case 6:
-                    returnValue = info.getJobTm();
-                    break;
-                case 7:
-                    returnValue = info.getAvgJobTm();
-                    break;
-                default:
-                    break;
-            }
-        }
-        return returnValue;
-    }
-
-    @Override
-    public void setValueAt(Object value, int rowIndex, int columnIndex) {
-        synchronized (this.ctlrList) {
-            TrafStatVo obj = ctlrList.get(rowIndex);
-            if (columnIndex == 0) {
-                obj.setIndex((int) value);
-            }
-        }
-    }
-    public void setValueAt(TrafStatVo obj, int rowIdx, int colIdx) {
-        synchronized (this.ctlrList) {
-        }
-        fireTableCellUpdated(rowIdx, colIdx);
-        fireTableDataChanged();
-    }
-
-    public void Add(TrafStatVo info) {
-        int index = 0;
-        synchronized (this.ctlrList) {
-            index = this.ctlrList.size();
-            this.ctlrList.add(info);
-        }
-        fireTableRowsInserted(index, index);
-    }
-
-    public void setValue(TrafStatVo obj, int viewRow, int modelRow) {
-        fireTableDataChanged();
-    }
-
-}

+ 0 - 8
src/main/java/com/its/traf/vo/TrafJobType.java

@@ -1,8 +0,0 @@
-package com.its.traf.vo;
-
-public enum TrafJobType {
-
-    LOAD_PARAMETER,
-    LOAD_BASEDATA,
-    LOAD_PATTERN,
-}

+ 0 - 43
src/main/java/com/its/traf/vo/TrafStatVo.java

@@ -1,43 +0,0 @@
-package com.its.traf.vo;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-@Getter
-@Setter
-@ToString
-public class TrafStatVo {
-    private int    index;
-    private int    jobSeq;
-    private String job;
-    private String target;
-
-    private long startTm;
-    private long endTm;
-    private int  jobCount;
-    private int  jobTm;
-    private int  avgJobTm;
-
-    public TrafStatVo(int jobSeq, String job, String target) {
-        this.jobSeq = jobSeq;
-        this.job = job;
-        this.target = target;
-        this.jobTm = 0;
-        this.avgJobTm = 0;
-    }
-
-    public void startTime() {
-        this.startTm = System.currentTimeMillis();
-    }
-    public void endTime(int jobCount) {
-        this.jobCount = jobCount;
-        this.endTm = System.currentTimeMillis();
-        this.jobTm = (int)(this.endTm - this.startTm);
-        if (this.avgJobTm > 0) {
-            this.avgJobTm = this.jobTm;
-        } else {
-            this.avgJobTm = (this.jobTm + this.avgJobTm) / 2;
-        }
-    }
-}

+ 0 - 94
src/main/java/com/its/traf/webapp/config/WebSecurityConfig.java

@@ -1,94 +0,0 @@
-package com.its.traf.webapp.config;
-
-import com.its.traf.webapp.security.SessionListener;
-import com.its.traf.webapp.service.UserService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.core.session.SessionRegistry;
-import org.springframework.security.core.session.SessionRegistryImpl;
-import org.springframework.security.web.session.HttpSessionEventPublisher;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-
-import javax.servlet.http.HttpSessionListener;
-
-@Slf4j
-@EnableWebSecurity
-@Configuration
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-
-    private final UserService userService;
-
-    public WebSecurityConfig(UserService userService) {
-        this.userService = userService;;
-    }
-
-    @Override
-    public void configure(WebSecurity web) throws Exception
-    {
-        // static 디렉터리의 하위 파일 목록은 인증 무시 ( = 항상통과 )
-        web.ignoring().antMatchers("/css/**", "/js/**", "/img/**", "/lib/**");
-    }
-
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
-
-        http.authorizeRequests()
-                // 페이지 권한 설정
-                .antMatchers("/index").hasRole("ADMIN")
-                .antMatchers("/**").hasRole("ADMIN")
-                .and() // 로그인 설정
-                .formLogin()
-                .loginPage("/login")
-                .defaultSuccessUrl("/index")
-                .permitAll()
-                .and() // 로그아웃 설정
-                .logout()
-                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
-                .logoutSuccessUrl("/login")
-                .invalidateHttpSession(true)
-                .deleteCookies("JSESSIONID")
-                .and()
-                // 403 예외처리 핸들링
-                .exceptionHandling().accessDeniedPage("/login");
-
-        http.csrf().disable();
-
-        http.sessionManagement()
-                .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
-                .invalidSessionUrl("/login")
-                .sessionFixation()
-                .migrateSession()
-                .maximumSessions(5)
-                .maxSessionsPreventsLogin(true)
-                .expiredUrl("/login")
-                .sessionRegistry(sessionRegistry());
-    }
-
-    @Override
-    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
-        auth.userDetailsService(userService);
-    }
-
-    @Bean
-    public SessionRegistry sessionRegistry() {
-        return new SessionRegistryImpl();
-    }// Register HttpSessionEventPublisher
-
-    @Bean
-    public static ServletListenerRegistrationBean httpSessionEventPublisher() {
-        return new ServletListenerRegistrationBean(new HttpSessionEventPublisher());
-    }
-
-    @Bean
-    public HttpSessionListener httpSessionListener(){
-        return new SessionListener();
-    }
-}

+ 0 - 149
src/main/java/com/its/traf/webapp/controller/WebAppCommonController.java

@@ -1,149 +0,0 @@
-package com.its.traf.webapp.controller;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.its.app.utils.Ping;
-import com.its.traf.config.ProcessingConfig;
-import com.its.traf.webapp.service.FileService;
-import com.its.traf.webapp.vo.voFileInfo;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Slf4j
-@Controller
-public class WebAppCommonController {
-
-    private final ResourceLoader resourceLoader;
-    private final ProcessingConfig serverConfig;
-    private final FileService fileService;
-
-    public WebAppCommonController(ResourceLoader resourceLoader, ProcessingConfig serverConfig, FileService fileService) {
-        this.resourceLoader = resourceLoader;
-        this.serverConfig = serverConfig;
-        this.fileService = fileService;
-    }
-
-    @RequestMapping({"/", "/index"})
-    public String index(Model model, HttpServletRequest request) {
-
-        String result = "system";
-        model.addAttribute("ServerConfig", this.serverConfig);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @RequestMapping("/log")
-    public String logFiles(Model model, HttpServletRequest request) {
-        String result = "log";
-        List<voFileInfo> info = this.fileService.getLogFiles();
-
-        //JSON 형식으로 바꿔주기
-        ObjectMapper mapper = new ObjectMapper();
-        String jsonList="";
-        try {
-            jsonList = mapper.writeValueAsString(info);
-        }
-        catch (IOException e) {
-            log.error("WebAppController.logFiles: Exception: {}", e.toString());
-        }
-
-        model.addAttribute("ServerConfig", this.serverConfig);
-        model.addAttribute("fileList",jsonList);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @RequestMapping("/login")
-    public String login(Model model) {
-        String result = "login";
-        model.addAttribute("ServerConfig", this.serverConfig);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @GetMapping("/logout")
-    public void logout() {
-    }
-
-    @RequestMapping("/getServerDate")
-    @ResponseBody
-    public Map<String,Object> getServerDate() {
-        Map<String,Object> map = new HashMap<>();
-        map.put("serverDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return map;
-    }
-
-    @RequestMapping(value = "/getFileView",method = {RequestMethod.POST},produces = {"application/json"})
-    @ResponseBody
-    public String getFileView(@RequestParam("fileName") String fileName, @RequestParam("filePath") String filePath, HttpServletRequest request) {
-        return this.fileService.getView(request, fileName, filePath);
-    }
-
-    @RequestMapping("/getFileDownload")
-    public ResponseEntity<Resource> getFileDownload(@RequestParam("fileName") String fileName , @RequestParam("filePath") String filePath
-            , HttpSession session
-            , HttpServletRequest req
-            , HttpServletResponse res
-            , ModelAndView mav) throws UnsupportedEncodingException {
-
-        return this.fileService.fileDownload(fileName,filePath);
-    }
-
-    @RequestMapping(value = ("/getFileDelete"))
-    @ResponseBody
-    public List<voFileInfo> getFileDelete(@RequestParam("fileName") String fileName, @RequestParam("filePath") String filePath) {
-        //파일 지우기
-        this.fileService.fileDelete(fileName,filePath);
-        //파일 리스트 가져오기
-        List<voFileInfo> fileArr = fileService.getLogFiles();
-        return fileArr;
-    }
-
-
-    @RequestMapping(value = ("/getPing"))
-    @ResponseBody
-    public String getPing(@RequestParam("ipAddr") String ipAddr) {
-        //log.info("getPing: {}", ipAddr);
-        String result =  ping(ipAddr);
-        //log.info("getPing: {} ==> {}", ipAddr, result);
-        return result;
-    }
-
-    public String ping(String ipAddr) {
-        String result = "";
-        long startTm = System.nanoTime();
-        long endTm = System.nanoTime();
-        try {
-            boolean isReachable = Ping.isReachable(ipAddr, 5);
-            endTm = System.nanoTime();
-            if (isReachable ) {
-                result = ipAddr + " is alive. " + Long.toString((endTm - startTm) / 1000000) + " ms.";
-            }
-            else {
-                result = ipAddr + " is not alive. time out: " + Long.toString((endTm - startTm) / 1000000) + " ms.";
-            }
-        }
-        catch (Exception e) {
-            result = ipAddr + " error. " + Long.toString((endTm - startTm) / 1000000) + " ms. Exception: " + e.toString();
-        }
-
-        return result;
-    }
-
-}

+ 0 - 23
src/main/java/com/its/traf/webapp/controller/WebAppController.java

@@ -1,23 +0,0 @@
-package com.its.traf.webapp.controller;
-
-import com.its.traf.config.ProcessingConfig;
-import com.its.traf.webapp.service.FileService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.stereotype.Controller;
-
-@Slf4j
-@Controller
-public class WebAppController {
-
-    private final ResourceLoader resourceLoader;
-    private final ProcessingConfig serverConfig;
-    private final FileService fileService;
-
-    public WebAppController(ResourceLoader resourceLoader, ProcessingConfig serverConfig, FileService fileService) {
-        this.resourceLoader = resourceLoader;
-        this.serverConfig = serverConfig;
-        this.fileService = fileService;
-    }
-
-}

+ 0 - 196
src/main/java/com/its/traf/webapp/security/SessionListener.java

@@ -1,196 +0,0 @@
-package com.its.traf.webapp.security;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.security.web.session.HttpSessionEventPublisher;
-
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-
-@Slf4j
-public class SessionListener extends HttpSessionEventPublisher {
-
-    //세션이 생성될때 호출
-    @Override
-    public void sessionCreated(HttpSessionEvent se) {
-        HttpSession session = se.getSession();
-
-        if (session != null) {
-            session.setMaxInactiveInterval(60*5);
-            //log.info("sessionCreated sessionid: {}, setMaxInactiveInterval: {}, isNew: {} time:{}", session.getId(), session.getMaxInactiveInterval(), session.isNew(),session.getAttribute("time"));
-        }
-        super.sessionCreated(se);
-    }
-
-    //세션이 만료될때 호출
-    @Override
-    public  void sessionDestroyed(HttpSessionEvent se) {
-        HttpSession session = se.getSession();
-        if (session != null) {
-            //log.info("dissconn sessionid: {}, setMaxInactiveInterval: {}, isNew: {}", session.getId(), session.getMaxInactiveInterval(), session.isNew());
-        }
-
-        super.sessionDestroyed(se);
-    }
-}
-
-/*
-    @Bean // Http Listener
-    public HttpSessionListener httpSessionListener() {
-        return new HttpSessionListener() {
-
-            @Override
-            public void sessionCreated(HttpSessionEvent se) {
-
-            }
-        };
-    }
-
-@Slf4j
-public class SessionListener implements HttpSessionListener {
-
-    public static SessionListener sessionListener = null;
-    private static Hashtable loginSessionList = new Hashtable();
-*/
-
-    /**
-     * 싱글톤 생성
-     * @return
-     */
-    /*
-    public static synchronized SessionListener getInstance() {
-        if(sessionListener == null) {
-            sessionListener = new SessionListener();
-        }
-        return sessionListener;
-    }
-*/
-
-    /**
-     * session.setAttribute 실행 되는 순간 같은 sessionId 일경우 1회만 실행
-     * @param httpSessionEvent
-     *//*
-
-    @Override
-    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
-        log.info("sessionCreated -> {}", httpSessionEvent.getSession().getAttribute("userId"));
-    }
-*/
-
-    /**
-     * session 이 소멸되는 시점에 실행, 기본 단위는 초(1분 미만은 설정할 수 없음)
-     * @param httpSessionEvent
-     */
-/*
-    @Override
-    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
-        log.info("sessionDestroyed 실행");
-        HttpSession session = httpSessionEvent.getSession();
-
-        String userId = (String) session.getAttribute("userId");
-
-        //로그아웃 유저 삭제
-        synchronized(loginSessionList){
-            loginSessionList.remove(httpSessionEvent.getSession().getId());
-        }
-
-        if(userId != null){
-            this.updateUserCloseTime(userId);
-        }
-
-        currentSessionList();
-    }
-*/
-
-    /**
-     * 현제 HashTable에 담겨 있는 유저 리스트, 즉 session list
-     */
-/*
-    private void currentSessionList(){
-        Enumeration elements = loginSessionList.elements();
-        HttpSession session = null;
-        while (elements.hasMoreElements()){
-            session = (HttpSession)elements.nextElement();
-
-            String userId = (String)session.getAttribute("userId");
-            log.info("currentSessionUserList -> userId {} ", userId);
-            //log.info("currentSessionUserList -> sessionId {} ", session.getId());
-            //log.info("currentSessionUserList -> hashtable SessionList {} ", loginSessionList.get(session.getId()));
-        }
-    }
-
-    */
-    /**
-     * session 생성
-     * @param request
-     * @param value
-     */
-/*
-    public void setSession(HttpServletRequest request, String value){
-        log.info("setSession 실행");
-        HttpSession session = request.getSession();
-        session.setAttribute("userId", value);
-        session.setMaxInactiveInterval(2);
-
-        //HashMap에 Login에 성공한 유저 담기
-        synchronized(loginSessionList){
-            loginSessionList.put(session.getId(), session);
-        }
-        currentSessionList();
-    }
-*/
-
-    /**
-     * session 삭제
-     * 세션이 remove 되면 destroyed 함수 실행
-     * @param request
-     */
-/*
-    public void removeSession(HttpServletRequest request){
-        log.info("removeSession 실행");
-
-        HttpSession session = request.getSession();
-        String userId = (String)session.getAttribute("userId");
-
-        session.removeAttribute("userId");
-        session.invalidate();
-
-        if(userId != null){
-            this.updateUserCloseTime(userId);
-        }
-    }
-*/
-
-    /**
-     * 유저 나간 시간 업데이트
-     * @param userId
-     */
-/*
-    private void updateUserCloseTime(String userId) {
-        log.info("updateUserCloseTime {} ", userId);
-        //호출부에서 NULL 검사
-        //업데이트 로직
-    }
-*/
-
-    /**
-     * 현재 로그인한 유저가 이미 존재 하는지 확인
-     * @param request
-     * @param loginUserId
-     * @return boolean
-     */
-    /*
-    public boolean isLoginUser(HttpServletRequest request, String loginUserId){
-        Enumeration elements = loginSessionList.elements();
-        HttpSession session = null;
-        while (elements.hasMoreElements()){
-            session = (HttpSession)elements.nextElement();
-            String userId = (String)session.getAttribute("userId");
-            if(loginUserId.equals(userId) && (!session.getId().equals(request.getSession().getId()))){
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
-*/

+ 0 - 48
src/main/java/com/its/traf/webapp/security/UserAuthenticationProvider.java

@@ -1,48 +0,0 @@
-package com.its.traf.webapp.security;
-
-import com.its.traf.webapp.service.UserService;
-import com.its.traf.webapp.vo.voUser;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.security.authentication.AuthenticationProvider;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.stereotype.Component;
-
-@Slf4j
-@Component
-public class UserAuthenticationProvider implements AuthenticationProvider {
-
-    private final UserService userService;
-
-    public UserAuthenticationProvider(UserService userService) {
-        this.userService = userService;
-    }
-
-    @Override
-    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
-        String id = authentication.getName();
-        String password = (String) authentication.getCredentials();
-
-        voUser user = this.userService.loadUserByUsername(id);
-        //voUser user = new voUser();
-        if (user == null) {
-            throw new BadCredentialsException("Login Error !!");
-        }
-
-        //인증안하고 바로 접속
-        //List<GrantedAuthority> roles = new ArrayList<GrantedAuthority>();
-        //roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        //user.setAuthorities(roles);
-
-        UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(id, password, user.getAuthorities());
-        result.setDetails(user);
-        return result;
-    }
-
-    @Override
-    public boolean supports(Class authentication) {
-        return authentication.equals(UsernamePasswordAuthenticationToken.class);
-    }
-}

+ 0 - 198
src/main/java/com/its/traf/webapp/service/FileService.java

@@ -1,198 +0,0 @@
-package com.its.traf.webapp.service;
-
-import com.its.app.utils.OS;
-import com.its.traf.webapp.vo.voFileInfo;
-import lombok.extern.slf4j.Slf4j;
-import net.sf.json.JSONObject;
-import org.springframework.core.io.InputStreamResource;
-import org.springframework.core.io.Resource;
-import org.springframework.http.ContentDisposition;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@Service
-public class FileService {
-    private final String logDir= "/logs/";
-    private final String sysDir= System.getProperty("user.dir");
-    private final String[] exceptDir ={"backup"};
-    private int id = 1;
-
-    public String getView(HttpServletRequest request, String fileName, String filePath) {
-        long preEndPoint = request.getParameter("preEndPoint") == null ? 0 : Long.parseLong(request.getParameter("preEndPoint") + "");
-        StringBuilder sb = new StringBuilder();
-        long startPoint, endPoint;
-        RandomAccessFile file = null;
-        String errMsg = "";
-
-        try {
-            file = new RandomAccessFile(System.getProperty("user.dir") + filePath + fileName, "r");
-            endPoint = file.length();
-            startPoint = preEndPoint > 0 ? preEndPoint : endPoint < 2000 ? 0 : endPoint - 2000;
-            file.seek(startPoint);
-
-            String str;
-            while ((str = file.readLine()) != null) {
-                byte[] b = str.getBytes("iso-8859-1");
-                str = new String(b, "UTF-8");
-                sb.append(str);
-                sb.append("<br>");
-                endPoint = file.getFilePointer();
-                file.seek(endPoint);
-            }
-
-            JSONObject json = new JSONObject();
-            json.put("endPoint", endPoint);
-            json.put("log", sb.toString());
-            return json.toString();
-        }
-        catch(FileNotFoundException fnf) {
-            log.error("FileService.getView: Exception: {}", fnf.toString());
-            errMsg += fnf.toString();
-        }
-        catch (IOException e) {
-            log.error(e.getMessage());
-            errMsg += e.toString();
-        }
-        finally {
-            try {
-                if (file != null) file.close();
-            }
-            catch (Exception e) {
-                log.error("FileService.getView: Exception: {}", e.toString());
-                errMsg += e.toString();
-            }
-        }
-
-        if (!errMsg.equals("")) {
-            sb.append(errMsg);
-            sb.append("<br>");
-            JSONObject json = new JSONObject();
-            json.put("endPoint", 0);
-            json.put("log", sb.toString());
-            return json.toString();
-        }
-        return null;
-    }
-
-    public ResponseEntity<Resource> fileDownload(String fileName, String filePath){
-        try {
-            Path path = Paths.get(System.getProperty("user.dir")+filePath+ fileName);
-            String contentType = "application/download";
-            HttpHeaders headers = new HttpHeaders();
-            headers.add(HttpHeaders.CONTENT_TYPE, contentType);
-            headers.setContentDisposition(ContentDisposition.parse("attachment;" + " filename=\"" + fileName + "\";"));
-            Resource resource = new InputStreamResource(Files.newInputStream(path));
-
-            return new ResponseEntity<>(resource, headers, HttpStatus.OK);
-        }
-        catch (IOException e) {
-            log.error("FileService.fileDownload: Exception: {}", e.toString());
-        }
-        return null;
-    }
-
-    public void fileDelete(String fileName,String filePath) {
-        File file = new File(this.sysDir+filePath+fileName);
-        if (file.exists()) {
-            if (file.delete()) {
-                log.info("FileService.fileDelete: Delete Success: {}", filePath+fileName);
-            }
-            else {
-                log.error("FileService.fileDelete: Delete Fail: {}", filePath+fileName);
-            }
-        }
-        else {
-            log.warn("FileService.fileDelete: Not exists: {}", filePath+fileName);
-        }
-    }
-
-    public List<voFileInfo> getLogFiles() {
-        this.id = 1;
-        voFileInfo rootFile = new voFileInfo();
-        rootFile.setId(id);
-        rootFile.setType("dir");
-        this.id++;
-        rootFile.setFileName("logs");
-        rootFile.setFileInfos(getFiles(this.sysDir, this.logDir));
-        List<voFileInfo> fileInfos = new ArrayList<>();
-        fileInfos.add(rootFile);
-        return fileInfos;
-    }
-
-    private List<voFileInfo> getFiles(String sysDir, String logDir) {
-        int rootId = id - 1;
-        //log.debug("FileService.getFiles: id: {}, sysDir: {}, logDir: {}", id, sysDir, logDir);
-        List<voFileInfo> subArr = new ArrayList<>();
-        File dirFile = new File(sysDir, logDir);
-        File[] fileList = dirFile.listFiles();
-
-        for (File file: fileList) {
-            voFileInfo info = new voFileInfo();
-            //log.debug("FileService.getFiles: getName: {}, isDir: {}, getPath: {}", file.getName(), file.isDirectory(), file.getPath());
-
-            if (file.isDirectory()) {
-                for (String dir : exceptDir) {
-                    if (dir.equals(file.getName())) {
-                        break;
-                    }
-                    else {
-                        String subDir = file.getPath().substring(file.getPath().indexOf(logDir.replaceAll("/", "")), file.getPath().length());
-                        info.setId(id);
-                        id++;
-                        String sFileSeparator = "/";
-                        info.setFilePath(sFileSeparator + subDir);
-                        info.setFileName(file.getName());
-                        info.setFileSize(file.length());
-                        info.setType("dir");
-
-                        info.setFileInfos(getFiles(sysDir,  subDir));
-                        info.setParentId(rootId);
-                        //log.info(info.toString());
-                        subArr.add(info);
-                    }
-                }
-            }
-        }
-
-        //log.debug("x: {}", fileList.toString());
-        for (File file: fileList) {
-            voFileInfo info = new voFileInfo();
-            if (file.isFile() && file.getName().contains(".log")) {
-                info.setId(id);
-                id++;
-                info.setFileName(file.getName());
-                info.setFileSize(file.length());
-                String subDir;
-                if (OS.isWindows()) {
-                    subDir = file.getPath().substring(file.getPath().indexOf(logDir.replaceAll("/","")), file.getPath().length() - file.getName().length()).replaceAll("\\\\", "/");
-                } else {
-                    subDir = file.getPath().substring(file.getPath().indexOf(logDir), file.getPath().length() - file.getName().length()).replaceAll("\\\\", "/");
-                }
-
-                String sFileSeparator = "/";
-                info.setFilePath(sFileSeparator + subDir);
-                info.setType("log");
-                info.setParentId(rootId);
-                //log.info(info.toString());
-                subArr.add(info);
-            }
-        }
-        //log.debug("y: {}", subArr.toString());
-        return subArr;
-    }
-
-}

+ 0 - 40
src/main/java/com/its/traf/webapp/service/UserService.java

@@ -1,40 +0,0 @@
-package com.its.traf.webapp.service;
-
-import com.its.traf.webapp.vo.voUser;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@Service
-public class UserService implements UserDetailsService {
-
-    @Value("${server.user.id:admin}")
-    private String userId;
-    @Value("${server.user.pswd:1234}")
-    private String userPswd;
-
-    @Override
-    public voUser loadUserByUsername(String username) throws UsernameNotFoundException {
-
-        String userId = this.userId;
-        String userPswd = this.userPswd;
-        voUser user = new voUser(userId,"{noop}"+userPswd);
-        if (user == null) {
-            throw new UsernameNotFoundException("No user found with "+username + user.getUsername());
-        }
-
-        //디비에서 권한 가져와야하는데 고정으로 넣어줌
-        List<GrantedAuthority> roles = new ArrayList<GrantedAuthority>();
-        roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        user.setAuthorities(roles);
-        return user;
-    }
-}

+ 0 - 19
src/main/java/com/its/traf/webapp/vo/voFileInfo.java

@@ -1,19 +0,0 @@
-package com.its.traf.webapp.vo;
-
-import lombok.Data;
-import lombok.ToString;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-@ToString
-public class voFileInfo {
-    private List<voFileInfo> fileInfos = new ArrayList<>();
-    private int    id;
-    private int    parentId;
-    private String type;
-    private String fileName;
-    private long   fileSize;
-    private String filePath;
-}

+ 0 - 51
src/main/java/com/its/traf/webapp/vo/voUser.java

@@ -1,51 +0,0 @@
-package com.its.traf.webapp.vo;
-
-import lombok.Data;
-import lombok.ToString;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-@ToString
-public class voUser implements UserDetails {
-    private String id;
-    private String password;
-    private List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
-
-    public voUser(String id,String password){
-        this.id = id;
-        this.password = password;
-    }
-
-    public voUser() {
-
-    }
-
-    @Override
-    public String getUsername() {
-        return id;
-    }
-
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return true;
-    }
-}

+ 3 - 1
src/main/resources/application-dev.yml

@@ -17,6 +17,7 @@ spring:
       idleTimeout: 30000
       connectTimeout: 10000
   jpa:
+#    ddl-auto: none
     database-platform: org.hibernate.dialect.Oracle10gDialect
     open-in-view: false
     show-sql: false
@@ -38,7 +39,7 @@ spring:
   utis-datasource:
     hikari:
       driver-class-name: oracle.jdbc.OracleDriver
-      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1521:HANTE
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1522:HANTE19C
       username: rota
       password: rota
       connection-test-query: SELECT 1 FROM DUAL
@@ -48,6 +49,7 @@ spring:
       idleTimeout: 30000
       connectTimeout: 10000
   utis-jpa:
+#    ddl-auto: none
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
       hibernate:

+ 2 - 0
src/main/resources/application-prod.yml

@@ -17,6 +17,7 @@ spring:
       idleTimeout: 30000
       connectTimeout: 10000
   jpa:
+    ddl-auto: none
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
       hibernate:
@@ -35,6 +36,7 @@ spring:
       idleTimeout: 30000
       connectTimeout: 10000
   utis-jpa:
+    ddl-auto: none
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
       hibernate:

+ 6 - 1
src/main/resources/application.yml

@@ -56,6 +56,8 @@ spring:
   profiles:
     active: dev
   main:
+    web-application-type: none
+    log-startup-info: true
     banner-mode: off
   application:
     name: traf-prcs-server
@@ -69,13 +71,16 @@ spring:
       #maximum-pool-size: 50
       pool-name: pool-its-op-server
   jpa:
-    #database: Oracle
+    database: Oracle
+#    ddl-auto: none
     open-in-view: false
     show-sql: false
     hibernate:
       ddl-auto: none
     properties:
       hibernate:
+#        temp:
+#          use_jdbc_metadata_defaults: false
         default_batch_fetch_size: 1000
         format_sql: false
         use_sql_columns: false

+ 2 - 2
src/main/resources/logback-spring.xml

@@ -31,10 +31,10 @@
     <property name="LOG_PATTERN_SCHEDULE"    value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
     <property name="LOG_PATTERN_STATISTICS"  value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %msg%n"/>
 <!--    <property name="LOG_PATTERN_CONSOLE"     value="[%d{HH:mm:ss.SSS}] %highlight([%5level]) %highlight(${PID:-}): %cyan(%msg) %n"/>-->
-    <property name="LOG_PATTERN_CONSOLE"     value="[%d{HH:mm:ss.SSS}] [%5level] %msg%n"/>
+    <property name="LOG_PATTERN_CONSOLE"     value="[%d{HH:mm:ss.SSS}] [%5level] %msg %n"/>
 
     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-<!--        <withJansi>true</withJansi>-->
+        <withJansi>true</withJansi>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <charset>${LOG_CHARSET}</charset>
             <pattern>${LOG_PATTERN_CONSOLE}</pattern>

+ 2 - 2
src/main/resources/mybatis/mapper/utis/collect/LinkRawDataMOCT01.xml

@@ -12,7 +12,7 @@
                ROUND(AVG(TRAVELTIME), 0)                   AS TRVL_HH,
                TO_CHAR(MAX(A.REGDATE), 'YYYYMMDDHH24MISS') AS CLCT_DT,
                COUNT(1)                                    AS CLCT_CNT
-        FROM TRAFFIC_MOCT_NEW A
+        FROM TRAFFIC_MOCT A
                  INNER JOIN (SELECT TO_CHAR(LINK_ID) AS LINKID
                              FROM TB_LINK) B
                             ON A.LINKID    = B.LINKID
@@ -32,7 +32,7 @@
                ROUND(AVG(TRAVELTIME), 0)                   AS TRVL_HH,
                TO_CHAR(MAX(A.REGDATE), 'YYYYMMDDHH24MISS') AS CLCT_DT,
                COUNT(1)                                    AS CLCT_CNT
-        FROM TRAFFIC_MOCT_NEW A
+        FROM TRAFFIC_MOCT A
                  INNER JOIN (SELECT TO_CHAR(LINK_ID) AS LINKID
                              FROM TB_LINK) B
                             ON A.LINKID    = B.LINKID

+ 0 - 53
src/main/resources/static/css/jquery.treegrid.css

@@ -1,53 +0,0 @@
-.treegrid-expander {
-	display: inline-block;
-	margin-left: -24px;
-	position: relative;
-	width: 24px;
-}
-.treegrid-expander {
-	vertical-align: middle;
-}
-.treegrid-expander::after {
-	border: 6px solid transparent;
-	content: ' ';
-	display: block;
-	height: 0;
-	left: 50%;
-	margin-left: -6px;
-	margin-top: -6px;
-	position: absolute;
-	top: 50%;
-	width: 0;
-}
-.treegrid-expander-expanded,
-.treegrid-expander-collapsed {
-	cursor: pointer;
-}
-.treegrid-expander-expanded::after {
-	border-top-color: #ccc;
-}
-.treegrid-expander-collapsed::after {
-	border-left-color: #ccc;
-}
-tr.loading>td>.treegrid-container>.treegrid-expander::after {
-	background: url('../images/loader.gif') center center no-repeat;
-	border: 0;
-	height: 16px;
-	margin-left: -8px;
-	margin-top: -8px;
-	width: 16px;
-}
-.treegrid-move-indicator {
-	border: 5px solid transparent;
-	border-left-color: #000;
-	display: none;
-	width: 0;
-	height: 0;
-	position: absolute;
-	margin-top: -5px;
-	margin-left: -6px;
-}
-.treegrid-container.dragging {
-	margin-left: 0 !important;
-	position: absolute;
-}

+ 0 - 38
src/main/resources/static/js/ajax.js

@@ -1,38 +0,0 @@
-function requestService(url, param, callback, async) {
-    /*
-     * 스프링시큐리티 csrf 토큰 에러때문에  ajax 통신시 해더에 포함해줘야한다.
-     */
-    var token = $("meta[name='_csrf']").attr("content");
-    var header = $("meta[name='_csrf_header']").attr("content");
-
-    if (async) {
-
-        async = true;
-    }
-
-    $.ajax({
-        url: "/" + url
-        , data: encodeURI(param)
-        , cache: false
-        , async: async
-        , type: 'POST'
-        , statusCode: {
-            301: function(resp){
-                window.location.reload();
-            },
-            302: function(resp){
-                window.location.reload();
-            }
-        }
-        , beforeSend: function (xhr) {
-            if(header != null) xhr.setRequestHeader(header, token);
-        }
-
-    })
-        .done(callback)
-        .fail(function (request,status,e) {
-        console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-    });
-}
-
-

文件差异内容过多而无法显示
+ 0 - 1
src/main/resources/static/js/jquery-2.2.4.min.js


文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/js/jquery.treegrid.min.js


+ 0 - 27
src/main/resources/static/js/login.js

@@ -1,27 +0,0 @@
-function submitForm(msg){
-    document.loginForm.submit();
-}
-
-$(document).ready(function() {
-    var placeholderTarget = $('.textbox input[type="text"], .textbox input[type="password"]');
-
-    //포커스시
-    placeholderTarget.on('focus', function(){
-        $(this).siblings('label').fadeOut('fast');
-    });
-
-    //포커스아웃시
-    placeholderTarget.on('focusout', function(){
-        if($(this).val() == ''){
-            $(this).siblings('label').fadeIn('fast');
-        }
-    });
-
-    $("#password").keyup(function(e){if(e.keyCode === 13)  submitForm(); });
-
-});
-
-
-
-
-

+ 0 - 266
src/main/resources/static/js/main.js

@@ -1,266 +0,0 @@
-
-/*
- 서버시간 요청 함수
- */
-var _time_id = null;
-/*requestService("getServerDate","",getServerTimeCallback,true);
-function getServerTimeCallback(result, statusText, xhr){
-    _sever_time =result.serverDate;
-
-}*/
-
-if(_time_id == null) {
-    _time_id = setInterval(severTimeInterval,1000);
-}
-
-function severTimeInterval(){
-    $("#serverTime").text(moment(_sever_time).add("1", "s").format("YYYY-MM-DD HH:mm:ss"));
-    _sever_time = moment(_sever_time).add("1", "s").format("YYYY-MM-DD HH:mm:ss");
-}
-
-/*
- *  LOG 함수
- */
-var _fileListTbody = "";
-var _fileViewTimeout = null;
-function fileView(name, path) {
-    if (_fileViewTimeout != null) {
-        clearInterval(_fileViewTimeout);
-        _fileViewTimeout = null;
-    }
-
-    $("#fileTbody").empty();
-    var endPoint = 0;
-
-    function requestLog(){
-        $.ajax({
-            url:"/getFileView",
-            type:"POST",
-            data:"fileName="+name+"&filePath="+path+"&preEndPoint="+endPoint,
-            success:function (data) {
-
-                $("#logFileName").text(name);
-
-                test=data;
-                endPoint = data.endPoint;
-                if(data.log.length < 1) return;
-
-                var tbody="<tr><td>"+data.log+"</td></tr>";
-
-                $("#FilesForm").css("display","none");
-                $("#FileForm").css("display","block");
-
-                //$("#fileTbody").empty();
-                tbodyAppend("fileTbody",tbody);
-                $("#logScroll").scrollTop($('#logScroll')[0].scrollHeight);
-            },
-            error:function (request,status,e) {
-                console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-            }
-        }).done
-
-        if(_fileViewTimeout == null ){
-            _fileViewTimeout = setInterval(requestLog, 1000);
-        }
-    }
-    requestLog();
-}
-
-function fileDownload(name,path) {
-    location.href="/getFileDownload?fileName="+name+"&filePath="+path;
-}
-
-function fileDelete(name,path) {
-    if (!confirm(name+"을 삭제합니다.")) {
-        return;
-    }
-
-    $.ajax({
-        url:"/getFileDelete",
-        type:"POST",
-        data:"fileName="+name+"&filePath="+path,
-        success:function (data) {
-            alert("삭제 했습니다.");
-            $("#logTbody").empty();
-            fileList = data;
-            _fileListTbody="";
-
-            initLogFileList(data);
-            tbodyAppend("logTbody", _fileListTbody);
-            $('.tree-basic').treegrid();
-
-        },
-        error:function (request,status,e) {
-            alert("삭제를 실패했습니다.");
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done
-}
-
-function initLogFileList(fileList) {
-
-    fileList.forEach(function (el, index) {
-        console.log(el.type + ', ' + el.fileName + ', ' + el.filePath);
-
-        if (el.type == "dir") {
-            if (el.fileName === "logs"){
-                //_fileListTbody += "<tr class='treegrid-"+el.id+" expanded'>";
-            }
-            else {
-                if (el.parentId  > 1) {
-                    _fileListTbody += "<tr class='treegrid-"+el.id+" expanded treegrid-parent-"+el.parentId+"'>";
-                }
-                else {
-                    _fileListTbody += "<tr class='treegrid-"+el.id+"'>";
-                }
-                _fileListTbody += "<td>"+el.fileName+"</td>";
-                _fileListTbody += "</tr>";
-            }
-        }
-        else {
-            if (el.parentId  > 1) {
-                _fileListTbody += "<tr class='treegrid-"+el.id+" expanded treegrid-parent-"+el.parentId+"'>";
-            }
-            else {
-                _fileListTbody += "<tr class='treegrid-"+el.id+" treegrid-parent-"+el.parentId+"'>";
-            }
-            _fileListTbody +="<td>"+el.fileName+" ("+el.fileSize+" Byte)&nbsp;&nbsp;&nbsp;&nbsp;</td>";
-            _fileListTbody += "<td><a href=javascript:fileView('" + el.fileName+"','" + el.filePath + "');>보기</a>&nbsp;&nbsp;</td>";
-            _fileListTbody += "<td><a href=javascript:fileDownload('" + el.fileName+"','" + el.filePath +"');>다운로드</a>&nbsp;&nbsp;</td>";
-            //_fileListTbody += "<td><a href=javascript:fileDelete('" + el.fileName + "','" + el.filePath + "''\);>delete</a>&nbsp;&nbsp;</td>";
-
-            _fileListTbody += "</tr>";
-        }
-
-        if (el.fileInfos.length > 0) initLogFileList(el.fileInfos);
-    });
-    return _fileListTbody;
-}
-
-/*
- * CONTROLLER 명령 함수
- */
-
-// 제어기 연결해제
-function disconnectController(id) {
-    if (!confirm("연결을 종료 하시겠습니까?")) {
-        return;
-    }
-
-    $.ajax({
-        url:"/disconnectController",
-        type:"POST",
-        data:"id="+id,
-        success:function (data) {
-            alert(data);
-            location.href = "/controller";
-        },
-        error:function (request,status,e) {
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done
-}
-
-// 전체 제어기 접속횟수 초기화
-function allDisconnectController() {
-    if (!confirm("전체 제어기의 연결을 종료 하시겠습니까?")) {
-        return;
-    }
-
-    $.ajax({
-        url:"/allDisconnectController",
-        type:"POST",
-        success:function (data) {
-            alert(data);
-            location.href = "/controller";
-        },
-        error:function (request,status,e) {
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done
-}
-
-// 제어기 접속횟수 초기화
-function resetConnCount(id) {
-    if (!confirm("접속횟수를 초기화 하시겠습니까?")) {
-        return;
-    }
-
-    $.ajax({
-        url:"/resetConnCount",
-        type:"POST",
-        data:"id="+id,
-        success:function (data) {
-            alert(data);
-            location.href = "/controller";
-        },
-        error:function (request,status,e) {
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done
-}
-
-// 전체 제어기 접속횟수 초기화
-function allResetConnCount() {
-    if (!confirm("전체 제어기의 접속횟수를 초기화 하시겠습니까?")) {
-        return;
-    }
-
-    $.ajax({
-        url:"/allResetConnCount",
-        type:"POST",
-        success:function (data) {
-            alert(data);
-            location.href = "/controller";
-        },
-        error:function (request,status,e) {
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done}
-
-
-// 제어기 리셋
-function resetController(id) {
-}
-
-// 전체 제어기 리셋
-function allResetController(id) {
-}
-
-function controllerPing(id, name, ip) {
-    var infoData = "ping: " + id + ", " + name + ", " + ip + "  =====>     <br/>";
-    tbodyAppend("fileTbody", infoData);
-
-    $.ajax({
-        url:"/getPing",
-        type:"POST",
-        data:"ipAddr="+ip,
-        success:function (data) {
-            var result = "<===== " + data + "<br/>";
-            tbodyAppend("fileTbody", result);
-        },
-        error:function (request,status,e) {
-            console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+e);
-        }
-    }).done
-}
-
-var _controllerList = "";
-function AllControllerPing() {
-    if (_controllerList == "") {
-        return;
-    }
-    $("#fileTbody").innerText = "";
-
-    //document.getElementById("fileTbody").innerHTML = data;
-    for (var el in _controllerList) {
-        controllerPing(_controllerList[el].ctlr_ID, _controllerList[el].istl_LCTN_NM, _controllerList[el].ctlr_IP);
-    }
-}
-
-/*
- * Tbody 데이터 넣기
- */
-function tbodyAppend(tagId, tbodyData) {
-    $("#"+tagId).append(tbodyData);
-}

文件差异内容过多而无法显示
+ 0 - 0
src/main/resources/static/js/moment.min.js


+ 0 - 91
src/main/webapp/WEB-INF/jsp/cctv.jsp

@@ -1,91 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<jsp:include page="head.jsp"/>
-
-<body>
-
-<div class="container" align="center">
-    <jsp:include page="header.jsp"/>
-    <jsp:include page="menu.jsp"/>
-
-    <div class="content">
-        <table border="0" cellpadding="10" cellspacing="0" width="100%" style="font-weight: bold;font-family:tahoma;font-size:14pt;color:#808080;border-color:#6a5acd" >
-            <tr><td>
-                <fieldset><legend> CCTV Network Ping Information </legend>
-                    <table align="center" border="1" cellpadding="1" cellspacing="0" style="border: 1px solid;font-weight: normal;font-family:tahoma;font-size:12pt;">
-                        <thead>
-                        <tr style="background-color: antiquewhite;">
-                            <th>관리번호</th>
-                            <th>CCTV ID</th>
-                            <th>CCTV 명칭</th>
-                            <th>IP Address</th>
-                            <th>상태</th>
-                            <th>마지막 PING 시간</th>
-                            <th>명령</th>
-                        </tr>
-                        </thead>
-                        <c:forEach var="entry" items="${list}" varStatus="status">
-                            <tr>
-                                <td align="center">${entry.value.CTLR_NMBR}</td>
-                                <td align="center">${entry.value.CTLR_ID}</td>
-                                <td>${entry.value.ISTL_LCTN_NM}</td>
-                                <td>&nbsp;${entry.value.CTLR_IP}&nbsp;</td>
-                                <td align="center">
-                                    <c:choose>
-                                        <c:when test="${entry.value.netState eq '0'}">
-                                            &nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;
-                                        </c:when>
-                                        <c:otherwise>
-                                            &nbsp;&nbsp;Alive&nbsp;&nbsp;
-                                        </c:otherwise>
-                                    </c:choose>
-                                </td>
-                                <td align="center">&nbsp;${entry.value.pingTime}&nbsp;</td>
-                                <td align="center">
-                                    &nbsp;&nbsp;<a href="javascript:controllerPing('${entry.value.CTLR_ID}', '${entry.value.ISTL_LCTN_NM}', '${entry.value.CTLR_IP}')">ping</a>&nbsp;&nbsp;</td>
-                           </tr>
-                        </c:forEach>
-                    </table>
-                    <br>
-                    <table align="center" border="0" cellpadding="1" cellspacing="0" style="font-weight: normal;font-family:tahoma;font-size:12pt;">
-                        <tr>
-                            <td><button type="button" onclick="AllControllerPing()">전체 ping</button></td>
-                        </tr>
-                    </table>
-
-            </fieldset>
-            </td></tr>
-        </table>
-    </div>
-
-    <div class="content">
-        <div class="log" id="log">
-            <fieldset id="FileForm">
-                <legend name="fileName" id="logFileName">Ping Test</legend>
-                <div id="logScroll" style="width: 98%;height: 660px;overflow: auto;margin:5px auto;">
-                    <table >
-                        <tbody id="fileTbody">
-
-                        </tbody>
-                    </table>
-                </div>
-            </fieldset>
-        </div>
-    </div>
-
-</div>
-
-<script type="text/javascript">
-    function init(){
-        _controllerList = ${objList};
-    }
-
-    $(document).ready(function() {
-        init();
-    });
-</script>
-
-</body>
-</html>

+ 0 - 10
src/main/webapp/WEB-INF/jsp/head.jsp

@@ -1,10 +0,0 @@
-<head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>${ServerConfig.processName}</title>
-</head>
-
-<script type="text/javascript" src="/js/moment.min.js"></script>
-<script type="text/javascript" src="/js/jquery-2.2.4.min.js"></script>
-<script type="text/javascript" src="/js/ajax.js"></script>
-<script type="text/javascript" src="/js/main.js"></script>
-<script type="text/javascript" src="/js/login.js"></script>

+ 0 - 12
src/main/webapp/WEB-INF/jsp/header.jsp

@@ -1,12 +0,0 @@
-
-<table width="100%" style="font-family:tahoma;font-size:12pt;color:#808080;border-color:#6a5acd;margin-top: 5px;" border="0" cellpadding="10" cellspacing="0">
-    <tr align="center"><td style="font-size: 24px; font-weight: bold; color: black;">${ServerConfig.processName}</td></tr>
-</table>
-<hr>
-<table width="100%" style="font-family:tahoma;font-size:12pt;color:#808080;border-color:#6a5acd;margin-top: -10px;" border="0" cellpadding="10" cellspacing="0" >
-    <tr align="right"><td id="serverTime" style="font-size: 16px; font-weight: bold; color: black; padding-right: 30px">${ServerTime}</td></tr>
-</table>
-
-<script type="text/javascript">
-    var _sever_time = '${ServerTime}';
-</script>

+ 0 - 60
src/main/webapp/WEB-INF/jsp/log.jsp

@@ -1,60 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<jsp:include page="head.jsp"/>
-<Link href="/css/jquery.treegrid.css" rel="stylesheet">
-<body>
-
-<div class="container" align="center">
-    <jsp:include page="header.jsp"/>
-    <jsp:include page="menu.jsp"/>
-
-    <div class="content">
-        <table border="0" cellpadding="10" cellspacing="0" width="600" style="font-weight: bold;font-family:tahoma;font-size:14pt;color:#808080;border-color:#6a5acd" >
-            <tr><td>
-                <fieldset><legend> Log Files </legend>
-                    <table class="table table-bordered tree-basic"  id="logFiles" border="0" cellpadding="1" cellspacing="0" style="width: 100%; font-weight: normal;font-family:tahoma;font-size:12pt;">
-                        <tbody id="logTbody">
-                        </tbody>
-                    </table>
-                </fieldset>
-            </td></tr>
-        </table>
-    </div>
-
-    <div class="content">
-        <div class="log" id="log">
-            <fieldset id="FileForm">
-                <legend name="fileName" id="logFileName">Log File View</legend>
-                <div id="logScroll" style="width: 98%;height: 660px;overflow: auto;margin:5px auto;">
-                    <table >
-                        <tbody id="fileTbody">
-
-                        </tbody>
-                    </table>
-                </div>
-            </fieldset>
-        </div>
-    </div>
-</div>
-
-</div>
-
-
-<script src="/js/jquery.treegrid.min.js"></script>
-<script type="text/javascript">
-    function init(){
-        var fileList = ${fileList};
-        var fileListBody = initLogFileList(fileList);
-        tbodyAppend("logTbody", fileListBody);
-        $('.tree-basic').treegrid();
-    }
-
-    $(document).ready(function() {
-        init();
-    });
-</script>
-
-</body>
-</html>

+ 0 - 26
src/main/webapp/WEB-INF/jsp/login.jsp

@@ -1,26 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<jsp:include page="head.jsp"/>
-<body>
-
-<div class="container" align="center">
-    <jsp:include page="header.jsp"/>
-
-    <div class="content">
-        <form id="loginForm" name="loginForm" action="/login" method="post">
-            <table border="0" cellpadding="1" cellspacing="0" style="font-family:tahoma;font-size:10pt;border-color:#kkkkkk;">
-                <tr>
-                    <td width="120" align="right">USER ID :</td>
-                    <td> <input type="text" size="20" maxlength="20" id="username" name="username" style=font-family:tahoma;font-size:10pt;/></td></tr>
-                <tr>
-                    <td width="120" align="right">USER PASSWORD :</td><td> <input type="password" size="20" maxlength="20" id="password" name="password" style=font-family:tahoma;font-size:10pt;/></td></tr>
-                <tr>
-                    <td width="120"></td><td align="left"><input type="submit" value=" LOGIN " style=font-family:tahoma;font-size:10pt;/></td></tr>
-            </table>
-        </form>
-    </div>
-</div>
-
-</body>
-</html>

+ 0 - 20
src/main/webapp/WEB-INF/jsp/menu.jsp

@@ -1,20 +0,0 @@
-<table style="font-family:tahoma;font-size:12pt;color:#808080;border-color:#6a5acd; margin-top: -10px" width="100%" border="0" cellpadding="10" cellspacing="0">
-    <tr><td>
-        <table border=0 cellpadding=0 cellspacing=0 style="font-family:tahoma;font-size:16pt;border-color:#808080;" align="center">
-            <tr>
-                <td><a href="/index">System</a></td>
-                <td width=20></td>
-                <td><a href="/cctv">cctv</a></td>
-                <td width=20></td>
-                <td><a href="/wcam">web camera</a></td>
-                <td width=20></td>
-                <td><a href="/log">Log</a></td>
-                <td width=20></td>
-                <form name="loginForm" method="post" action="/logout">
-                <td><a href="javascript:submitForm();">Logout</a></td>
-                </form>
-            </tr>
-        </table>
-
-    </td></tr>
-</table>

+ 0 - 32
src/main/webapp/WEB-INF/jsp/system.jsp

@@ -1,32 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<jsp:include page="head.jsp"/>
-
-<body>
-
-<div class="container" align="center">
-    <jsp:include page="header.jsp"/>
-    <jsp:include page="menu.jsp"/>
-
-    <div class="content">
-        <table border="0" cellpadding="10" cellspacing="0" width="600" style="font-weight: bold;font-family:tahoma;font-size:14pt;color:#808080;border-color:#6a5acd" >
-            <tr><td>
-                <fieldset><legend> System Information </legend>
-                    <table border="0" cellpadding="1" cellspacing="0" style="font-weight: normal;font-family:tahoma;font-size:12pt;">
-                            <tr><td align="right" width="200">          system id : </td> <td><input type="text" value="${ServerConfig.processId}"          disabled /></td></tr>
-                            <tr><td align="right" width="200">       ping timeout : </td> <td><input type="text" value="${ServerConfig.pingTimeout}"        disabled /></td></tr>
-                            <tr><td align="right" width="200">  ping core threads : </td> <td><input type="text" value="${ServerConfig.threadPoolCoreSize}" disabled /></td></tr>
-                            <tr><td align="right" width="200">   ping max threads : </td> <td><input type="text" value="${ServerConfig.threadPoolMaxSize}"  disabled /></td></tr>
-                            <tr><td align="right" width="200">   dbms job threads : </td> <td><input type="text" value="${ServerConfig.serverDbThreads}"    disabled /></td></tr>
-                            <tr><td align="right" width="200">       booting time : </td> <td><input type="text" value="${ServerConfig.bootingDateTime}"    disabled /></td></tr>
-                    </table>
-                </fieldset>
-            </td></tr>
-        </table>
-    </div>
-</div>
-
-
-</body>
-</html>

+ 0 - 91
src/main/webapp/WEB-INF/jsp/wcam.jsp

@@ -1,91 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<jsp:include page="head.jsp"/>
-
-<body>
-
-<div class="container" align="center">
-    <jsp:include page="header.jsp"/>
-    <jsp:include page="menu.jsp"/>
-
-    <div class="content">
-        <table border="0" cellpadding="10" cellspacing="0" width="100%" style="font-weight: bold;font-family:tahoma;font-size:14pt;color:#808080;border-color:#6a5acd" >
-            <tr><td>
-                <fieldset><legend> WEB Camera Network Ping Information </legend>
-                    <table align="center" border="1" cellpadding="1" cellspacing="0" style="border: 1px solid;font-weight: normal;font-family:tahoma;font-size:12pt;">
-                        <thead>
-                        <tr style="background-color: antiquewhite;">
-                            <th>관리번호</th>
-                            <th>Camera ID</th>
-                            <th>Camera 명칭</th>
-                            <th>IP Address</th>
-                            <th>상태</th>
-                            <th>마지막 PING 시간</th>
-                            <th>명령</th>
-                        </tr>
-                        </thead>
-                        <c:forEach var="entry" items="${list}" varStatus="status">
-                            <tr>
-                                <td align="center">${entry.value.CTLR_NMBR}</td>
-                                <td align="center">${entry.value.CTLR_ID}</td>
-                                <td>${entry.value.ISTL_LCTN_NM}</td>
-                                <td>&nbsp;${entry.value.CTLR_IP}&nbsp;</td>
-                                <td align="center">
-                                    <c:choose>
-                                        <c:when test="${entry.value.netState eq '0'}">
-                                            &nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;
-                                        </c:when>
-                                        <c:otherwise>
-                                            &nbsp;&nbsp;Alive&nbsp;&nbsp;
-                                        </c:otherwise>
-                                    </c:choose>
-                                </td>
-                                <td align="center">&nbsp;${entry.value.pingTime}&nbsp;</td>
-                                <td align="center">
-                                    &nbsp;&nbsp;<a href="javascript:controllerPing('${entry.value.CTLR_ID}', '${entry.value.ISTL_LCTN_NM}', '${entry.value.CTLR_IP}')">ping</a>&nbsp;&nbsp;</td>
-                            </tr>
-                        </c:forEach>
-                    </table>
-                    <br>
-                    <table align="center" border="0" cellpadding="1" cellspacing="0" style="font-weight: normal;font-family:tahoma;font-size:12pt;">
-                        <tr>
-                            <td><button type="button" onclick="AllControllerPing()">전체 ping</button></td>
-                        </tr>
-                    </table>
-
-            </fieldset>
-            </td></tr>
-        </table>
-    </div>
-
-    <div class="content">
-        <div class="log" id="log">
-            <fieldset id="FileForm">
-                <legend name="fileName" id="logFileName">Ping Test</legend>
-                <div id="logScroll" style="width: 98%;height: 660px;overflow: auto;margin:5px auto;">
-                    <table >
-                        <tbody id="fileTbody">
-
-                        </tbody>
-                    </table>
-                </div>
-            </fieldset>
-        </div>
-    </div>
-
-</div>
-
-<script type="text/javascript">
-    function init(){
-        _controllerList = ${objList};
-    }
-
-    $(document).ready(function() {
-        init();
-    });
-</script>
-
-</body>
-</html>

部分文件因为文件数量过多而无法显示