Skip to content

Commit 1580db6

Browse files
authored
Merge pull request #176 from Dokyeongyun/ft-220228-settingMenuRefactoring
Ft 220228 setting menu refactoring
2 parents ca59b6c + da9e1d9 commit 1580db6

19 files changed

+730
-371
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package root.core.domain;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
import lombok.AllArgsConstructor;
7+
import lombok.Data;
8+
import root.core.domain.enums.MonitoringType;
9+
10+
@AllArgsConstructor
11+
@Data
12+
public class MonitoringYN {
13+
14+
private String monitoringAlias;
15+
private List<MonitoringTypeAndYN> monitoringTypeList;
16+
17+
public MonitoringYN(String monitoringAlias) {
18+
this.monitoringAlias = monitoringAlias;
19+
}
20+
21+
public List<MonitoringType> getDistinctMonitoringTypes() {
22+
return monitoringTypeList.stream().map(type -> type.getMonitoringType()).distinct()
23+
.collect(Collectors.toList());
24+
}
25+
26+
@AllArgsConstructor
27+
@Data
28+
public static class MonitoringTypeAndYN {
29+
private MonitoringType monitoringType;
30+
private boolean isMonitoring;
31+
}
32+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package root.core.domain.enums;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public enum MonitoringType {
7+
8+
ARCHIVE("DB", "Archive"), TABLE_SPACE("DB", "TableSpace"), ASM_DISK("DB", "ASM Disk"), OS_DISK("SERVER", "OS Disk"),
9+
ALERT_LOG("SERVER", "Alert Log");
10+
11+
private String category;
12+
private String name;
13+
14+
MonitoringType(String category, String name) {
15+
this.category = category;
16+
this.name = name;
17+
}
18+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package root.core.domain.enums;
2+
3+
import java.util.Collections;
4+
import java.util.Map;
5+
import java.util.Optional;
6+
import java.util.function.Function;
7+
import java.util.stream.Collectors;
8+
import java.util.stream.Stream;
9+
10+
import lombok.Getter;
11+
12+
@Getter
13+
public enum RoundingDigits {
14+
15+
ONE(1), TWO(2), THREE(3), FOUR(4), FIVE(5);
16+
17+
private int digits;
18+
19+
private RoundingDigits(int digits) {
20+
this.digits = digits;
21+
}
22+
23+
private static final Map<Integer, RoundingDigits> roundingDigitsMap = Collections.unmodifiableMap(
24+
Stream.of(values()).collect(Collectors.toMap(RoundingDigits::getDigits, Function.identity())));
25+
26+
public static RoundingDigits find(final int digits) {
27+
return Optional.ofNullable(roundingDigitsMap.get(digits)).orElse(TWO);
28+
}
29+
30+
public static RoundingDigits find(final String digits) {
31+
try {
32+
return find(Integer.parseInt(digits));
33+
} catch (NumberFormatException e) {
34+
return TWO;
35+
}
36+
}
37+
}

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

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import java.net.URL;
44
import java.util.ArrayList;
5+
import java.util.HashSet;
56
import java.util.List;
67
import java.util.ResourceBundle;
8+
import java.util.Set;
9+
import java.util.stream.Collectors;
710

811
import org.apache.commons.lang.StringUtils;
912
import org.apache.commons.lang3.ArrayUtils;
@@ -22,16 +25,17 @@
2225
import root.core.domain.ASMDiskUsage;
2326
import root.core.domain.ArchiveUsage;
2427
import root.core.domain.MonitoringResult;
28+
import root.core.domain.MonitoringYN;
2529
import root.core.domain.OSDiskUsage;
2630
import root.core.domain.TableSpaceUsage;
31+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
32+
import root.core.domain.enums.MonitoringType;
2733
import root.core.repository.implement.PropertyRepositoryImpl;
2834
import root.core.service.contracts.PropertyService;
2935
import root.core.service.implement.FilePropertyService;
3036
import root.javafx.CustomView.CustomTreeTableView;
3137
import root.javafx.CustomView.CustomTreeView;
3238
import root.javafx.CustomView.MonitoringTableView;
33-
import root.javafx.Model.DBMonitoringYN;
34-
import root.javafx.Model.ServerMonitoringYN;
3539

3640
public class RunMenuController implements Initializable {
3741

@@ -113,14 +117,28 @@ public void initialize(URL location, ResourceBundle resources) {
113117
connInfoFileListComboBox.getSelectionModel().select(lastUseConnInfoFile);
114118
}
115119

120+
List<MonitoringYN> list = new ArrayList<>();
121+
List<MonitoringTypeAndYN> childList = new ArrayList<>();
122+
childList.add(new MonitoringTypeAndYN(MonitoringType.ARCHIVE, true));
123+
childList.add(new MonitoringTypeAndYN(MonitoringType.TABLE_SPACE, true));
124+
childList.add(new MonitoringTypeAndYN(MonitoringType.ASM_DISK, true));
125+
list.add(new MonitoringYN("DB1", childList));
126+
127+
List<MonitoringYN> list2 = new ArrayList<>();
128+
List<MonitoringTypeAndYN> childList2 = new ArrayList<>();
129+
childList2.add(new MonitoringTypeAndYN(MonitoringType.OS_DISK, false));
130+
childList2.add(new MonitoringTypeAndYN(MonitoringType.ALERT_LOG, false));
131+
list2.add(new MonitoringYN("SERVER1", childList2));
132+
addMonitoringPresetPreview(list, list2);
133+
116134
/* 2. 모니터링 여부 설정 */
117135
// 2-1. 모니터링 여부 Preset 콤보박스 아이템 설정
118136
String curConnInfoFile = connInfoFileListComboBox.getSelectionModel().getSelectedItem();
119137
propService.loadMonitoringInfoConfig(curConnInfoFile);
120138
List<String> presetFileList = propService.getMonitoringPresetNameList();
121139
if (presetFileList == null || presetFileList.size() == 0) {
122140
// TODO 모니터링 여부 Preset 설정파일이 없는 경우
123-
// addMonitoringPresetPreview();
141+
addMonitoringPresetPreview(list, list2);
124142
} else {
125143
presetFileListComboBox.getItems().addAll(presetFileList);
126144
}
@@ -229,27 +247,31 @@ private void addMonitoringConnInfoPreview(List<String> dbNameList, List<String>
229247
/**
230248
* 설정된 모니터링 여부 Preset을 보여주는 TreeTableView를 생성 및 추가한다.
231249
*
232-
* @param dbPresetList
233-
* @param serverPresetList
250+
* @param monitoringYNList
234251
*/
235-
private void addMonitoringPresetPreview(List<DBMonitoringYN> dbPresetList,
236-
List<ServerMonitoringYN> serverPresetList) {
252+
private void addMonitoringPresetPreview(List<MonitoringYN> dbYnList, List<MonitoringYN> serverYnList) {
253+
254+
Set<MonitoringType> dbMonitoringTypeList = new HashSet<>();
255+
dbYnList.stream().map(m -> m.getDistinctMonitoringTypes()).collect(Collectors.toList())
256+
.forEach(type -> dbMonitoringTypeList.addAll(type));
257+
258+
Set<MonitoringType> serverMonitoringTypeList = new HashSet<>();
259+
serverYnList.stream().map(m -> m.getDistinctMonitoringTypes()).collect(Collectors.toList())
260+
.forEach(type -> serverMonitoringTypeList.addAll(type));
237261

238262
// 모니터링 여부 리스트 TreeTableView - DB
239-
CustomTreeTableView<DBMonitoringYN> dbCtv = new CustomTreeTableView<>("", FontAwesomeIcon.LIST);
240-
dbCtv.addMonitoringInstanceColumn("Instance", "alias");
241-
dbCtv.addMonitoringYNTableColumn("Archive", "archiveUsageYN");
242-
dbCtv.addMonitoringYNTableColumn("Table Space", "tableSpaceUsageYN");
243-
dbCtv.addMonitoringYNTableColumn("ASM Disk", "asmDiskUsageYN");
244-
dbCtv.addTreeTableItem(new DBMonitoringYN("DB"), dbPresetList, FontAwesomeIcon.DATABASE);
263+
CustomTreeTableView dbCtv = new CustomTreeTableView("", FontAwesomeIcon.LIST);
264+
dbCtv.addMonitoringInstanceColumn("Instance", "monitoringAlias");
265+
dbMonitoringTypeList.forEach(type -> dbCtv.addMonitoringYNTableColumn(type.getName(), type));
266+
dbCtv.addTreeTableItem(new MonitoringYN("DB "), dbYnList, FontAwesomeIcon.DATABASE);
245267
setAnchorPaneAnchor(dbCtv, 0, 0, 0, 0);
246268
dbPresetAP.getChildren().add(dbCtv);
247269

248270
// 모니터링 여부 리스트 TreeTableView - Server
249-
CustomTreeTableView<ServerMonitoringYN> serverCtv = new CustomTreeTableView<>("", FontAwesomeIcon.LIST);
250-
serverCtv.addMonitoringInstanceColumn("Instance", "alias");
251-
serverCtv.addMonitoringYNTableColumn("OS Disk", "osDiskUsageYN");
252-
serverCtv.addTreeTableItem(new ServerMonitoringYN("Server"), serverPresetList, FontAwesomeIcon.SERVER);
271+
CustomTreeTableView serverCtv = new CustomTreeTableView("", FontAwesomeIcon.LIST);
272+
serverCtv.addMonitoringInstanceColumn("Instance", "monitoringAlias");
273+
serverMonitoringTypeList.forEach(type -> serverCtv.addMonitoringYNTableColumn(type.getName(), type));
274+
serverCtv.addTreeTableItem(new MonitoringYN("Server "), serverYnList, FontAwesomeIcon.SERVER);
253275
setAnchorPaneAnchor(serverCtv, 0, 0, 0, 0);
254276
serverPresetAP.getChildren().add(serverCtv);
255277
}

0 commit comments

Comments
 (0)