org.openconnectors.util.JdbcUtils Maven / Gradle / Ivy
The newest version!
package org.openconnectors.util;
import org.openconnectors.JdbcConfigKeys;
import org.openconnectors.config.Config;
import org.openconnectors.exceptions.JdbcSourceConfigParsingException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JdbcUtils {
public static String buildFromStatement(String tableName, String identifierQuoteString) {
String defaultQuote = "";
if (identifierQuoteString == null) {
return "FROM " + defaultQuote + tableName + defaultQuote;
}
return "FROM " + tableName;
}
public static Map> parseWhiteListTablesAndColumns(String configLine) {
try {
Map> result = new HashMap<>();
String[] splitedConfigLine = configLine.split("\\s*\\)\\s*,\\s*");
for (String linePart : splitedConfigLine) {
String[] tableCols = linePart.replaceAll("\\(|\\)|\\*|,", " ")
.split("\\s+");
String tableName = tableCols[0].trim().toLowerCase();
if (tableCols.length == 1 || tableCols[1].contains("*")) {
result.put(tableName, null);
} else {
result.put(tableName, Arrays.asList(tableCols).subList(1, tableCols.length));
}
}
return result;
} catch (Exception e) {
throw new JdbcSourceConfigParsingException("Failed to parse tables and columns config string.", e);
}
}
public static Map> parseBlackListTables(String configLine) {
Map> result = new HashMap<>();
for (String tableName : configLine.split("\\s*,\\s*")) {
result.put(tableName.trim().toLowerCase(), null);
}
return result;
}
public static Map parseIncrementingColumns(String configLine) {
Map tableColumnNames = new HashMap<>();
try {
for (String tableColumn : configLine.split("\\s*,\\s*")) {
String[] tblCol = tableColumn.split("\\.");
String tableName = tblCol[0];
String columnName = tblCol[1];
tableColumnNames.put(tableName, columnName);
}
} catch (Exception e) {
throw new JdbcSourceConfigParsingException("Failed to parse incrementing columns names.", e);
}
return tableColumnNames;
}
public static String buildColumnsListString(List columns) {
String columnsString = "*";
if (columns != null && !columns.isEmpty()) {
columnsString = String.join(", ", columns);
}
return columnsString;
}
public static DbConnectionConfig getConnectionConfig(Config config) {
final String dbUrl = config.getString(JdbcConfigKeys.CONNECTION_URL_CONFIG);
final String dbUser = config.getString(JdbcConfigKeys.CONNECTION_USER_CONFIG);
final String dbPassword = config.getString(JdbcConfigKeys.CONNECTION_PASSWORD_CONFIG);
final int dbMaxConnectionAttempts = config.getInt(JdbcConfigKeys.CONNECTION_MAX_ATTEMPT);
final int dbConnectionRetryDelay = config.getInt(JdbcConfigKeys.CONNECTION_RETRY_DELAY);
return DbConnectionConfig.Builder
.newBuilder()
.setUrl(dbUrl)
.setUser(dbUser)
.setPassword(dbPassword)
.setMaxConnectionAttempts(dbMaxConnectionAttempts)
.setConnectionRetryDelay(dbConnectionRetryDelay)
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy