Skip to content

Commit 751d1b1

Browse files
committed
Add EventHandler that database connInfo input changed event
1 parent 8fc4b43 commit 751d1b1

File tree

2 files changed

+88
-48
lines changed

2 files changed

+88
-48
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void saveDBConnectionInfo(String filePath, Map<String, JdbcConnectionInfo
7676
config.setProperty(dbName + ".jdbc.id", jdbc.getJdbcId());
7777
config.setProperty(dbName + ".jdbc.pw", jdbc.getJdbcPw());
7878
config.setProperty(dbName + ".jdbc.url", jdbc.getJdbcUrl());
79-
config.setProperty(dbName + ".jdbc.driver", jdbc.getJdbcOracleDriver());
79+
config.setProperty(dbName + ".jdbc.driver", jdbc.getJdbcDriver());
8080
config.setProperty(dbName + ".jdbc.validation", jdbc.getJdbcValidation());
8181
config.setProperty(dbName + ".jdbc.connections", jdbc.getJdbcConnections());
8282
}

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

Lines changed: 87 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.jfoenix.controls.JFXComboBox;
1010

11+
import javafx.event.ActionEvent;
1112
import javafx.event.Event;
1213
import javafx.event.EventHandler;
1314
import javafx.fxml.FXML;
@@ -61,18 +62,19 @@ public DBConnectionInfoAnchorPane() {
6162
}
6263

6364
public void init() {
64-
driverCB.getItems().addAll(propertyRepository.getOracleDrivers());
65-
6665
// DB Url Generate Event Setting
6766
String dbms = "oracle";
68-
DBUrlGenerateEvent urlEvent = new DBUrlGenerateEvent(dbms);
69-
70-
driverCB.getSelectionModel().selectedItemProperty().addListener((options, oldValue, newValue) -> {
71-
urlEvent.handle(null);
72-
});
73-
hostTF.setOnKeyReleased(urlEvent);
74-
portTF.setOnKeyReleased(urlEvent);
75-
sidTF.setOnKeyReleased(urlEvent);
67+
DBConnInfoOnChangedEvent changedEvent = new DBConnInfoOnChangedEvent(dbms);
68+
DBConnInfoOnChangedActionEvent changedActionEvent = new DBConnInfoOnChangedActionEvent(dbms);
69+
70+
// Set event
71+
driverCB.setOnAction(changedActionEvent);
72+
hostTF.setOnKeyReleased(changedEvent);
73+
portTF.setOnKeyReleased(changedEvent);
74+
sidTF.setOnKeyReleased(changedEvent);
75+
userTF.setOnKeyReleased(changedEvent);
76+
passwordPF.setOnKeyReleased(changedEvent);
77+
aliasTF.setOnKeyReleased(changedEvent);
7678
urlTF.setOnKeyReleased(s -> {
7779
String text = ((TextField) s.getSource()).getText();
7880
Pattern p = Pattern
@@ -83,20 +85,22 @@ public void init() {
8385
portTF.setText(m.group(4));
8486
sidTF.setText(m.group(5));
8587
} else {
86-
urlEvent.handle(s);
88+
changedEvent.handle(s);
8789
}
8890
});
91+
92+
// Set driver ComboBox values
93+
driverCB.getItems().addAll(propertyRepository.getOracleDrivers());
8994
}
90-
95+
9196
public void setInitialValue(JdbcConnectionInfo jdbc) {
9297
hostTF.setText(jdbc.getJdbcHost());
9398
sidTF.setText(jdbc.getJdbcSID());
9499
userTF.setText(jdbc.getJdbcId());
95100
passwordPF.setText(jdbc.getJdbcPw());
96101
urlTF.setText(jdbc.getJdbcUrl());
97102
portTF.setText(jdbc.getJdbcPort());
98-
// TODO
99-
driverCB.getSelectionModel().select("thin");
103+
driverCB.getSelectionModel().select(jdbc.getJdbcDriver());
100104
aliasTF.setText(jdbc.getJdbcDBName());
101105
}
102106

@@ -120,39 +124,20 @@ public boolean isAnyEmptyInput() {
120124
passwordPF.getText(), driverCB.getSelectionModel().getSelectedItem());
121125
}
122126

123-
/**
124-
* 키 입력 또는 콤보박스 선택을 통해 입력된 Database 접속정보를 이용해 URL을 생성하는 이벤트
125-
*
126-
* @author DKY
127-
*
128-
*/
129-
private class DBUrlGenerateEvent implements EventHandler<Event> {
130-
131-
private String dbms;
132-
133-
public DBUrlGenerateEvent(String dbms) {
134-
this.dbms = dbms;
135-
}
136-
137-
@Override
138-
public void handle(Event event) {
139-
System.out.println("Fire!");
140-
141-
StringBuffer url = new StringBuffer();
142-
url.append("jdbc:").append(dbms).append(":").append(driverCB.getSelectionModel().getSelectedItem())
143-
.append(":@")
144-
.append(hostTF.getText() == null ? "" : hostTF.getText()).append(":")
145-
.append(portTF.getText() == null ? "" : portTF.getText()).append("/")
146-
.append(sidTF.getText() == null ? "" : sidTF.getText());
147-
148-
urlTF.setText(url.toString());
149-
150-
if (event == null) {
151-
System.out.println("Event is Null");
152-
return;
153-
}
154-
155-
Node node = (Node) event.getTarget();
127+
private String generateURL(String dbms) {
128+
StringBuffer url = new StringBuffer();
129+
url.append("jdbc:").append(dbms).append(":")
130+
.append(driverCB.getSelectionModel().getSelectedItem() == null ? "" : driverCB.getSelectionModel().getSelectedItem())
131+
.append(":@")
132+
.append(hostTF.getText() == null ? "" : hostTF.getText()).append(":")
133+
.append(portTF.getText() == null ? "" : portTF.getText()).append("/")
134+
.append(sidTF.getText() == null ? "" : sidTF.getText());
135+
return url.toString();
136+
}
137+
138+
private void setDBConnTestBtnDisable(Node node) {
139+
try {
140+
// Find Top Node
156141
Node topParent = null;
157142
while (true) {
158143
if (node.getParent() == null) {
@@ -167,7 +152,62 @@ public void handle(Event event) {
167152
return;
168153
}
169154

155+
// DB Connection test button lookup and setDisable
170156
topParent.lookup("#connTestBtn").setDisable(isAnyEmptyInput());
157+
} catch (Exception e) {
158+
e.printStackTrace();
159+
}
160+
}
161+
162+
private void dbConnInfoChangedEventHandle(String dbms, Event event) {
163+
// Generate URL
164+
urlTF.setText(generateURL(dbms));
165+
166+
// Find Top Parent and set disable DBConnTestBtn
167+
setDBConnTestBtnDisable((Node) event.getTarget());
168+
}
169+
170+
/**
171+
* 키 입력을 통해 입력된 Database 접속정보를 이용해 URL을 생성하고,
172+
* 입력된 값에 따라 DB 연동테스트 버튼을 활성화/비활성화한다.
173+
*
174+
* @author DKY
175+
*
176+
*/
177+
private class DBConnInfoOnChangedEvent implements EventHandler<Event> {
178+
179+
private String dbms;
180+
181+
public DBConnInfoOnChangedEvent(String dbms) {
182+
this.dbms = dbms;
183+
}
184+
185+
@Override
186+
public void handle(Event event) {
187+
System.out.println("DBConnInfoOnKeyReleasedEvent Event Fire!");
188+
dbConnInfoChangedEventHandle(dbms, event);
189+
}
190+
}
191+
192+
/**
193+
* 콤보박스 선택을 통해 입력된 Database 접속정보를 이용해 URL을 생성하고,
194+
* 입력된 값에 따라 DB 연동테스트 버튼을 활성화/비활성화한다.
195+
*
196+
* @author DKY
197+
*
198+
*/
199+
private class DBConnInfoOnChangedActionEvent implements EventHandler<ActionEvent> {
200+
201+
private String dbms;
202+
203+
public DBConnInfoOnChangedActionEvent(String dbms) {
204+
this.dbms = dbms;
205+
}
206+
207+
@Override
208+
public void handle(ActionEvent event) {
209+
System.out.println("DBConnInfoOnKeyReleasedEvent Event Fire!");
210+
dbConnInfoChangedEventHandle(dbms, event);
171211
}
172212
}
173213
}

0 commit comments

Comments
 (0)