Skip to content

Commit be19364

Browse files
committed
Query previous and next history data
1 parent 01b98b9 commit be19364

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ <T extends MonitoringResult> List<T> getMonitoringReportData(Class<T> clazz, Str
1414
<T extends MonitoringResult> Map<String, List<T>> getMonitoringReportDataByTime(Class<T> clazz, String alias,
1515
FileSize unit, int round, String inquiryDate);
1616

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+
1723
<T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz, String alias,
1824
FileSize unit, int round, String inquiryDate);
1925

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

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

33
import java.util.ArrayList;
4+
import java.util.Comparator;
45
import java.util.List;
56
import java.util.Locale;
67
import java.util.Map;
@@ -54,6 +55,62 @@ public <T extends MonitoringResult> Map<String, List<T>> getMonitoringReportData
5455
.collect(Collectors.groupingBy(m -> m.getMonitoringDateTime(),
5556
Collectors.mapping(m -> m, Collectors.toList())));
5657
}
58+
59+
@Override
60+
public <T extends MonitoringResult> Map<String, List<T>> getPrevMonitoringReportDataByTime(Class<T> clazz,
61+
String alias, FileSize unit, int round, String inquiryDateTime) {
62+
63+
String prevDateTime = getPrevHistoryDateTime(clazz, alias, unit, round, inquiryDateTime);
64+
65+
return getMonitoringReportData(clazz, alias, unit, round)
66+
.stream()
67+
.filter(m -> prevDateTime.equals(m.getMonitoringDateTime()))
68+
.sorted(Comparator.comparing(MonitoringResult::getMonitoringDateTime).reversed())
69+
.collect(Collectors.groupingBy(m -> m.getMonitoringDateTime(),
70+
Collectors.mapping(m -> m, Collectors.toList())));
71+
}
72+
73+
private <T extends MonitoringResult> String getPrevHistoryDateTime(Class<T> clazz, String alias, FileSize unit,
74+
int round, String curHistoryDateTime) {
75+
76+
// TODO 날짜 컬럼만 읽기
77+
MonitoringResult result = getMonitoringReportData(clazz, alias, unit, round)
78+
.stream()
79+
.filter(m -> DateUtils.compareTo("yyyyMMddHHmmss", curHistoryDateTime, m.getMonitoringDateTime()) == 1)
80+
.sorted(Comparator.comparing(MonitoringResult::getMonitoringDateTime).reversed())
81+
.findFirst()
82+
.orElse(null);
83+
84+
return result == null ? curHistoryDateTime : result.getMonitoringDateTime();
85+
}
86+
87+
@Override
88+
public <T extends MonitoringResult> Map<String, List<T>> getNextMonitoringReportDataByTime(Class<T> clazz,
89+
String alias, FileSize unit, int round, String inquiryDateTime) {
90+
91+
String nextDateTime = getNextHistoryDateTime(clazz, alias, unit, round, inquiryDateTime);
92+
93+
return getMonitoringReportData(clazz, alias, unit, round)
94+
.stream()
95+
.filter(m -> nextDateTime.equals(m.getMonitoringDateTime()))
96+
.sorted(Comparator.comparing(MonitoringResult::getMonitoringDateTime))
97+
.collect(Collectors.groupingBy(m -> m.getMonitoringDateTime(),
98+
Collectors.mapping(m -> m, Collectors.toList())));
99+
}
100+
101+
private <T extends MonitoringResult> String getNextHistoryDateTime(Class<T> clazz, String alias, FileSize unit,
102+
int round, String curHistoryDateTime) {
103+
104+
// TODO 날짜 컬럼만 읽기
105+
MonitoringResult result = getMonitoringReportData(clazz, alias, unit, round)
106+
.stream()
107+
.filter(m -> DateUtils.compareTo("yyyyMMddHHmmss", curHistoryDateTime, m.getMonitoringDateTime()) == -1)
108+
.sorted(Comparator.comparing(MonitoringResult::getMonitoringDateTime))
109+
.findFirst()
110+
.orElse(null);
111+
112+
return result == null ? curHistoryDateTime : result.getMonitoringDateTime();
113+
}
57114

58115
@Override
59116
public <T extends MonitoringResult> Map<Integer, Long> getMonitoringReportCountByTime(Class<T> clazz,

src/main/java/root/utils/DateUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,18 @@ public static String convertDateFormat(String fromFormat, String toFormat, Strin
170170
public static String format(Date date, String toFormat) {
171171
return new SimpleDateFormat(toFormat).format(date);
172172
}
173+
174+
public static int compareTo(String format, String base, String compare) {
175+
try {
176+
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
177+
Date date1 = dateFormat.parse(base);
178+
Date date2 = dateFormat.parse(compare);
179+
180+
return date1.compareTo(date2);
181+
} catch (ParseException e) {
182+
183+
}
184+
185+
return -1;
186+
}
173187
}

0 commit comments

Comments
 (0)