Skip to content

Commit ec88bbf

Browse files
author
chengyitian
committed
AJ-844: support ConnectConfig for DBConnection connect;
1 parent d71797e commit ec88bbf

File tree

1 file changed

+166
-0
lines changed

1 file changed

+166
-0
lines changed

src/com/xxdb/DBConnection.java

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,166 @@ public boolean equals(Object o){
122122
}
123123
}
124124

125+
public static class ConnectConfig {
126+
private String hostName;
127+
private int port;
128+
private int connectTimeout = 0;
129+
private int readTimeout = 0;
130+
private String userId = "";
131+
private String password = "";
132+
private String initialScript = null;
133+
private boolean enableHighAvailability;
134+
private String[] highAvailabilitySites = null;
135+
private boolean reconnect;
136+
private boolean enableLoadBalance;
137+
private int tryReconnectNums = -1;
138+
139+
// flag:
140+
private boolean ifUserSetEnableLoadBalance;
141+
142+
private ConnectConfig() {}
143+
144+
public static Builder builder() {
145+
return new Builder();
146+
}
147+
148+
public static class Builder {
149+
private final ConnectConfig config;
150+
151+
private Builder() {
152+
config = new ConnectConfig();
153+
}
154+
155+
public Builder hostName(String hostName) {
156+
config.hostName = hostName;
157+
return this;
158+
}
159+
160+
public Builder port(int port) {
161+
config.port = port;
162+
return this;
163+
}
164+
165+
public Builder connectTimeout(int connectTimeout) {
166+
config.connectTimeout = connectTimeout;
167+
return this;
168+
}
169+
170+
public Builder readTimeout(int readTimeout) {
171+
config.readTimeout = readTimeout;
172+
return this;
173+
}
174+
175+
public Builder userId(String userId) {
176+
config.userId = userId;
177+
return this;
178+
}
179+
180+
public Builder password(String password) {
181+
config.password = password;
182+
return this;
183+
}
184+
185+
public Builder initialScript(String initialScript) {
186+
config.initialScript = initialScript;
187+
return this;
188+
}
189+
190+
public Builder enableHighAvailability(boolean enableHighAvailability) {
191+
config.enableHighAvailability = enableHighAvailability;
192+
return this;
193+
}
194+
195+
public Builder highAvailabilitySites(String[] highAvailabilitySites) {
196+
config.highAvailabilitySites = highAvailabilitySites;
197+
return this;
198+
}
199+
200+
public Builder reconnect(boolean reconnect) {
201+
config.reconnect = reconnect;
202+
return this;
203+
}
204+
205+
public Builder enableLoadBalance(boolean enableLoadBalance) {
206+
config.enableLoadBalance = enableLoadBalance;
207+
config.ifUserSetEnableLoadBalance = true;
208+
return this;
209+
}
210+
211+
public Builder tryReconnectNums(int tryReconnectNums) {
212+
config.tryReconnectNums = tryReconnectNums;
213+
return this;
214+
}
215+
216+
public ConnectConfig build() {
217+
validateConfig();
218+
return config;
219+
}
220+
221+
private void validateConfig() {
222+
if (Utils.isEmpty(config.hostName))
223+
throw new IllegalArgumentException("The param 'hostName' cannot be null or empty.");
224+
225+
if (config.port <= 0 || config.port > 65535)
226+
throw new IllegalArgumentException("The param 'port' cannot less than or equanl to 0, and also cannot rather than 65535.");
227+
228+
if (config.connectTimeout < 0 || config.readTimeout < 0)
229+
throw new IllegalArgumentException("The param connectTimeout or readTimeout cannot less than zero.");
230+
231+
if (config.enableHighAvailability && !config.ifUserSetEnableLoadBalance)
232+
config.enableLoadBalance = true;
233+
}
234+
}
235+
236+
public String getHostName() {
237+
return hostName;
238+
}
239+
240+
public int getPort() {
241+
return port;
242+
}
243+
244+
public int getConnectTimeout() {
245+
return connectTimeout;
246+
}
247+
248+
public int getReadTimeout() {
249+
return readTimeout;
250+
}
251+
252+
public String getUserId() {
253+
return userId;
254+
}
255+
256+
public String getPassword() {
257+
return password;
258+
}
259+
260+
public String getInitialScript() {
261+
return initialScript;
262+
}
263+
264+
public boolean getEnableHighAvailability() {
265+
return enableHighAvailability;
266+
}
267+
268+
public String[] getHighAvailabilitySites() {
269+
return highAvailabilitySites;
270+
}
271+
272+
public boolean getReconnect() {
273+
return reconnect;
274+
}
275+
276+
public boolean getEnableLoadBalance() {
277+
return enableLoadBalance;
278+
}
279+
280+
public int getTryReconnectNums() {
281+
return tryReconnectNums;
282+
}
283+
}
284+
125285
enum Property{
126286
flag,//1
127287
cancel,//2
@@ -794,6 +954,12 @@ public boolean connect(String hostName, int port, String userId, String password
794954
return connect(hostName, port, userId, password, initialScript, enableHighAvailability, highAvailabilitySites, reconnect, enableLoadBalance, -1);
795955
}
796956

957+
public boolean connect(ConnectConfig connectConfig) throws IOException {
958+
this.connectTimeout_ = connectConfig.getConnectTimeout();
959+
this.readTimeout_ = connectConfig.getReadTimeout();
960+
return connect(connectConfig.getHostName(), connectConfig.getPort(), connectConfig.getUserId(), connectConfig.getPassword(), connectConfig.getInitialScript(), connectConfig.getEnableHighAvailability(), connectConfig.getHighAvailabilitySites(), connectConfig.getReconnect(), connectConfig.getEnableLoadBalance(), connectConfig.getTryReconnectNums());
961+
}
962+
797963
public boolean connect(String hostName, int port, String userId, String password, String initialScript, boolean enableHighAvailability, String[] highAvailabilitySites, boolean reconnect, boolean enableLoadBalance, int tryReconnectNums) throws IOException {
798964
mutex_.lock();
799965
try {

0 commit comments

Comments
 (0)