RED-6270: Extracted common code into own methods and corrected jdbc-string generation (not all params were concatenated correctly)
This commit is contained in:
parent
00d6230783
commit
0351baa0dd
@ -1,5 +1,10 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.utils.jdbc;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.multitenancy.entity.DatabaseConnectionEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.DatabaseConnection;
|
||||
|
||||
@ -8,75 +13,98 @@ import lombok.experimental.UtilityClass;
|
||||
@UtilityClass
|
||||
public class JDBCUtils {
|
||||
|
||||
public String buildJdbcUrl(DatabaseConnectionEntity databaseConnectionEntity) {
|
||||
|
||||
public String buildJdbcUrl(DatabaseConnectionEntity databaseConnectionEntity){
|
||||
StringBuilder sb = new StringBuilder("jdbc:")
|
||||
.append(databaseConnectionEntity.getDriver())
|
||||
.append("://")
|
||||
.append(databaseConnectionEntity.getHost())
|
||||
.append(':')
|
||||
.append(databaseConnectionEntity.getPort())
|
||||
.append('/')
|
||||
.append(databaseConnectionEntity.getDatabase());
|
||||
StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnectionEntity.getDriver(),
|
||||
databaseConnectionEntity.getHost(),
|
||||
databaseConnectionEntity.getPort(),
|
||||
databaseConnectionEntity.getDatabase());
|
||||
|
||||
if(databaseConnectionEntity.getParams() != null) {
|
||||
sb.append('?');
|
||||
databaseConnectionEntity.getParams().forEach((k, v) -> sb.append('&').append(k).append(v));
|
||||
}
|
||||
Map<String, String> params = getConnectionParameters(databaseConnectionEntity);
|
||||
appendParams(sb, params);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
public String buildJdbcUrl(DatabaseConnection databaseConnection){
|
||||
StringBuilder sb = new StringBuilder("jdbc:")
|
||||
.append(databaseConnection.getDriver())
|
||||
.append("://")
|
||||
.append(databaseConnection.getHost())
|
||||
.append(':')
|
||||
.append(databaseConnection.getPort())
|
||||
.append('/')
|
||||
.append(databaseConnection.getDatabase());
|
||||
if(databaseConnection.getParams() != null) {
|
||||
sb.append('?');
|
||||
databaseConnection.getParams().forEach((k, v) -> sb.append('&').append(k).append(v));
|
||||
}
|
||||
private StringBuilder createJdbcConnectionStringBuilder(String driver, String host, String port, String database) {
|
||||
|
||||
return new StringBuilder("jdbc:").append(driver).append("://").append(host).append(':').append(port).append('/').append(database);
|
||||
}
|
||||
|
||||
|
||||
private Map<String, String> getConnectionParameters(DatabaseConnectionEntity databaseConnectionEntity) {
|
||||
|
||||
var paramsMap = Optional.ofNullable(databaseConnectionEntity.getParams());
|
||||
return getParamsWithDefaults(paramsMap);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||
private Map<String, String> getParamsWithDefaults(Optional<Map<String, String>> paramsMap) {
|
||||
|
||||
Map<String, String> params = paramsMap.orElseGet(HashMap::new);
|
||||
params.put("reWriteBatchedInserts", "true");
|
||||
return params;
|
||||
}
|
||||
|
||||
|
||||
public String buildJdbcUrl(DatabaseConnection databaseConnection) {
|
||||
|
||||
StringBuilder sb = createJdbcConnectionStringBuilder(databaseConnection.getDriver(),
|
||||
databaseConnection.getHost(),
|
||||
databaseConnection.getPort(),
|
||||
databaseConnection.getDatabase());
|
||||
Map<String, String> params = getConnectionParameters(databaseConnection);
|
||||
appendParams(sb, params);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
public String buildJdbcUrlWithSchema(DatabaseConnection databaseConnection){
|
||||
StringBuilder sb = new StringBuilder("jdbc:")
|
||||
.append(databaseConnection.getDriver())
|
||||
.append("://")
|
||||
.append(databaseConnection.getHost())
|
||||
.append(':')
|
||||
.append(databaseConnection.getPort())
|
||||
.append('/')
|
||||
.append(databaseConnection.getDatabase())
|
||||
.append('?')
|
||||
.append("currentSchema=")
|
||||
.append(databaseConnection.getSchema());
|
||||
if(databaseConnection.getParams() != null) {
|
||||
databaseConnection.getParams().forEach((k, v) -> sb.append('&').append(k).append(v));
|
||||
private void appendParams(StringBuilder sb, Map<String, String> params) {
|
||||
|
||||
if (!params.isEmpty()) {
|
||||
sb.append("?");
|
||||
List<String> paramsAsStrings = params.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).toList();
|
||||
sb.append(String.join("&", paramsAsStrings));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String buildJdbcUrlWithSchema(DatabaseConnection databaseConnection) {
|
||||
|
||||
return createJdbcConnectionString(databaseConnection.getDriver(),
|
||||
databaseConnection.getHost(),
|
||||
databaseConnection.getPort(),
|
||||
databaseConnection.getDatabase(),
|
||||
databaseConnection.getSchema(),
|
||||
getConnectionParameters(databaseConnection));
|
||||
}
|
||||
|
||||
|
||||
private static String createJdbcConnectionString(String driver, String host, String port, String database, String schema, Map<String, String> connectionParameters) {
|
||||
|
||||
StringBuilder sb = createJdbcConnectionStringBuilder(driver, host, port, database);
|
||||
connectionParameters.put("currentSchema", schema);
|
||||
appendParams(sb, connectionParameters);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String buildJdbcUrlWithSchema(DatabaseConnectionEntity databaseConnection){
|
||||
StringBuilder sb = new StringBuilder("jdbc:")
|
||||
.append(databaseConnection.getDriver())
|
||||
.append("://")
|
||||
.append(databaseConnection.getHost())
|
||||
.append(':')
|
||||
.append(databaseConnection.getPort())
|
||||
.append('/')
|
||||
.append(databaseConnection.getDatabase())
|
||||
.append('?')
|
||||
.append("currentSchema=")
|
||||
.append(databaseConnection.getSchema());
|
||||
if(databaseConnection.getParams() != null) {
|
||||
databaseConnection.getParams().forEach((k, v) -> sb.append('&').append(k).append(v));
|
||||
}
|
||||
return sb.toString();
|
||||
|
||||
private Map<String, String> getConnectionParameters(DatabaseConnection databaseConnection) {
|
||||
|
||||
var params = Optional.ofNullable(databaseConnection.getParams());
|
||||
return getParamsWithDefaults(params);
|
||||
}
|
||||
|
||||
|
||||
public String buildJdbcUrlWithSchema(DatabaseConnectionEntity databaseConnection) {
|
||||
|
||||
return createJdbcConnectionString(databaseConnection.getDriver(),
|
||||
databaseConnection.getHost(),
|
||||
databaseConnection.getPort(),
|
||||
databaseConnection.getDatabase(),
|
||||
databaseConnection.getSchema(),
|
||||
getConnectionParameters(databaseConnection));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user