Skip to content

Commit 33121bd

Browse files
committed
Read monitoring headers and contents in csv format from report file
1 parent 28135f0 commit 33121bd

File tree

3 files changed

+244
-41
lines changed

3 files changed

+244
-41
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
package root.core.repository.constracts;
22

3-
import root.core.domain.MonitoringResult;
3+
import java.io.File;
4+
import java.util.List;
45

56
public interface ReportRepository {
67

7-
void writeReportFile(String filePath, String fileName, String fileExtension, MonitoringResult<?> monitoringResult);
8+
<T> void writeReportFile(String filePath, String fileName, String fileExtension, List<T> monitoringResult,
9+
Class<T> clazz);
10+
11+
List<String> getReportHeaders(File reportFile);
12+
13+
String getReportContentsInCsv(File reportFile);
814
}
Lines changed: 59 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package root.core.repository.implement;
22

3+
import java.io.BufferedReader;
34
import java.io.BufferedWriter;
45
import java.io.File;
6+
import java.io.FileNotFoundException;
7+
import java.io.FileReader;
58
import java.io.FileWriter;
69
import java.io.IOException;
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.stream.Collectors;
714

815
import org.apache.commons.lang3.StringUtils;
916

1017
import lombok.extern.slf4j.Slf4j;
11-
import root.core.domain.MonitoringResult;
12-
import root.core.domain.TableSpaceUsage;
1318
import root.core.repository.constracts.ReportRepository;
1419
import root.utils.CsvUtils;
1520

@@ -31,46 +36,34 @@ public static ReportRepository getInstance() {
3136
* 모니터링 결과를 파일에 기록한다.
3237
*/
3338
@Override
34-
public void writeReportFile(String filePath, String fileName, String fileExtension,
35-
MonitoringResult<?> monitoringResult) {
39+
public <T> void writeReportFile(String filePath, String fileName, String fileExtension, List<T> monitoringResult,
40+
Class<T> clazz) {
3641

3742
File file = new File(rootDirectory + "/" + filePath + "/" + fileName + fileExtension);
38-
File parentDir = file.getParentFile();
39-
4043
String content = null;
41-
4244
try {
4345

44-
boolean isNewFile = false;
4546
if (!file.exists()) {
46-
parentDir.mkdirs();
47-
isNewFile = file.createNewFile();
47+
file.getParentFile().mkdirs();
48+
file.createNewFile();
4849
}
4950

50-
// 첫 파일작성인 경우 헤더 추가
51-
if (isNewFile) {
52-
content = StringUtils.joinWith(",", "MONITORING_DATE", "MONITORING_TIME",
53-
CsvUtils.createCsvHeader(TableSpaceUsage.class));
54-
}
51+
content = CsvUtils.createCsvHeader(clazz);
5552

56-
// 모니터링결과 Row 추가
57-
String monitoringDay = monitoringResult.getMonitoringDay();
58-
String monitoringTime = monitoringResult.getMonitoringTime();
59-
for (Object obj : monitoringResult.getMonitoringResults()) {
60-
String rowString = StringUtils.joinWith(",", monitoringDay, monitoringTime,
61-
CsvUtils.createCsvRow(obj, obj.getClass()));
62-
content = StringUtils.joinWith(System.lineSeparator(), content, rowString);
53+
for (Object t : monitoringResult) {
54+
String row = CsvUtils.createCsvRow(t, t.getClass());
55+
content = StringUtils.joinWith(System.lineSeparator(), content, row);
6356
}
6457
} catch (Exception e) {
6558
e.printStackTrace();
6659
}
6760

6861
if (content == null) {
69-
log.error(String.format("파일에 작성할 내용이 없습니다. 파일경로: %s", file.getPath()));
62+
log.info(String.format("파일에 작성할 내용이 없습니다. 파일경로: %s", file.getPath()));
7063
return;
7164
}
7265

73-
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
66+
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, false))) {
7467
bw.append(content);
7568
bw.flush();
7669
bw.close();
@@ -79,4 +72,46 @@ public void writeReportFile(String filePath, String fileName, String fileExtensi
7972
}
8073
}
8174

75+
@Override
76+
public List<String> getReportHeaders(File file) {
77+
List<String> result = new ArrayList<>();
78+
79+
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
80+
81+
String firstLine = br.readLine();
82+
Map<Integer, String> headerMap = CsvUtils.parseCsvLine(firstLine);
83+
List<Integer> sortedKeyList = headerMap.keySet().stream().sorted().collect(Collectors.toList());
84+
85+
for (int i : sortedKeyList) {
86+
result.add(headerMap.get(i));
87+
}
88+
89+
} catch (FileNotFoundException e) {
90+
e.printStackTrace();
91+
} catch (IOException e) {
92+
e.printStackTrace();
93+
}
94+
95+
return result;
96+
}
97+
98+
@Override
99+
public String getReportContentsInCsv(File reportFile) {
100+
StringBuilder result = new StringBuilder();
101+
102+
try (BufferedReader br = new BufferedReader(new FileReader(reportFile))) {
103+
104+
String line = br.readLine();
105+
while ((line = br.readLine()) != null) {
106+
result.append(line).append(System.lineSeparator());
107+
}
108+
109+
} catch (FileNotFoundException e) {
110+
e.printStackTrace();
111+
} catch (IOException e) {
112+
e.printStackTrace();
113+
}
114+
115+
return result.toString();
116+
}
82117
}

0 commit comments

Comments
 (0)