Skip to content

Commit 0cb4559

Browse files
authored
Merge pull request #186 from Dokyeongyun/develop
Develop
2 parents e93cc51 + 5a7149e commit 0cb4559

File tree

17 files changed

+955
-355
lines changed

17 files changed

+955
-355
lines changed

src/main/java/root/applications/ConsoleApp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public static void main(String[] args) throws IOException {
140140
TextTable serverTable = new TextTable(
141141
new CsvTableModel(CsvUtils.toCsvString(jschConnectionList, JschConnectionInfo.class)));
142142
serverTable.printTable(System.out, 2);
143-
143+
144144
// TODO STEP5: 모니터링여부 설정 읽기
145145

146146
// STEP6: 모니터링 수행
@@ -164,7 +164,7 @@ public static void main(String[] args) throws IOException {
164164
JschServer server = new JschServer(jsch);
165165
server.init();
166166
ServerCheckRepository repo = new ServerCheckRepositoryImpl(server);
167-
ServerCheckUsecase usecase = new ServerCheckUsecaseImpl(repo);
167+
ServerCheckUsecase usecase = new ServerCheckUsecaseImpl(repo, ReportFileRepo.getInstance());
168168
ServerCheckBatch serverBatch = new ServerCheckBatch(usecase);
169169

170170
AlertLogCommandPeriod alcp = new AlertLogCommandPeriod(jsch.getAlc(),

src/main/java/root/core/domain/OSDiskUsage.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
package root.core.domain;
22

3+
import java.util.Date;
4+
35
import lombok.Data;
46
import lombok.EqualsAndHashCode;
5-
import lombok.NoArgsConstructor;
67
import root.utils.UnitUtils;
78
import root.utils.UnitUtils.FileSize;
89

9-
@NoArgsConstructor
1010
@EqualsAndHashCode(callSuper = false)
1111
@Data
1212
public class OSDiskUsage extends MonitoringResult {
1313

14+
public OSDiskUsage() {
15+
super(new Date());
16+
}
17+
1418
public OSDiskUsage(String monitoringDate, String monitoringTime, String fileSystem, String mountedOn,
1519
double totalSpace, double freeSpace, double usedSpace, double usedPercent) {
1620
super(monitoringDate, monitoringTime);
@@ -41,4 +45,10 @@ public void convertUnit(FileSize fromUnit, FileSize toUnit, int round) {
4145
this.usedSpace = UnitUtils.convertFileUnit(fromUnit, toUnit, usedSpace, round);
4246
}
4347

48+
@Override
49+
public String toString() {
50+
return "OSDiskUsage [fileSystem=" + fileSystem + ", mountedOn=" + mountedOn + ", totalSpace=" + totalSpace
51+
+ ", freeSpace=" + freeSpace + ", usedSpace=" + usedSpace + ", usedPercent=" + usedPercent + "]"
52+
+ super.getMonitoringDate() + " " + super.getMonitoringTime();
53+
}
4454
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,19 +246,19 @@ public List<OSDiskUsage> stringToOsDiskUsageList (String result) {
246246
case "Filesystem":
247247
row.setFileSystem(next);
248248
break;
249-
case "Size":
249+
case "1024-blocks":
250250
row.setTotalSpace(NumberUnitUtils.toByteValue(Unit.KiloByte,
251251
Double.valueOf(next.substring(0, next.indexOf("K")))));
252252
break;
253253
case "Used":
254254
row.setUsedSpace(NumberUnitUtils.toByteValue(Unit.KiloByte,
255255
Double.valueOf(next.substring(0, next.indexOf("K")))));
256256
break;
257-
case "Avail":
257+
case "Available":
258258
row.setFreeSpace(NumberUnitUtils.toByteValue(Unit.KiloByte,
259259
Double.valueOf(next.substring(0, next.indexOf("K")))));
260260
break;
261-
case "Use%":
261+
case "Capacity":
262262
row.setUsedPercent(Double.valueOf(next.substring(0, next.indexOf("%"))));
263263
break;
264264
case "Mounted on":

src/main/java/root/core/service/contracts/PropertyService.java

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55

66
import root.core.domain.JdbcConnectionInfo;
77
import root.core.domain.JschConnectionInfo;
8+
import root.core.domain.MonitoringYN;
9+
import root.core.domain.enums.RoundingDigits;
10+
import root.core.domain.enums.UsageUIType;
11+
import root.utils.UnitUtils.FileSize;
812

913
public interface PropertyService {
1014

@@ -14,7 +18,7 @@ public interface PropertyService {
1418
* @param filePath
1519
*/
1620
void loadConnectionInfoConfig(String filePath);
17-
21+
1822
/**
1923
* 모니터링 접속정보 설정파일의 경로를 반환한다.
2024
*
@@ -35,14 +39,30 @@ public interface PropertyService {
3539
* @param filePath
3640
*/
3741
void loadMonitoringInfoConfig(String filePath);
38-
42+
3943
/**
4044
* 최근 사용된 모니터링 여부 Preset 설정파일의 Preset명을 반환한다.
4145
*
4246
* @return
4347
*/
4448
String getLastUsePresetFileName(String filePath);
4549

50+
/**
51+
* 모니터링여부 Preset 설정파일을 읽어 DB 모니터링 여부 리스트를 반환한다.
52+
*
53+
* @param presetConfigFileName
54+
* @return
55+
*/
56+
List<MonitoringYN> getDBMonitoringYnList(String presetConfigFileName);
57+
58+
/**
59+
* 모니터링여부 Preset 설정파일을 읽어 Server 모니터링 여부 리스트를 반환한다.
60+
*
61+
* @param presetConfigFileName
62+
* @return
63+
*/
64+
List<MonitoringYN> getServerMonitoringYnList(String presetConfigFileName);
65+
4666
Map<String, String> getMonitoringPresetMap();
4767

4868
List<String> getMonitoringPresetFilePathList();
@@ -58,4 +78,25 @@ public interface PropertyService {
5878
List<JdbcConnectionInfo> getJdbcConnInfoList(List<String> dbNames);
5979

6080
List<JschConnectionInfo> getJschConnInfoList(List<String> serverNames);
81+
82+
/**
83+
* 기본값으로 설정된 FileSize 단위를 반환한다.
84+
*
85+
* @return
86+
*/
87+
FileSize getDefaultFileSizeUnit();
88+
89+
/**
90+
* 기본값으로 설정된 반올림 자릿수를 반환한다.
91+
*
92+
* @return
93+
*/
94+
RoundingDigits getDefaultRoundingDigits();
95+
96+
/**
97+
* 기본값으로 설정된 사용량 컬럼 UI 타입을 반환한다.
98+
*
99+
* @return
100+
*/
101+
UsageUIType getDefaultUsageUIType();
61102
}

src/main/java/root/core/service/implement/FilePropertyService.java

Lines changed: 100 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,26 @@
22

33
import java.util.ArrayList;
44
import java.util.Arrays;
5+
import java.util.HashMap;
56
import java.util.List;
67
import java.util.Map;
7-
import java.util.Spliterator;
8-
import java.util.Spliterators;
98
import java.util.regex.Matcher;
109
import java.util.regex.Pattern;
1110
import java.util.stream.Collectors;
12-
import java.util.stream.StreamSupport;
11+
12+
import org.apache.commons.configuration2.PropertiesConfiguration;
13+
import org.apache.commons.lang3.StringUtils;
1314

1415
import root.core.domain.JdbcConnectionInfo;
1516
import root.core.domain.JschConnectionInfo;
17+
import root.core.domain.MonitoringYN;
18+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
19+
import root.core.domain.enums.MonitoringType;
20+
import root.core.domain.enums.RoundingDigits;
21+
import root.core.domain.enums.UsageUIType;
1622
import root.core.repository.constracts.PropertyRepository;
1723
import root.core.service.contracts.PropertyService;
24+
import root.utils.UnitUtils.FileSize;
1825

1926
public class FilePropertyService implements PropertyService {
2027

@@ -59,20 +66,80 @@ public void loadMonitoringInfoConfig(String filePath) {
5966
propRepo.loadMonitoringInfoConfig(filePath);
6067
}
6168

69+
/**
70+
* 최근 사용된 모니터링 여부 Preset 설정파일명을 반환한다.
71+
*/
6272
@Override
6373
public String getLastUsePresetFileName(String filePath) {
6474
return propRepo.getLastUseMonitoringPresetName(filePath);
6575
}
6676

77+
@Override
78+
public List<MonitoringYN> getDBMonitoringYnList(String presetConfigFileName) {
79+
String presetConfigFilePath = propRepo.getMonitoringPresetMap().get(presetConfigFileName);
80+
81+
// Load
82+
loadMonitoringInfoConfig(presetConfigFilePath);
83+
84+
List<String> dbAliasList = Arrays.asList(propRepo.getMonitoringDBNames());
85+
List<MonitoringType> monitoringTypeList = Arrays.asList(MonitoringType.values()).stream()
86+
.filter(t -> t.getCategory().equals("DB")).collect(Collectors.toList());
87+
88+
return getMonitoringYNList(dbAliasList, monitoringTypeList);
89+
}
90+
91+
@Override
92+
public List<MonitoringYN> getServerMonitoringYnList(String presetConfigFileName) {
93+
String presetConfigFilePath = propRepo.getMonitoringPresetMap().get(presetConfigFileName);
94+
95+
// Load
96+
loadMonitoringInfoConfig(presetConfigFilePath);
97+
98+
List<String> serverAliasList = Arrays.asList(propRepo.getMonitoringServerNames());
99+
List<MonitoringType> monitoringTypeList = Arrays.asList(MonitoringType.values()).stream()
100+
.filter(t -> t.getCategory().equals("SERVER")).collect(Collectors.toList());
101+
102+
return getMonitoringYNList(serverAliasList, monitoringTypeList);
103+
}
104+
105+
private List<MonitoringYN> getMonitoringYNList(List<String> aliasList, List<MonitoringType> monitoringTypeList) {
106+
107+
List<MonitoringYN> result = new ArrayList<>();
108+
for (String serverAlias : aliasList) {
109+
MonitoringYN monitoringYn = new MonitoringYN(serverAlias);
110+
List<MonitoringTypeAndYN> list = new ArrayList<>();
111+
for (MonitoringType monitoringType : monitoringTypeList) {
112+
String yn = propRepo
113+
.getMonitoringConfigResource(monitoringType.getName().replace(" ", "_") + "." + serverAlias);
114+
if (!StringUtils.isEmpty(yn)) {
115+
list.add(new MonitoringTypeAndYN(monitoringType, yn.equals("Y") ? true : false));
116+
} else {
117+
list.add(new MonitoringTypeAndYN(monitoringType, false));
118+
}
119+
}
120+
monitoringYn.setMonitoringTypeList(list);
121+
result.add(monitoringYn);
122+
}
123+
124+
return result;
125+
}
126+
67127
@Override
68128
public Map<String, String> getMonitoringPresetMap() {
69-
return StreamSupport
70-
.stream(Spliterators.spliteratorUnknownSize(propRepo.getConfiguration("connInfoConfig").getKeys(),
71-
Spliterator.ORDERED), false)
72-
.filter(key -> key.matches(MONITORING_PRESET_KEY)).collect(Collectors.toUnmodifiableMap(key -> {
73-
Matcher m = MONITORING_PRESET_KEY_PATTERN.matcher(key);
74-
return m.matches() ? m.group(1) : null;
75-
}, key -> propRepo.getMonitoringConfigResource(key)));
129+
Map<String, String> result = new HashMap<>();
130+
131+
PropertiesConfiguration config = propRepo.getConfiguration("connInfoConfig");
132+
133+
config.getKeys().forEachRemaining(key -> {
134+
if (key.matches(MONITORING_PRESET_KEY)) {
135+
Matcher m = MONITORING_PRESET_KEY_PATTERN.matcher(key);
136+
if (m.matches()) {
137+
String presetName = m.group(1);
138+
result.put(presetName, config.getString(key));
139+
}
140+
}
141+
});
142+
return result;
76143
}
77144

78145
@Override
@@ -112,4 +179,27 @@ public List<JschConnectionInfo> getJschConnInfoList(List<String> serverNames) {
112179
Collectors.mapping(serverName -> propRepo.getJschConnectionInfo(serverName), Collectors.toList()));
113180
}
114181

182+
/**
183+
* 기본값으로 설정된 FileSize 단위를 반환한다.
184+
*/
185+
@Override
186+
public FileSize getDefaultFileSizeUnit() {
187+
return FileSize.find(propRepo.getCommonResource("unit.filesize"));
188+
}
189+
190+
/**
191+
* 기본값으로 설정된 반올림 자릿수를 반환한다.
192+
*/
193+
@Override
194+
public RoundingDigits getDefaultRoundingDigits() {
195+
return RoundingDigits.find(propRepo.getCommonResource("unit.rounding"));
196+
}
197+
198+
/**
199+
* 기본값으로 설정된 사용량 컬럼 UI 타입을 반환한다.
200+
*/
201+
@Override
202+
public UsageUIType getDefaultUsageUIType() {
203+
return UsageUIType.find(propRepo.getCommonResource("usage-ui-type"));
204+
}
115205
}

0 commit comments

Comments
 (0)