Skip to content

Commit 986a126

Browse files
committed
Replace all the monitoring result list to 'MonitoringResult' Object
1 parent 9ad03f5 commit 986a126

File tree

12 files changed

+148
-121
lines changed

12 files changed

+148
-121
lines changed

src/main/java/root/applications/CsvReportSeparatorApp.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public static void main(String[] args) throws IOException {
5555

5656
for(String key : map.keySet()) {
5757
// System.out.println("[" + key + "]\n" + map.get(key));
58-
reportRepository.writeReportFile(filePath + "/" + fileName, key, ".txt", map.get(key).toString());
58+
// TODO 수정
59+
// reportRepository.writeReportFile(filePath + "/" + fileName, key, ".txt", map.get(key).toString());
5960
}
6061
}
6162
}
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package root.core.repository.constracts;
22

3-
import java.util.List;
4-
53
import root.core.domain.ASMDiskUsage;
64
import root.core.domain.ArchiveUsage;
5+
import root.core.domain.MonitoringResult;
76
import root.core.domain.TableSpaceUsage;
87

98
public interface DBCheckRepository {
@@ -12,7 +11,7 @@ public interface DBCheckRepository {
1211
Object getTran();
1312
void endTran(Object conn);
1413

15-
List<ArchiveUsage> checkArchiveUsage();
16-
List<TableSpaceUsage> checkTableSpaceUsage();
17-
List<ASMDiskUsage> checkASMDiskUsage();
14+
MonitoringResult<ArchiveUsage> checkArchiveUsage();
15+
MonitoringResult<TableSpaceUsage> checkTableSpaceUsage();
16+
MonitoringResult<ASMDiskUsage> checkASMDiskUsage();
1817
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package root.core.repository.constracts;
22

3+
import root.core.domain.MonitoringResult;
4+
35
public interface ReportRepository {
4-
5-
void writeReportFile(String filePath, String fileName, String fileExtension, String fileContent);
6+
7+
void writeReportFile(String filePath, String fileName, String fileExtension, MonitoringResult<?> monitoringResult);
68
}
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
package root.core.repository.constracts;
22

3-
import java.util.List;
4-
53
import com.jcraft.jsch.Session;
64

75
import root.core.domain.AlertLog;
86
import root.core.domain.AlertLogCommand;
97
import root.core.domain.AlertLogCommandPeriod;
8+
import root.core.domain.MonitoringResult;
109
import root.core.domain.OSDiskUsage;
1110

1211
public interface ServerCheckRepository {
1312
String getServerName();
14-
13+
1514
Session getSession();
15+
1616
Session connectSession(Session session);
17+
1718
void disConnectSession(Session session);
18-
19+
1920
int getAlertLogFileLineCount(AlertLogCommand alc);
21+
2022
String checkAlertLog(AlertLogCommand alc);
23+
2124
AlertLog checkAlertLogDuringPeriod(AlertLogCommandPeriod alc);
22-
List<OSDiskUsage> checkOSDiskUsage();
25+
26+
MonitoringResult<OSDiskUsage> checkOSDiskUsage();
2327
}

src/main/java/root/core/repository/implement/DBCheckRepositoryImpl.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import root.common.database.contracts.AbstractDatabase;
1111
import root.core.domain.ASMDiskUsage;
1212
import root.core.domain.ArchiveUsage;
13+
import root.core.domain.MonitoringResult;
1314
import root.core.domain.TableSpaceUsage;
1415
import root.core.repository.constracts.DBCheckRepository;
1516

@@ -37,7 +38,7 @@ public void endTran(Object conn) {
3738
}
3839

3940
@Override
40-
public List<ArchiveUsage> checkArchiveUsage() {
41+
public MonitoringResult<ArchiveUsage> checkArchiveUsage() {
4142

4243
List<ArchiveUsage> result = new ArrayList<>();
4344
Connection conn = null;
@@ -77,11 +78,11 @@ public List<ArchiveUsage> checkArchiveUsage() {
7778
this.endTran(conn);
7879
}
7980

80-
return result;
81+
return new MonitoringResult<>(result);
8182
}
8283

8384
@Override
84-
public List<TableSpaceUsage> checkTableSpaceUsage() {
85+
public MonitoringResult<TableSpaceUsage> checkTableSpaceUsage() {
8586

8687
List<TableSpaceUsage> result = new ArrayList<>();
8788
Connection conn = null;
@@ -129,11 +130,11 @@ public List<TableSpaceUsage> checkTableSpaceUsage() {
129130
this.endTran(conn);
130131
}
131132

132-
return result;
133+
return new MonitoringResult<>(result);
133134
}
134135

135136
@Override
136-
public List<ASMDiskUsage> checkASMDiskUsage() {
137+
public MonitoringResult<ASMDiskUsage> checkASMDiskUsage() {
137138

138139
List<ASMDiskUsage> result = new ArrayList<>();
139140
Connection conn = null;
@@ -188,7 +189,7 @@ public List<ASMDiskUsage> checkASMDiskUsage() {
188189
this.endTran(conn);
189190
}
190191

191-
return result;
192+
return new MonitoringResult<>(result);
192193
}
193194

194195
}

src/main/java/root/core/repository/implement/ReportRepositoryImpl.java

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,78 @@
33
import java.io.BufferedWriter;
44
import java.io.File;
55
import java.io.FileWriter;
6+
import java.io.IOException;
67

8+
import org.apache.commons.lang3.StringUtils;
9+
10+
import lombok.extern.slf4j.Slf4j;
11+
import root.core.domain.MonitoringResult;
12+
import root.core.domain.TableSpaceUsage;
713
import root.core.repository.constracts.ReportRepository;
14+
import root.utils.CsvUtils;
815

16+
@Slf4j
917
public class ReportRepositoryImpl implements ReportRepository {
10-
18+
1119
private static ReportRepository reportRepository = new ReportRepositoryImpl();
1220

1321
private String rootDirectory = "./report";
1422

15-
private ReportRepositoryImpl() {}
16-
23+
private ReportRepositoryImpl() {
24+
}
25+
1726
public static ReportRepository getInstance() {
1827
return reportRepository;
1928
}
2029

21-
// TODO Reflection 이용하여 객체리스트를 전달받은 후 CSV형태로 작성할 수 있도록 해보자.
2230
/**
23-
* 파일을 작성한다.
31+
* 모니터링 결과를 파일에 기록한다.
2432
*/
2533
@Override
26-
public void writeReportFile(String filePath, String fileName, String fileExtension, String fileContent) {
34+
public void writeReportFile(String filePath, String fileName, String fileExtension,
35+
MonitoringResult<?> monitoringResult) {
36+
37+
File file = new File(rootDirectory + "/" + filePath + "/" + fileName + fileExtension);
38+
File parentDir = file.getParentFile();
39+
40+
String content = null;
41+
2742
try {
28-
File file = new File(rootDirectory + "/" + filePath + "/" + fileName + fileExtension);
29-
if(!file.exists()) {
30-
file.createNewFile();
43+
44+
boolean isNewFile = false;
45+
if (!file.exists()) {
46+
parentDir.mkdirs();
47+
isNewFile = file.createNewFile();
3148
}
32-
BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));
33-
bw.append(fileContent).append("\n");
49+
50+
// 첫 파일작성인 경우 헤더 추가
51+
if (isNewFile) {
52+
content = StringUtils.joinWith(",", "MONITORING_DATE", "MONITORING_TIME",
53+
CsvUtils.createCsvHeader(TableSpaceUsage.class));
54+
}
55+
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);
63+
}
64+
} catch (Exception e) {
65+
e.printStackTrace();
66+
}
67+
68+
if (content == null) {
69+
log.error(String.format("파일에 작성할 내용이 없습니다. 파일경로: %s", file.getPath()));
70+
return;
71+
}
72+
73+
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
74+
bw.append(content);
3475
bw.flush();
3576
bw.close();
36-
} catch(Exception e) {
77+
} catch (IOException e) {
3778
e.printStackTrace();
3879
}
3980
}

src/main/java/root/core/repository/implement/ServerCheckRepositoryImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import root.core.domain.AlertLogCommand;
2020
import root.core.domain.AlertLogCommandPeriod;
2121
import root.core.domain.Log;
22+
import root.core.domain.MonitoringResult;
2223
import root.core.domain.OSDiskUsage;
2324
import root.core.repository.constracts.ServerCheckRepository;
2425
import root.utils.DateUtils;
@@ -209,7 +210,7 @@ public AlertLog checkAlertLogDuringPeriod(AlertLogCommandPeriod alcp) {
209210
}
210211

211212
@Override
212-
public List<OSDiskUsage> checkOSDiskUsage() {
213+
public MonitoringResult<OSDiskUsage> checkOSDiskUsage() {
213214
List<OSDiskUsage> list = new ArrayList<>();
214215
try {
215216
Session session = this.getSession();
@@ -224,7 +225,7 @@ public List<OSDiskUsage> checkOSDiskUsage() {
224225
e.printStackTrace();
225226
}
226227

227-
return list;
228+
return new MonitoringResult<>(list);
228229
}
229230

230231
public List<OSDiskUsage> stringToOsDiskUsageList (String result) {
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package root.core.usecase.constracts;
22

3-
import java.util.List;
4-
53
import root.core.domain.ASMDiskUsage;
64
import root.core.domain.ArchiveUsage;
5+
import root.core.domain.MonitoringResult;
76
import root.core.domain.TableSpaceUsage;
87

98
public interface DBCheckUsecase {
@@ -16,8 +15,8 @@ public interface DBCheckUsecase {
1615
void writeCsvTableSpaceUsage();
1716
void writeCsvASMDiskUsage();
1817

19-
List<ArchiveUsage> getCurrentArchiveUsage();
20-
List<TableSpaceUsage> getCurrentTableSpaceUsage();
21-
List<ASMDiskUsage> getCurrentASMDiskUsage();
18+
MonitoringResult<ArchiveUsage> getCurrentArchiveUsage();
19+
MonitoringResult<TableSpaceUsage> getCurrentTableSpaceUsage();
20+
MonitoringResult<ASMDiskUsage> getCurrentASMDiskUsage();
2221

2322
}
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
package root.core.usecase.constracts;
22

3-
import java.util.List;
4-
53
import root.core.domain.AlertLog;
64
import root.core.domain.AlertLogCommand;
75
import root.core.domain.AlertLogCommandPeriod;
6+
import root.core.domain.MonitoringResult;
87
import root.core.domain.OSDiskUsage;
98

109
public interface ServerCheckUsecase {
1110
void printAlertLog(AlertLogCommand alc);
11+
1212
void printAlertLogDuringPeriod(AlertLogCommandPeriod alcp);
13+
1314
void printOSDiskUsage();
14-
15+
1516
void writeExcelOSDiskUsage() throws Exception;
17+
1618
void writeCsvOSDiskUsage() throws Exception;
17-
18-
List<OSDiskUsage> getCurrentOSDiskUsage();
19+
20+
MonitoringResult<OSDiskUsage> getCurrentOSDiskUsage();
21+
1922
AlertLog getAlertLogDuringPeriod(AlertLogCommandPeriod alcp);
2023
}

0 commit comments

Comments
 (0)