Skip to content

Commit d1aa29f

Browse files
authored
Merge pull request #178 from Dokyeongyun/ft-220304-ChangePresetConfig
Ft 220304 change preset config
2 parents 1580db6 + 0df2813 commit d1aa29f

File tree

6 files changed

+170
-65
lines changed

6 files changed

+170
-65
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: 59 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,72 @@ 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+
105+
List<MonitoringYN> result = new ArrayList<>();
106+
for (String serverAlias : aliasList) {
107+
MonitoringYN monitoringYn = new MonitoringYN(serverAlias);
108+
List<MonitoringTypeAndYN> list = new ArrayList<>();
109+
for (MonitoringType monitoringType : monitoringTypeList) {
110+
String yn = propRepo
111+
.getMonitoringConfigResource(monitoringType.getName().replace(" ", "_") + "." + serverAlias);
112+
if (!StringUtils.isEmpty(yn)) {
113+
list.add(new MonitoringTypeAndYN(monitoringType, yn.equals("Y") ? true : false));
114+
} else {
115+
list.add(new MonitoringTypeAndYN(monitoringType, false));
116+
}
117+
}
118+
monitoringYn.setMonitoringTypeList(list);
119+
result.add(monitoringYn);
120+
}
121+
122+
return result;
123+
}
124+
67125
@Override
68126
public Map<String, String> getMonitoringPresetMap() {
69127
return StreamSupport
70128
.stream(Spliterators.spliteratorUnknownSize(propRepo.getConfiguration("connInfoConfig").getKeys(),
71129
Spliterator.ORDERED), false)
72130
.filter(key -> key.matches(MONITORING_PRESET_KEY)).collect(Collectors.toUnmodifiableMap(key -> {
73131
Matcher m = MONITORING_PRESET_KEY_PATTERN.matcher(key);
74-
return m.matches() ? m.group(1) : null;
132+
return m.matches() ? m.group(1) : "";
75133
}, key -> propRepo.getMonitoringConfigResource(key)));
76134
}
77135

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

Lines changed: 28 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,17 @@
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;
1713
import org.apache.log4j.Logger;
1814

1915
import com.jfoenix.controls.JFXComboBox;
20-
import com.jfoenix.controls.JFXToggleButton;
2116

2217
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
2318
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView;
@@ -38,15 +33,10 @@
3833
import javafx.stage.FileChooser.ExtensionFilter;
3934
import javafx.stage.Stage;
4035
import javafx.util.StringConverter;
41-
import root.core.domain.ASMDiskUsage;
42-
import root.core.domain.AlertLog;
43-
import root.core.domain.ArchiveUsage;
4436
import root.core.domain.JdbcConnectionInfo;
4537
import root.core.domain.JschConnectionInfo;
4638
import root.core.domain.MonitoringYN;
4739
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
48-
import root.core.domain.OSDiskUsage;
49-
import root.core.domain.TableSpaceUsage;
5040
import root.core.domain.enums.MonitoringType;
5141
import root.core.domain.enums.RoundingDigits;
5242
import root.core.domain.enums.UsageUIType;
@@ -107,21 +97,13 @@ public class SettingMenuController implements Initializable {
10797
JFXComboBox<UsageUIType> usageUICB;
10898

10999
/* 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-
120100
List<JdbcConnectionInfo> jdbcConnInfoList;
121101
List<JschConnectionInfo> jschConnInfoList;
122102

123103
Map<String, String> monitoringPresetMap = new HashMap<>();
124104

105+
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
106+
125107
@Override
126108
public void initialize(URL location, ResourceBundle resources) {
127109

@@ -295,21 +277,21 @@ private void loadSelectedConfigFile(String absoluteFilePath) {
295277
int startIdx = absoluteFilePath.lastIndexOf("\\config");
296278
String filePath = startIdx == -1 ? absoluteFilePath : "." + absoluteFilePath.substring(startIdx);
297279

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

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

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

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

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

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

335-
createMonitoringElements(monitoringElementsVBox);
317+
createMonitoringElements(monitoringElementsVBox, dbYnList, serverYnList);
336318
}
337319

338320
/**
@@ -373,14 +355,20 @@ public void saveConnInfoSettings(ActionEvent e) {
373355
*/
374356
public void saveMonitoringSettings(ActionEvent e) {
375357
// TODO move this logic to PropertyService
376-
PropertiesConfiguration config = propRepo.getConfiguration("monitoringConfig");
358+
PropertiesConfiguration config = new PropertiesConfiguration();
377359
String presetName = monitoringPresetComboBox.getSelectionModel().getSelectedItem();
378360
String monitoringFilePath = monitoringPresetMap.get(presetName);
379361

380362
if (!monitoringFilePath.isEmpty()) {
381-
for (Node n : monitoringElementsVBox.lookupAll("JFXToggleButton")) {
382-
JFXToggleButton thisToggle = (JFXToggleButton) n;
383-
config.setProperty(thisToggle.getId(), thisToggle.isSelected());
363+
364+
Map<MonitoringType, Map<String, Boolean>> selection = monitoringYNVBox.getToggleSelection();
365+
366+
for (MonitoringType type : selection.keySet()) {
367+
Map<String, Boolean> aliasMap = selection.get(type);
368+
for (String alias : aliasMap.keySet()) {
369+
String key = StringUtils.join(type.getName().replace(" ", "_"), ".", alias);
370+
config.setProperty(key, aliasMap.get(alias) ? "Y" : "N");
371+
}
384372
}
385373
propRepo.save(monitoringFilePath, config);
386374

@@ -396,27 +384,12 @@ public void saveMonitoringSettings(ActionEvent e) {
396384
* 모니터링 여부 설정할 요소들 동적 생성
397385
*
398386
* @param rootVBox
399-
* @param monitoringElements
400-
* @param monitoringAlias
387+
* @param dbYnList
388+
* @param serverYnList
401389
*/
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));
418-
419-
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
390+
private void createMonitoringElements(VBox rootVBox, List<MonitoringYN> dbYnList, List<MonitoringYN> serverYnList) {
391+
monitoringYNVBox = new MonitoringYNVBox();
392+
420393
for (MonitoringYN dbYn : dbYnList) {
421394
for (MonitoringTypeAndYN typeAndYn : dbYn.getMonitoringTypeList()) {
422395
MonitoringType type = typeAndYn.getMonitoringType();
@@ -425,7 +398,7 @@ private void createMonitoringElements(VBox rootVBox) {
425398
}
426399
}
427400
monitoringYNVBox.initSelection(dbYnList);
428-
401+
429402
for (MonitoringYN serverYn : serverYnList) {
430403
for (MonitoringTypeAndYN typeAndYn : serverYn.getMonitoringTypeList()) {
431404
MonitoringType type = typeAndYn.getMonitoringType();

src/main/java/root/javafx/CustomView/MonitoringYNVBox.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void addParentToggle(MonitoringType type, String text) {
3737
if (!toggleGroupVBoxs.containsKey(type)) {
3838
ToggleGroupVBox toggleGroupVBox = new ToggleGroupVBox();
3939
toggleGroupVBox.setParentToggle(text);
40-
40+
4141
toggleGroupVBoxs.put(type, toggleGroupVBox);
4242
getChildren().add(toggleGroupVBox);
4343
}
@@ -86,4 +86,15 @@ public void initSelection(List<MonitoringYN> list) {
8686
}
8787
}
8888
}
89+
90+
public Map<MonitoringType, Map<String, Boolean>> getToggleSelection() {
91+
Map<MonitoringType, Map<String, Boolean>> result = new HashMap<>();
92+
93+
for (MonitoringType type : toggleGroupVBoxs.keySet()) {
94+
ToggleGroupVBox toggleGroup = toggleGroupVBoxs.get(type);
95+
result.put(type, toggleGroup.getChildSelection());
96+
}
97+
98+
return result;
99+
}
89100
}

0 commit comments

Comments
 (0)