Skip to content

Commit 7b4d5fa

Browse files
authored
Merge pull request #197 from Dokyeongyun/ft-220322-historyNavigator
Ft 220322 history navigator
2 parents d983f36 + 9733241 commit 7b4d5fa

File tree

9 files changed

+277
-18
lines changed

9 files changed

+277
-18
lines changed

src/main/java/root/core/usecase/constracts/ReportUsecase.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,24 @@
77
import root.utils.UnitUtils.FileSize;
88

99
public interface ReportUsecase {
10+
1011
<T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> clazz, String alias, FileSize unit,
1112
int round);
1213

1314
<T extends MonitoringResult> Map<String, List<T>> getMonitoringReportDataByTime(Class<T> clazz, String alias,
1415
FileSize unit, int round, String inquiryDate);
1516

17+
<T extends MonitoringResult> Map<String, List<T>> getPrevMonitoringReportDataByTime(Class<T> clazz, String alias,
18+
FileSize unit, int round, String inquiryDateTime);
19+
20+
<T extends MonitoringResult> Map<String, List<T>> getNextMonitoringReportDataByTime(Class<T> clazz, String alias,
21+
FileSize unit, int round, String inquiryDateTime);
22+
1623
<T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz, String alias,
1724
FileSize unit, int round, String inquiryDate);
18-
25+
1926
<T extends MonitoringResult> Map<Integer, List<String>> getMonitoringReportTimesByTime(Class<T> clazz, String alias,
2027
FileSize unit, int round, String inquiryDate);
28+
29+
<T extends MonitoringResult> List<String> getMonitoringHistoryDays(Class<T> clazz, String alias);
2130
}

src/main/java/root/core/usecase/implement/ReportUsecaseImpl.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package root.core.usecase.implement;
22

33
import java.util.ArrayList;
4+
import java.util.Comparator;
5+
import java.util.LinkedHashMap;
46
import java.util.List;
57
import java.util.Locale;
68
import 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
}

src/main/java/root/javafx/Controller/HistoryMenuController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import root.core.usecase.implement.DBCheckUsecaseImpl;
4242
import root.core.usecase.implement.ServerCheckUsecaseImpl;
4343
import root.javafx.CustomView.AlertLogListViewCell;
44-
import root.javafx.CustomView.DisableAfterTodayDateCell;
44+
import root.javafx.CustomView.dateCell.DisableAfterTodayDateCell;
4545
import root.utils.AlertUtils;
4646

4747
public class HistoryMenuController implements Initializable {

0 commit comments

Comments
 (0)