Skip to content

Commit 79768dc

Browse files
authored
Merge pull request #2013 from schemacrawler/conn
Refactor database connection code
2 parents 145b568 + a1d349e commit 79768dc

File tree

1 file changed

+48
-25
lines changed

1 file changed

+48
-25
lines changed

schemacrawler-tools/src/main/java/schemacrawler/tools/databaseconnector/EnvironmentalDatabaseConnectionSourceBuilder.java

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -34,33 +34,12 @@ public static DatabaseConnectionSourceBuilder builder(
3434
requireNonNull(envAccessor, "No environmental accessor provided");
3535

3636
final DatabaseConnectionSourceBuilder dbConnectionSourceBuilder;
37-
final String connectionUrl = envAccessor.getenv("SCHCRWLR_JDBC_URL");
37+
final String connectionUrl = trimToEmpty(envAccessor.getenv("SCHCRWLR_JDBC_URL"));
3838

39-
if (isBlank(connectionUrl)) {
40-
final String databaseSystemIdentifier = trimToEmpty(envAccessor.getenv("SCHCRWLR_SERVER"));
41-
42-
final DatabaseConnectorRegistry databaseConnectorRegistry =
43-
DatabaseConnectorRegistry.getDatabaseConnectorRegistry();
44-
final DatabaseConnector databaseConnector =
45-
databaseConnectorRegistry.findDatabaseConnectorFromDatabaseSystemIdentifier(
46-
databaseSystemIdentifier);
47-
48-
dbConnectionSourceBuilder = databaseConnector.databaseConnectionSourceBuilder();
49-
50-
final String host = trimToEmpty(envAccessor.getenv("SCHCRWLR_HOST"));
51-
dbConnectionSourceBuilder.withHost(host);
52-
53-
final String port = trimToEmpty(envAccessor.getenv("SCHCRWLR_PORT"));
54-
if (isValidPort(port)) {
55-
dbConnectionSourceBuilder.withPort(Integer.valueOf(port));
56-
}
57-
58-
final String database = trimToEmpty(envAccessor.getenv("SCHCRWLR_DATABASE"));
59-
dbConnectionSourceBuilder.withDatabase(database);
39+
if (!isBlank(connectionUrl)) {
40+
dbConnectionSourceBuilder = builderFromUrl(connectionUrl);
6041
} else {
61-
// This JDBC URL is not expected to have any substitutable parameters, so subsequent
62-
// settings should not have any effect
63-
dbConnectionSourceBuilder = DatabaseConnectionSourceBuilder.builder(connectionUrl);
42+
dbConnectionSourceBuilder = builderForServer(envAccessor);
6443
}
6544

6645
final UserCredentials userCredentials =
@@ -72,6 +51,50 @@ public static DatabaseConnectionSourceBuilder builder(
7251
return dbConnectionSourceBuilder;
7352
}
7453

54+
private static DatabaseConnectionSourceBuilder builderForServer(
55+
final EnvironmentVariableAccessor envAccessor) {
56+
final DatabaseConnectionSourceBuilder dbConnectionSourceBuilder;
57+
final String databaseSystemIdentifier = trimToEmpty(envAccessor.getenv("SCHCRWLR_SERVER"));
58+
59+
final DatabaseConnectorRegistry databaseConnectorRegistry =
60+
DatabaseConnectorRegistry.getDatabaseConnectorRegistry();
61+
final DatabaseConnector databaseConnector =
62+
databaseConnectorRegistry.findDatabaseConnectorFromDatabaseSystemIdentifier(
63+
databaseSystemIdentifier);
64+
65+
dbConnectionSourceBuilder = databaseConnector.databaseConnectionSourceBuilder();
66+
67+
final String host = trimToEmpty(envAccessor.getenv("SCHCRWLR_HOST"));
68+
dbConnectionSourceBuilder.withHost(host);
69+
70+
final String port = trimToEmpty(envAccessor.getenv("SCHCRWLR_PORT"));
71+
if (isValidPort(port)) {
72+
dbConnectionSourceBuilder.withPort(Integer.valueOf(port));
73+
}
74+
75+
final String database = trimToEmpty(envAccessor.getenv("SCHCRWLR_DATABASE"));
76+
dbConnectionSourceBuilder.withDatabase(database);
77+
78+
return dbConnectionSourceBuilder;
79+
}
80+
81+
private static DatabaseConnectionSourceBuilder builderFromUrl(final String connectionUrl) {
82+
final DatabaseConnectionSourceBuilder dbConnectionSourceBuilder;
83+
84+
// This JDBC URL is not expected to have any substitutable parameters, so subsequent
85+
// settings should not have any effect
86+
dbConnectionSourceBuilder = DatabaseConnectionSourceBuilder.builder(connectionUrl);
87+
88+
final DatabaseConnectorRegistry databaseConnectorRegistry =
89+
DatabaseConnectorRegistry.getDatabaseConnectorRegistry();
90+
DatabaseConnector databaseConnector =
91+
databaseConnectorRegistry.findDatabaseConnectorFromUrl(connectionUrl);
92+
dbConnectionSourceBuilder.withConnectionInitializer(
93+
databaseConnector.databaseConnectionSourceBuilder().getConnectionInitializer());
94+
95+
return dbConnectionSourceBuilder;
96+
}
97+
7598
/**
7699
* Checks if a string is a valid numeric value.
77100
*

0 commit comments

Comments
 (0)