Skip to content

Commit dcb7070

Browse files
committed
Change 'MonitoringYN' class structure
1 parent 335918d commit dcb7070

File tree

7 files changed

+131
-86
lines changed

7 files changed

+131
-86
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+
}

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
}

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

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
66
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView;
77
import javafx.beans.binding.Bindings;
8+
import javafx.beans.property.ReadOnlyStringWrapper;
9+
import javafx.beans.value.ObservableValue;
810
import javafx.geometry.Insets;
911
import javafx.geometry.Pos;
1012
import javafx.scene.Node;
@@ -13,14 +15,17 @@
1315
import javafx.scene.control.TreeSortMode;
1416
import javafx.scene.control.TreeTableCell;
1517
import javafx.scene.control.TreeTableColumn;
18+
import javafx.scene.control.TreeTableColumn.CellDataFeatures;
1619
import javafx.scene.control.TreeTableView;
1720
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
1821
import javafx.scene.paint.Paint;
19-
import root.javafx.Model.MonitoringYN;
22+
import javafx.util.Callback;
23+
import root.core.domain.MonitoringYN;
24+
import root.core.domain.enums.MonitoringType;
2025

21-
public class CustomTreeTableView<T extends MonitoringYN> extends TreeTableView<T> {
26+
public class CustomTreeTableView extends TreeTableView<MonitoringYN> {
2227

23-
private TreeItem<T> rootItem;
28+
private TreeItem<MonitoringYN> rootItem;
2429

2530
private static final String DEFAULT_ICON_COLOR = "#003b8e";
2631
private static final int DEFAULT_ICON_SIZE = 17;
@@ -41,7 +46,7 @@ public CustomTreeTableView(String rootTitle, FontAwesomeIcon rootIcon) {
4146
}
4247

4348
public void addMonitoringInstanceColumn(String title, String fieldName) {
44-
TreeTableColumn<T, String> ttc = new TreeTableColumn<>(title);
49+
TreeTableColumn<MonitoringYN, String> ttc = new TreeTableColumn<>(title);
4550
ttc.setCellValueFactory(new TreeItemPropertyValueFactory<>(fieldName));
4651
ttc.setCellFactory(param -> {
4752
return new MonitoringInstanceCell<>();
@@ -52,18 +57,43 @@ public void addMonitoringInstanceColumn(String title, String fieldName) {
5257
getColumns().add(ttc);
5358
}
5459

60+
public void addMonitoringYNTableColumn(String title, MonitoringType type) {
61+
TreeTableColumn<MonitoringYN, String> ttc = new TreeTableColumn<>(title);
62+
ttc.setCellValueFactory(
63+
new Callback<TreeTableColumn.CellDataFeatures<MonitoringYN, String>, ObservableValue<String>>() {
64+
65+
@Override
66+
public ObservableValue<String> call(CellDataFeatures<MonitoringYN, String> param) {
67+
68+
try {
69+
boolean isMonitoring = param.getValue().getValue().getMonitoringTypeList().stream()
70+
.filter(t -> t.getMonitoringType() == type).findFirst().map(t -> t.isMonitoring())
71+
.orElse(null);
72+
73+
return new ReadOnlyStringWrapper(isMonitoring ? "Y" : "N");
74+
} catch (Exception e) {
75+
return new ReadOnlyStringWrapper("");
76+
}
77+
}
78+
});
79+
ttc.setCellFactory(param -> {
80+
return new MonitoringYNCell<>();
81+
});
82+
getColumns().add(ttc);
83+
}
84+
5585
public void addMonitoringYNTableColumn(String title, String fieldName) {
56-
TreeTableColumn<T, String> ttc = new TreeTableColumn<>(title);
86+
TreeTableColumn<MonitoringYN, String> ttc = new TreeTableColumn<>(title);
5787
ttc.setCellValueFactory(new TreeItemPropertyValueFactory<>(fieldName));
5888
ttc.setCellFactory(param -> {
5989
return new MonitoringYNCell<>();
6090
});
6191
getColumns().add(ttc);
6292
}
6393

64-
public void addTreeTableItem(T title, List<T> items, FontAwesomeIcon icon) {
65-
TreeItem<T> newTreeItem = new TreeItem<>(title);
66-
for (T item : items) {
94+
public void addTreeTableItem(MonitoringYN title, List<MonitoringYN> items, FontAwesomeIcon icon) {
95+
TreeItem<MonitoringYN> newTreeItem = new TreeItem<>(title);
96+
for (MonitoringYN item : items) {
6797
newTreeItem.getChildren().add(new TreeItem<>(item));
6898
newTreeItem.setExpanded(true);
6999
}
@@ -159,6 +189,10 @@ protected void updateItem(String item, boolean empty) {
159189
}
160190

161191
private FontAwesomeIconView getMonitoringYNIcon(String item) {
192+
if (item.equals("")) {
193+
return null;
194+
}
195+
162196
FontAwesomeIconView icon = new FontAwesomeIconView(
163197
item.equals("Y") ? FontAwesomeIcon.CHECK : FontAwesomeIcon.TIMES);
164198
icon.setFill(Paint.valueOf(item.equals("Y") ? "#49a157" : "#c40a0a"));

src/main/java/root/javafx/Model/DBMonitoringYN.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/main/java/root/javafx/Model/MonitoringYN.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/root/javafx/Model/ServerMonitoringYN.java

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)