Skip to content

Commit 4634a7e

Browse files
committed
Load MonitoringYN list in monitoring preset configuration file
1 parent 1580db6 commit 4634a7e

File tree

3 files changed

+91
-49
lines changed

3 files changed

+91
-49
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import root.core.domain.JdbcConnectionInfo;
77
import root.core.domain.JschConnectionInfo;
8+
import root.core.domain.MonitoringYN;
89

910
public interface PropertyService {
1011

@@ -43,6 +44,22 @@ public interface PropertyService {
4344
*/
4445
String getLastUsePresetFileName(String filePath);
4546

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

4865
List<String> getMonitoringPresetFilePathList();

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

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111
import java.util.stream.Collectors;
1212
import java.util.stream.StreamSupport;
1313

14+
import org.apache.commons.lang3.StringUtils;
15+
1416
import root.core.domain.JdbcConnectionInfo;
1517
import root.core.domain.JschConnectionInfo;
18+
import root.core.domain.MonitoringYN;
19+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
20+
import root.core.domain.enums.MonitoringType;
1621
import root.core.repository.constracts.PropertyRepository;
1722
import root.core.service.contracts.PropertyService;
1823

@@ -59,19 +64,73 @@ public void loadMonitoringInfoConfig(String filePath) {
5964
propRepo.loadMonitoringInfoConfig(filePath);
6065
}
6166

67+
/**
68+
* 최근 사용된 모니터링 여부 Preset 설정파일명을 반환한다.
69+
*/
6270
@Override
6371
public String getLastUsePresetFileName(String filePath) {
6472
return propRepo.getLastUseMonitoringPresetName(filePath);
6573
}
6674

75+
@Override
76+
public List<MonitoringYN> getDBMonitoringYnList(String presetConfigFileName) {
77+
String presetConfigFilePath = propRepo.getMonitoringPresetMap().get(presetConfigFileName);
78+
79+
// Load
80+
loadMonitoringInfoConfig(presetConfigFilePath);
81+
82+
List<String> dbAliasList = Arrays.asList(propRepo.getMonitoringDBNames());
83+
List<MonitoringType> monitoringTypeList = Arrays.asList(MonitoringType.values()).stream()
84+
.filter(t -> t.getCategory().equals("DB")).collect(Collectors.toList());
85+
86+
return getMonitoringYNList(dbAliasList, monitoringTypeList);
87+
}
88+
89+
@Override
90+
public List<MonitoringYN> getServerMonitoringYnList(String presetConfigFileName) {
91+
String presetConfigFilePath = propRepo.getMonitoringPresetMap().get(presetConfigFileName);
92+
93+
// Load
94+
loadMonitoringInfoConfig(presetConfigFilePath);
95+
96+
List<String> serverAliasList = Arrays.asList(propRepo.getMonitoringServerNames());
97+
List<MonitoringType> monitoringTypeList = Arrays.asList(MonitoringType.values()).stream()
98+
.filter(t -> t.getCategory().equals("SERVER")).collect(Collectors.toList());
99+
100+
return getMonitoringYNList(serverAliasList, monitoringTypeList);
101+
}
102+
103+
private List<MonitoringYN> getMonitoringYNList(List<String> aliasList, List<MonitoringType> monitoringTypeList) {
104+
System.out.println(aliasList);
105+
System.out.println(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.getMonitoringConfigResource(serverAlias + "." + monitoringType.getName());
113+
if (!StringUtils.isEmpty(yn)) {
114+
list.add(new MonitoringTypeAndYN(monitoringType, yn.equals("Y") ? true : false));
115+
} else {
116+
list.add(new MonitoringTypeAndYN(monitoringType, false));
117+
}
118+
}
119+
monitoringYn.setMonitoringTypeList(list);
120+
result.add(monitoringYn);
121+
}
122+
123+
return result;
124+
}
125+
67126
@Override
68127
public Map<String, String> getMonitoringPresetMap() {
69128
return StreamSupport
70129
.stream(Spliterators.spliteratorUnknownSize(propRepo.getConfiguration("connInfoConfig").getKeys(),
71130
Spliterator.ORDERED), false)
72131
.filter(key -> key.matches(MONITORING_PRESET_KEY)).collect(Collectors.toUnmodifiableMap(key -> {
73132
Matcher m = MONITORING_PRESET_KEY_PATTERN.matcher(key);
74-
return m.matches() ? m.group(1) : null;
133+
return m.matches() ? m.group(1) : "";
75134
}, key -> propRepo.getMonitoringConfigResource(key)));
76135
}
77136

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

Lines changed: 14 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@
22

33
import java.io.File;
44
import java.net.URL;
5-
import java.util.ArrayList;
65
import java.util.HashMap;
7-
import java.util.LinkedHashSet;
86
import java.util.List;
97
import java.util.Map;
108
import java.util.Optional;
119
import java.util.ResourceBundle;
12-
import java.util.Set;
13-
import java.util.stream.Collectors;
1410

1511
import org.apache.commons.configuration2.PropertiesConfiguration;
1612
import org.apache.commons.lang3.StringUtils;
@@ -38,15 +34,10 @@
3834
import javafx.stage.FileChooser.ExtensionFilter;
3935
import javafx.stage.Stage;
4036
import javafx.util.StringConverter;
41-
import root.core.domain.ASMDiskUsage;
42-
import root.core.domain.AlertLog;
43-
import root.core.domain.ArchiveUsage;
4437
import root.core.domain.JdbcConnectionInfo;
4538
import root.core.domain.JschConnectionInfo;
4639
import root.core.domain.MonitoringYN;
4740
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
48-
import root.core.domain.OSDiskUsage;
49-
import root.core.domain.TableSpaceUsage;
5041
import root.core.domain.enums.MonitoringType;
5142
import root.core.domain.enums.RoundingDigits;
5243
import root.core.domain.enums.UsageUIType;
@@ -107,16 +98,6 @@ public class SettingMenuController implements Initializable {
10798
JFXComboBox<UsageUIType> usageUICB;
10899

109100
/* Common Data */
110-
private static final Map<Class<?>, String> DB_MONITORING_CONTENTS = new HashMap<>();
111-
private static final Map<Class<?>, String> SERVER_MONITORING_CONTENTS = new HashMap<>();
112-
static {
113-
DB_MONITORING_CONTENTS.put(ArchiveUsage.class, "Archive Usage");
114-
DB_MONITORING_CONTENTS.put(TableSpaceUsage.class, "TableSpace Usage");
115-
DB_MONITORING_CONTENTS.put(ASMDiskUsage.class, "ASM Disk Usage");
116-
SERVER_MONITORING_CONTENTS.put(OSDiskUsage.class, "OS Disk Usage");
117-
SERVER_MONITORING_CONTENTS.put(AlertLog.class, "Alert Log");
118-
}
119-
120101
List<JdbcConnectionInfo> jdbcConnInfoList;
121102
List<JschConnectionInfo> jschConnInfoList;
122103

@@ -295,21 +276,21 @@ private void loadSelectedConfigFile(String absoluteFilePath) {
295276
int startIdx = absoluteFilePath.lastIndexOf("\\config");
296277
String filePath = startIdx == -1 ? absoluteFilePath : "." + absoluteFilePath.substring(startIdx);
297278

298-
// 2. 파일경로에서 접속정보 프로퍼티파일을 읽는다.
279+
// 2. fileChooserText의 텍스트를 현재 선택된 파일경로로 변경한다.
280+
fileChooserText.setText(filePath);
281+
282+
// 3. 파일경로에서 접속정보 프로퍼티파일을 읽는다.
299283
propRepo.loadConnectionInfoConfig(filePath);
300284

301-
// 3. 프로퍼티파일에 작성된 내용에 따라 동적 요소를 생성한다.
285+
// 4. 프로퍼티파일에 작성된 내용에 따라 동적 요소를 생성한다.
302286
createSettingDynamicElements();
303287

304288
// TODO move this logic to PropertyService
305-
// 4. remember.properties 파일에 최근 사용된 설정파일 경로를 저장한다.
289+
// 5. remember.properties 파일에 최근 사용된 설정파일 경로를 저장한다.
306290
PropertiesConfiguration rememberConfig = propRepo.getConfiguration("rememberConfig");
307291
rememberConfig.setProperty("filepath.config.lastuse", filePath.replace("\\", "/"));
308292
propRepo.save(rememberConfig.getString("filepath.config.remember"), rememberConfig);
309293

310-
// 5. fileChooserText의 텍스트를 현재 선택된 파일경로로 변경한다.
311-
fileChooserText.setText(filePath);
312-
313294
} catch (Exception e) {
314295
e.printStackTrace();
315296
// 6. 파일 load가 실패 시, Alert 메시지를 띄운다.
@@ -327,12 +308,12 @@ private void loadSelectedConfigFile(String absoluteFilePath) {
327308
private void loadMonitoringConfigFile(String filePath) {
328309
monitoringElementsVBox.getChildren().clear();
329310

330-
propRepo.loadMonitoringInfoConfig(filePath);
311+
String presetConfigFileName = monitoringPresetComboBox.getSelectionModel().getSelectedItem();
331312

332-
String[] dbNames = propRepo.getMonitoringDBNames();
333-
String[] serverNames = propRepo.getMonitoringServerNames();
313+
List<MonitoringYN> dbYnList = propService.getDBMonitoringYnList(presetConfigFileName);
314+
List<MonitoringYN> serverYnList = propService.getServerMonitoringYnList(presetConfigFileName);
334315

335-
createMonitoringElements(monitoringElementsVBox);
316+
createMonitoringElements(monitoringElementsVBox, dbYnList, serverYnList);
336317
}
337318

338319
/**
@@ -396,25 +377,10 @@ public void saveMonitoringSettings(ActionEvent e) {
396377
* 모니터링 여부 설정할 요소들 동적 생성
397378
*
398379
* @param rootVBox
399-
* @param monitoringElements
400-
* @param monitoringAlias
380+
* @param dbYnList
381+
* @param serverYnList
401382
*/
402-
private void createMonitoringElements(VBox rootVBox) {
403-
404-
List<MonitoringYN> dbYnList = new ArrayList<>();
405-
List<MonitoringTypeAndYN> childList = new ArrayList<>();
406-
childList.add(new MonitoringTypeAndYN(MonitoringType.ARCHIVE, false));
407-
childList.add(new MonitoringTypeAndYN(MonitoringType.TABLE_SPACE, true));
408-
childList.add(new MonitoringTypeAndYN(MonitoringType.ASM_DISK, false));
409-
dbYnList.add(new MonitoringYN("ERP", childList));
410-
dbYnList.add(new MonitoringYN("ERP2", childList));
411-
dbYnList.add(new MonitoringYN("ERP3", childList));
412-
413-
List<MonitoringYN> serverYnList = new ArrayList<>();
414-
List<MonitoringTypeAndYN> childList2 = new ArrayList<>();
415-
childList2.add(new MonitoringTypeAndYN(MonitoringType.OS_DISK, true));
416-
childList2.add(new MonitoringTypeAndYN(MonitoringType.ALERT_LOG, true));
417-
serverYnList.add(new MonitoringYN("DBERP1", childList2));
383+
private void createMonitoringElements(VBox rootVBox, List<MonitoringYN> dbYnList, List<MonitoringYN> serverYnList) {
418384

419385
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
420386
for (MonitoringYN dbYn : dbYnList) {
@@ -425,7 +391,7 @@ private void createMonitoringElements(VBox rootVBox) {
425391
}
426392
}
427393
monitoringYNVBox.initSelection(dbYnList);
428-
394+
429395
for (MonitoringYN serverYn : serverYnList) {
430396
for (MonitoringTypeAndYN typeAndYn : serverYn.getMonitoringTypeList()) {
431397
MonitoringType type = typeAndYn.getMonitoringType();

0 commit comments

Comments
 (0)