11package root .core .usecase .implement ;
22
33import java .util .ArrayList ;
4+ import java .util .Comparator ;
5+ import java .util .LinkedHashMap ;
46import java .util .List ;
57import java .util .Locale ;
68import java .util .Map ;
@@ -51,9 +53,67 @@ public <T extends MonitoringResult> Map<String, List<T>> getMonitoringReportData
5153 return getMonitoringReportData (clazz , alias , unit , round )
5254 .stream ()
5355 .filter (m -> inquiryDate .equals (m .getMonitoringDate ()))
56+ .sorted (Comparator .comparing (MonitoringResult ::getMonitoringDateTime ))
57+ .collect (Collectors .groupingBy (MonitoringResult ::getMonitoringDateTime ,
58+ LinkedHashMap ::new ,
59+ Collectors .mapping (m -> m , Collectors .toList ())));
60+ }
61+
62+ @ Override
63+ public <T extends MonitoringResult > Map <String , List <T >> getPrevMonitoringReportDataByTime (Class <T > clazz ,
64+ String alias , FileSize unit , int round , String inquiryDateTime ) {
65+
66+ String prevDateTime = getPrevHistoryDateTime (clazz , alias , unit , round , inquiryDateTime );
67+
68+ return getMonitoringReportData (clazz , alias , unit , round )
69+ .stream ()
70+ .filter (m -> prevDateTime .equals (m .getMonitoringDateTime ()))
71+ .sorted (Comparator .comparing (MonitoringResult ::getMonitoringDateTime ).reversed ())
72+ .collect (Collectors .groupingBy (m -> m .getMonitoringDateTime (),
73+ Collectors .mapping (m -> m , Collectors .toList ())));
74+ }
75+
76+ private <T extends MonitoringResult > String getPrevHistoryDateTime (Class <T > clazz , String alias , FileSize unit ,
77+ int round , String curHistoryDateTime ) {
78+
79+ // TODO 날짜 컬럼만 읽기
80+ MonitoringResult result = getMonitoringReportData (clazz , alias , unit , round )
81+ .stream ()
82+ .filter (m -> DateUtils .compareTo ("yyyyMMddHHmmss" , curHistoryDateTime , m .getMonitoringDateTime ()) == 1 )
83+ .sorted (Comparator .comparing (MonitoringResult ::getMonitoringDateTime ).reversed ())
84+ .findFirst ()
85+ .orElse (null );
86+
87+ return result == null ? curHistoryDateTime : result .getMonitoringDateTime ();
88+ }
89+
90+ @ Override
91+ public <T extends MonitoringResult > Map <String , List <T >> getNextMonitoringReportDataByTime (Class <T > clazz ,
92+ String alias , FileSize unit , int round , String inquiryDateTime ) {
93+
94+ String nextDateTime = getNextHistoryDateTime (clazz , alias , unit , round , inquiryDateTime );
95+
96+ return getMonitoringReportData (clazz , alias , unit , round )
97+ .stream ()
98+ .filter (m -> nextDateTime .equals (m .getMonitoringDateTime ()))
99+ .sorted (Comparator .comparing (MonitoringResult ::getMonitoringDateTime ))
54100 .collect (Collectors .groupingBy (m -> m .getMonitoringDateTime (),
55101 Collectors .mapping (m -> m , Collectors .toList ())));
56102 }
103+
104+ private <T extends MonitoringResult > String getNextHistoryDateTime (Class <T > clazz , String alias , FileSize unit ,
105+ int round , String curHistoryDateTime ) {
106+
107+ // TODO 날짜 컬럼만 읽기
108+ MonitoringResult result = getMonitoringReportData (clazz , alias , unit , round )
109+ .stream ()
110+ .filter (m -> DateUtils .compareTo ("yyyyMMddHHmmss" , curHistoryDateTime , m .getMonitoringDateTime ()) == -1 )
111+ .sorted (Comparator .comparing (MonitoringResult ::getMonitoringDateTime ))
112+ .findFirst ()
113+ .orElse (null );
114+
115+ return result == null ? curHistoryDateTime : result .getMonitoringDateTime ();
116+ }
57117
58118 @ Override
59119 public <T extends MonitoringResult > Map <Integer , Long > getMonitoringReportCountByTime (Class <T > clazz ,
@@ -84,6 +144,7 @@ public <T extends MonitoringResult> Map<Integer, List<String>> getMonitoringRepo
84144 .stream ()
85145 .collect (Collectors .groupingBy (
86146 m -> Integer .parseInt (DateUtils .convertDateFormat ("yyyyMMddHHmmss" , "HH" , m , Locale .KOREA )),
147+ LinkedHashMap ::new ,
87148 Collectors .mapping (m -> m , Collectors .toList ())));
88149
89150 for (int i = 0 ; i < 24 ; i ++) {
@@ -94,4 +155,12 @@ public <T extends MonitoringResult> Map<Integer, List<String>> getMonitoringRepo
94155
95156 return result ;
96157 }
158+
159+ @ Override
160+ public <T extends MonitoringResult > List <String > getMonitoringHistoryDays (Class <T > clazz , String alias ) {
161+ return getMonitoringReportData (clazz , alias , FileSize .B , 2 )
162+ .stream ()
163+ .map (r -> r .getMonitoringDate ())
164+ .collect (Collectors .toList ());
165+ }
97166}
0 commit comments