
com.github.housepower.jdbc.settings.ClickHouseConfig Maven / Gradle / Ivy
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.housepower.jdbc.settings;
import com.github.housepower.jdbc.misc.Validate;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ClickHouseConfig {
public static final Pattern DB_PATH_PATTERN = Pattern.compile("/([a-zA-Z0-9_]+)");
public static final Pattern HOST_PORT_PATH_PATTERN = Pattern.compile("//(?[^/:\\s]+)(:(?\\d+))?");
private final int port;
private final String address;
private final String database;
private final String username;
private final String password;
private int soTimeout;
private final int connectTimeout;
private final Map settings;
private ClickHouseConfig(int port, String address, String database, String username, String password,
int soTimeout, int connectTimeout, Map settings) {
this.port = port;
this.address = address;
this.database = database;
this.username = username;
this.password = password;
this.soTimeout = soTimeout;
this.connectTimeout = connectTimeout;
this.settings = settings;
}
public ClickHouseConfig(String url, Properties properties) throws SQLException {
this.settings = parseJDBCUrl(url);
this.settings.putAll(parseJDBCProperties(properties));
Object obj;
this.port = (obj = settings.remove(SettingKey.port)) == null ? 9000 : ((int) obj) == -1 ? 9000 : (int) obj;
this.address = (obj = settings.remove(SettingKey.address)) == null ? "127.0.0.1" : String.valueOf(obj);
this.password = (obj = settings.remove(SettingKey.password)) == null ? "" : String.valueOf(obj);
this.username = (obj = settings.remove(SettingKey.user)) == null ? "default" : String.valueOf(obj);
this.database = (obj = settings.remove(SettingKey.database)) == null ? "default" : String.valueOf(obj);
// Java use time unit mills @
// https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#connect(java.net.SocketAddress,%20int)
this.soTimeout = (obj = settings.remove(SettingKey.query_timeout)) == null ? 0 : (int) obj * 1000;
this.connectTimeout = (obj = settings.remove(SettingKey.connect_timeout)) == null ? 0 : (int) obj * 1000;
}
public int port() {
return this.port;
}
public String address() {
return this.address;
}
public String database() {
return this.database;
}
public String username() {
return this.username;
}
public String password() {
return this.password;
}
public int queryTimeout() {
return this.soTimeout;
}
public int connectTimeout() {
return this.connectTimeout;
}
public Map settings() {
return settings;
}
public Map parseJDBCProperties(Properties properties) {
Map settings = new HashMap<>();
for (Map.Entry
© 2015 - 2025 Weber Informatics LLC | Privacy Policy