Skip to content

Commit facac1a

Browse files
authored
Merge pull request #133 from Dokyeongyun/develop
Develop
2 parents 1cf9cb9 + 41a45e3 commit facac1a

File tree

9 files changed

+467
-156
lines changed

9 files changed

+467
-156
lines changed

src/main/java/root/core/domain/JdbcConnectionInfo.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public JdbcConnectionInfo(String jdbcDriver, String jdbcUrl, String jdbcId, Stri
3030
this.jdbcPw = jdbcPw;
3131
this.jdbcValidation = jdbcValidation;
3232
this.jdbcConnections = jdbcConnections;
33+
34+
// TODO 선택된 Oracle Driver Type에 따라서, Driver 값 변경하기, 현재는 임시로 모두 동일한 값 입력
35+
this.jdbcOracleDriver = "oracle.jdbc.driver.OracleDriver";
3336
}
3437

3538
public JdbcConnectionInfo(String jdbcDBName, String jdbcDriver, String jdbcUrl, String jdbcId, String jdbcPw,

src/main/java/root/core/domain/JschConnectionInfo.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package root.core.domain;
22

33
import lombok.Data;
4-
import lombok.NoArgsConstructor;
54

6-
@NoArgsConstructor
75
@Data
86
public class JschConnectionInfo {
97
private String serverName;
@@ -12,6 +10,10 @@ public class JschConnectionInfo {
1210
private String userName;
1311
private String password;
1412
private AlertLogCommand alc;
13+
14+
public JschConnectionInfo() {
15+
this.alc = new AlertLogCommand();
16+
}
1517

1618
public JschConnectionInfo(String serverName, String host, int port, String userName, String password) {
1719
this.serverName = serverName;

src/main/java/root/core/repository/constracts/PropertyRepository.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,19 @@
55

66
import org.apache.commons.configuration2.PropertiesConfiguration;
77

8+
import root.core.domain.JdbcConnectionInfo;
9+
import root.core.domain.JschConnectionInfo;
10+
811
public interface PropertyRepository {
912

1013
PropertiesConfiguration getConfiguration(String config);
1114

1215
void save(String filePath, PropertiesConfiguration config);
13-
16+
17+
void saveDBConnectionInfo(String filePath, Map<String, JdbcConnectionInfo> config);
18+
19+
void saveServerConnectionInfo(String filePath, Map<String, JschConnectionInfo> config);
20+
1421
boolean loadConnectionInfoConfig(String filePath);
1522

1623
boolean loadMonitoringInfoConfig(String filePath);

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

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
package root.core.repository.implement;
22

33
import java.io.File;
4+
import java.io.FileWriter;
45
import java.util.ArrayList;
56
import java.util.LinkedHashMap;
67
import java.util.List;
78
import java.util.Map;
9+
import java.util.regex.Matcher;
10+
import java.util.regex.Pattern;
811

912
import org.apache.commons.configuration2.Configuration;
1013
import org.apache.commons.configuration2.PropertiesConfiguration;
14+
import org.apache.commons.configuration2.PropertiesConfiguration.PropertiesWriter;
15+
import org.apache.commons.configuration2.PropertiesConfigurationLayout;
1116

17+
import lombok.extern.slf4j.Slf4j;
18+
import root.core.domain.JdbcConnectionInfo;
19+
import root.core.domain.JschConnectionInfo;
1220
import root.core.repository.constracts.PropertyRepository;
1321
import root.utils.PropertiesUtils;
1422

23+
@Slf4j
1524
public class PropertyRepositoryImpl implements PropertyRepository {
1625

1726
// Private 필드로 선언 후 Singletone으로 관리
@@ -25,6 +34,9 @@ public static PropertyRepository getInstance() {
2534
return propertyService;
2635
}
2736

37+
private static Pattern dbPropPattern = Pattern.compile("(.*).jdbc.(.*)");
38+
private static Pattern serverPropPattern = Pattern.compile("(.*).server.(.*)");
39+
2840
/****************************************************************************/
2941

3042
/**
@@ -45,6 +57,136 @@ public void save(String filePath, PropertiesConfiguration config) {
4557
PropertiesUtils.save(filePath, config);
4658
}
4759

60+
@Override
61+
public void saveDBConnectionInfo(String filePath, Map<String, JdbcConnectionInfo> dbConfig) {
62+
PropertiesConfiguration config = PropertiesUtils.connInfoConfig;
63+
64+
// TODO dbnames property..
65+
String dbNames = "";
66+
for(String dbName : dbConfig.keySet()) {
67+
dbNames += dbName + ",";
68+
69+
JdbcConnectionInfo jdbc = dbConfig.get(dbName);
70+
config.setProperty(dbName + ".jdbc.alias", jdbc.getJdbcDBName());
71+
config.setProperty(dbName + ".jdbc.id", jdbc.getJdbcId());
72+
config.setProperty(dbName + ".jdbc.pw", jdbc.getJdbcPw());
73+
config.setProperty(dbName + ".jdbc.url", jdbc.getJdbcUrl());
74+
config.setProperty(dbName + ".jdbc.driver", jdbc.getJdbcOracleDriver());
75+
config.setProperty(dbName + ".jdbc.validation", jdbc.getJdbcValidation());
76+
config.setProperty(dbName + ".jdbc.connections", jdbc.getJdbcConnections());
77+
}
78+
79+
config.setProperty("dbnames", dbNames.substring(0, dbNames.length()-1));
80+
81+
PropertiesConfigurationLayout layout = config.getLayout();
82+
try {
83+
PropertiesWriter writer = config.getIOFactory()
84+
.createPropertiesWriter(new FileWriter(filePath, false), config.getListDelimiterHandler());
85+
86+
// Write Header Comment
87+
writer.writeln(layout.getHeaderComment());
88+
89+
for (final String key : layout.getKeys()) {
90+
Matcher m = dbPropPattern.matcher(key);
91+
if (m.matches()) {
92+
String dbName = m.group(1);
93+
if(!dbConfig.containsKey(dbName)) {
94+
continue;
95+
}
96+
}
97+
98+
// Output blank lines before property
99+
for (int i = 0; i < layout.getBlancLinesBefore(key); i++) {
100+
writer.writeln(null);
101+
}
102+
103+
// Output the property and its value
104+
boolean singleLine = layout.isForceSingleLine() || layout.isSingleLine(key);
105+
writer.setCurrentSeparator(layout.getSeparator(key));
106+
writer.writeProperty(key, config.getProperty(key), singleLine);
107+
}
108+
109+
writer.writeln(layout.getCanonicalFooterCooment(true));
110+
writer.flush();
111+
112+
log.info("[" + filePath + "] 파일 저장이 성공적으로 완료되었습니다.");
113+
} catch (Exception e) {
114+
e.printStackTrace();
115+
log.error("[" + filePath + "] 파일 저장에 실패했습니다.");
116+
}
117+
}
118+
119+
@Override
120+
public void saveServerConnectionInfo(String filePath, Map<String, JschConnectionInfo> serverConfig) {
121+
PropertiesConfiguration config = PropertiesUtils.connInfoConfig;
122+
123+
// TODO servernames property..
124+
String serverNames = "";
125+
for(String serverName : serverConfig.keySet()) {
126+
serverNames += serverName + ",";
127+
128+
JschConnectionInfo jsch = serverConfig.get(serverName);
129+
config.setProperty(serverName + ".server.servername", jsch.getServerName());
130+
config.setProperty(serverName + ".server.host", jsch.getHost());
131+
config.setProperty(serverName + ".server.port", jsch.getPort());
132+
config.setProperty(serverName + ".server.username", jsch.getUserName());
133+
config.setProperty(serverName + ".server.password", jsch.getPassword());
134+
135+
String dateFormat = jsch.getAlc().getDateFormat();
136+
String dateFormatRegex = "";
137+
138+
if (dateFormat.equals("EEE MMM dd HH:mm:ss yyyy")) {
139+
dateFormatRegex = "...\\s...\\s([0-2][0-9]|1[012])\\s\\d\\d:\\d\\d:\\d\\d\\s\\d{4}";
140+
} else if (dateFormat.equals("yyyy-MM-dd")) {
141+
dateFormatRegex = "\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T";
142+
}
143+
144+
config.setProperty(serverName + ".server.alertlog.dateformat", dateFormat);
145+
config.setProperty(serverName + ".server.alertlog.dateformatregex", dateFormatRegex);
146+
config.setProperty(serverName + ".server.alertlog.filepath", jsch.getAlc().getReadFilePath());
147+
config.setProperty(serverName + ".server.alertlog.readLine", 500);
148+
}
149+
150+
config.setProperty("servernames", serverNames.substring(0, serverNames.length()-1));
151+
152+
PropertiesConfigurationLayout layout = config.getLayout();
153+
try {
154+
PropertiesWriter writer = config.getIOFactory()
155+
.createPropertiesWriter(new FileWriter(filePath, false), config.getListDelimiterHandler());
156+
157+
// Write Header Comment
158+
writer.writeln(layout.getHeaderComment());
159+
160+
for (final String key : layout.getKeys()) {
161+
Matcher m = serverPropPattern.matcher(key);
162+
if (m.matches()) {
163+
String serverName = m.group(1);
164+
if(!serverConfig.containsKey(serverName)) {
165+
continue;
166+
}
167+
}
168+
169+
// Output blank lines before property
170+
for (int i = 0; i < layout.getBlancLinesBefore(key); i++) {
171+
writer.writeln(null);
172+
}
173+
174+
// Output the property and its value
175+
boolean singleLine = layout.isForceSingleLine() || layout.isSingleLine(key);
176+
writer.setCurrentSeparator(layout.getSeparator(key));
177+
writer.writeProperty(key, config.getProperty(key), singleLine);
178+
}
179+
180+
writer.writeln(layout.getCanonicalFooterCooment(true));
181+
writer.flush();
182+
183+
log.info("[" + filePath + "] 파일 저장이 성공적으로 완료되었습니다.");
184+
} catch (Exception e) {
185+
e.printStackTrace();
186+
log.error("[" + filePath + "] 파일 저장에 실패했습니다.");
187+
}
188+
}
189+
48190
/**
49191
* 접속정보 프로퍼티 파일을 Load한다.
50192
*/

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -479,12 +479,11 @@ private void createSettingDynamicElements() {
479479
for (JdbcConnectionInfo jdbc : jdbcConnInfoList) {
480480
DBConnectionInfoAnchorPane dbConnAP = new DBConnectionInfoAnchorPane();
481481
dbConnAP.setInitialValue(jdbc);
482-
dbConnVBox.addConnectionInfoAP(dbConnAP);
482+
dbConnVBox.addConnectionInfoAP(1, dbConnAP);
483483
}
484484

485485
ConnectionInfoVBox serverConnVBox = null;
486486
if(connInfoVBox.lookup("#serverConnVBox") != null) {
487-
((ConnectionInfoVBox) connInfoVBox.lookup("#serverConnVBox")).clearConnInfoMap();
488487
serverConnVBox = (ConnectionInfoVBox) connInfoVBox.lookup("#serverConnVBox");
489488
serverConnVBox.clearConnInfoMap();
490489
} else {
@@ -498,7 +497,7 @@ private void createSettingDynamicElements() {
498497
for (JschConnectionInfo jsch : jschConnInfoList) {
499498
ServerConnectionInfoAnchorPane serverConnAP = new ServerConnectionInfoAnchorPane();
500499
serverConnAP.setInitialValue(jsch);
501-
serverConnVBox.addConnectionInfoAP(serverConnAP);
500+
serverConnVBox.addConnectionInfoAP(1, serverConnAP);
502501
}
503502

504503
// [설정] - [모니터링 여부 설정]

0 commit comments

Comments
 (0)