Skip to content

Commit

Permalink
Add withConnectionUrl() to Speedment builder. fix #143
Browse files Browse the repository at this point in the history
  • Loading branch information
minborg committed Mar 18, 2016
1 parent ecb49fb commit 28b9704
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 84 deletions.
1 change: 0 additions & 1 deletion src/main/java/com/speedment/code/JavaClassTranslator.java
Expand Up @@ -21,7 +21,6 @@
import com.speedment.config.db.trait.HasName;
import com.speedment.exception.SpeedmentException;
import com.speedment.codegen.lang.models.ClassOrInterface;
import com.speedment.internal.util.code.TranslatorSupport;
import com.speedment.util.JavaLanguageNamer;
import java.util.function.Supplier;

Expand Down
Expand Up @@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.speedment.internal.util.code;
package com.speedment.code;

import com.speedment.Speedment;
import com.speedment.codegen.lang.models.Type;
Expand Down
Expand Up @@ -53,6 +53,10 @@ public void setUsername(String username) {
put(USERNAME, username);
}

public void setConnectionUrl(String connectionUrl) {
put(CONNECTION_URL, connectionUrl);
}

public Schema addNewSchema() {
return new SchemaImpl(document(), newDocument(document(), SCHEMAS));
}
Expand Down
Expand Up @@ -55,7 +55,7 @@
import com.speedment.internal.core.config.db.ProjectImpl;
import com.speedment.internal.core.config.db.SchemaImpl;
import com.speedment.internal.core.config.db.TableImpl;
import com.speedment.internal.util.code.TranslatorSupport;
import com.speedment.code.TranslatorSupport;
import com.speedment.util.JavaLanguageNamer;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down
Expand Up @@ -44,7 +44,7 @@
import static com.speedment.internal.core.code.DefaultJavaClassTranslator.GETTER_METHOD_PREFIX;
import static com.speedment.internal.core.code.DefaultJavaClassTranslator.SETTER_METHOD_PREFIX;
import com.speedment.internal.core.code.EntityAndManagerTranslator;
import com.speedment.internal.util.code.TranslatorSupport;
import com.speedment.code.TranslatorSupport;
import com.speedment.internal.util.document.DocumentDbUtil;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down
Expand Up @@ -38,7 +38,7 @@
import com.speedment.config.db.trait.HasEnabled;
import com.speedment.codegen.lang.models.Generic;
import com.speedment.internal.core.runtime.SpeedmentApplicationLifecycle;
import com.speedment.internal.util.code.TranslatorSupport;
import com.speedment.code.TranslatorSupport;
import com.speedment.stream.MapStream;
import java.util.List;
import java.util.Map;
Expand Down
Expand Up @@ -48,7 +48,7 @@
import java.util.stream.Stream;
import com.speedment.internal.util.sql.ResultSetUtil;
import com.speedment.util.tuple.Tuples;
import com.speedment.internal.util.code.TranslatorSupport;
import com.speedment.code.TranslatorSupport;
import java.util.function.Supplier;
import java.util.LinkedList;
import java.util.List;
Expand Down
Expand Up @@ -74,7 +74,6 @@ public abstract class AbstractRelationalDbmsHandler implements DbmsHandler {
// static {
// LOGGER.setLevel(Level.DEBUG);
// }

private static final String PASSWORD_PROTECTED = "********";

private final Dbms dbms;
Expand Down Expand Up @@ -104,12 +103,12 @@ public Connection getConnection() {
final Connection conn;
try {
conn = speedment.getConnectionPoolComponent()
.getConnection(url, user, password == null ? null : new String(password));
.getConnection(url, user, password == null ? null : new String(password));
} catch (final SQLException ex) {
final String msg
= "Unable to get connection for " + dbms
+ " using url \"" + url + "\", user = " + user
+ ", password = " + PASSWORD_PROTECTED;
= "Unable to get connection for " + dbms
+ " using url \"" + url + "\", user = " + user
+ ", password = " + PASSWORD_PROTECTED;

LOGGER.error(ex, msg);
throw new SpeedmentException(msg, ex);
Expand Down Expand Up @@ -213,7 +212,7 @@ protected void readSchemaMetadata(Connection connection, Predicate<String> filte

if (!atleastOneSchema.get()) {
throw new SpeedmentException(
"Could not find anymatching schema. The following schemas was considered: " + discardedSchemas + "."
"Could not find anymatching schema. The following schemas was considered: " + discardedSchemas + "."
);
}
}
Expand Down Expand Up @@ -263,12 +262,12 @@ protected void columns(Connection connection, Table table) {
final Schema schema = table.getParent().get();

final SqlSupplier<ResultSet> supplier = ()
-> connection.getMetaData().getColumns(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName(),
null
);
-> connection.getMetaData().getColumns(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName(),
null
);

final TableChildMutator<Column, ResultSet> mutator = (column, rs) -> {

Expand Down Expand Up @@ -298,11 +297,11 @@ protected void columns(Connection connection, Table table) {
if (mapping != null) {

final TypeMapper<?, ?> typeMapper = speedment.getTypeMapperComponent().stream()
.filter(tm -> Objects.equals(mapping, tm.getDatabaseType()))
.filter(tm -> Objects.equals(mapping, tm.getJavaType()))
.findFirst().orElseThrow(() -> new SpeedmentException(
"Found no identity type mapper for mapping '" + mapping.getName() + "'."
));
.filter(tm -> Objects.equals(mapping, tm.getDatabaseType()))
.filter(tm -> Objects.equals(mapping, tm.getJavaType()))
.findFirst().orElseThrow(() -> new SpeedmentException(
"Found no identity type mapper for mapping '" + mapping.getName() + "'."
));

column.mutator().setTypeMapper(typeMapper);
column.mutator().setDatabaseType(mapping);
Expand All @@ -327,11 +326,11 @@ protected void primaryKeyColumns(Connection connection, Table table) {
final Schema schema = table.getParent().get();

final SqlSupplier<ResultSet> supplier = ()
-> connection.getMetaData().getPrimaryKeys(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName()
);
-> connection.getMetaData().getPrimaryKeys(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName()
);

final TableChildMutator<PrimaryKeyColumn, ResultSet> mutator = (primaryKeyColumn, rs) -> {
primaryKeyColumn.mutator().setName(rs.getString("COLUMN_NAME"));
Expand All @@ -346,13 +345,13 @@ protected void indexes(Connection connection, Table table) {

final Schema schema = table.getParent().get();
final SqlSupplier<ResultSet> supplier = ()
-> connection.getMetaData().getIndexInfo(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName(),
false,
false
);
-> connection.getMetaData().getIndexInfo(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName(),
false,
false
);

final TableChildMutator<Index, ResultSet> mutator = (index, rs) -> {
final String indexName = rs.getString("INDEX_NAME");
Expand Down Expand Up @@ -389,11 +388,11 @@ protected void foreignKeys(Connection connection, Table table) {

final Schema schema = table.getParent().get();
final SqlSupplier<ResultSet> supplier = ()
-> connection.getMetaData().getImportedKeys(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName()
);
-> connection.getMetaData().getImportedKeys(
jdbcCatalogLookupName(schema),
jdbcSchemaLookupName(schema),
table.getName()
);

final TableChildMutator<ForeignKey, ResultSet> mutator = (foreignKey, rs) -> {

Expand All @@ -412,18 +411,18 @@ protected void foreignKeys(Connection connection, Table table) {
}

protected <T> void tableChilds(
Supplier<T> childSupplier,
SqlSupplier<ResultSet> resultSetSupplier,
TableChildMutator<T, ResultSet> resultSetMutator
Supplier<T> childSupplier,
SqlSupplier<ResultSet> resultSetSupplier,
TableChildMutator<T, ResultSet> resultSetMutator
) {
tableChilds(childSupplier, resultSetSupplier, resultSetMutator, rs -> true);
}

protected <T> void tableChilds(
Supplier<T> childSupplier,
SqlSupplier<ResultSet> resultSetSupplier,
TableChildMutator<T, ResultSet> resultSetMutator,
SqlPredicate<ResultSet> filter
Supplier<T> childSupplier,
SqlSupplier<ResultSet> resultSetSupplier,
TableChildMutator<T, ResultSet> resultSetMutator,
SqlPredicate<ResultSet> filter
) {
requireNonNulls(childSupplier, resultSetSupplier, resultSetMutator);

Expand Down Expand Up @@ -468,8 +467,8 @@ public <T> Stream<T> executeQuery(String sql, List<?> values, SqlFunction<Result
requireNonNulls(sql, values, rsMapper);

try (
final Connection connection = getConnection();
final PreparedStatement ps = connection.prepareStatement(sql)) {
final Connection connection = getConnection();
final PreparedStatement ps = connection.prepareStatement(sql)) {
int i = 1;
for (final Object o : values) {
ps.setObject(i++, o);
Expand All @@ -490,31 +489,31 @@ public <T> Stream<T> executeQuery(String sql, List<?> values, SqlFunction<Result

@Override
public <T> AsynchronousQueryResult<T> executeQueryAsync(
String sql, List<?> values, Function<ResultSet, T> rsMapper) {
String sql, List<?> values, Function<ResultSet, T> rsMapper) {

return new AsynchronousQueryResultImpl<>(
Objects.requireNonNull(sql),
Objects.requireNonNull(values),
Objects.requireNonNull(rsMapper),
() -> getConnection()
Objects.requireNonNull(sql),
Objects.requireNonNull(values),
Objects.requireNonNull(rsMapper),
() -> getConnection()
);
}

@Override
public void executeUpdate(
String sql, List<?> values, Consumer<List<Long>> generatedKeysConsumer)
throws SQLException {
String sql, List<?> values, Consumer<List<Long>> generatedKeysConsumer)
throws SQLException {

final List<SqlUpdateStatement> sqlStatementList = new ArrayList<>();
final SqlUpdateStatement sqlUpdateStatement
= new SqlUpdateStatement(sql, values, generatedKeysConsumer);
= new SqlUpdateStatement(sql, values, generatedKeysConsumer);

sqlStatementList.add(sqlUpdateStatement);
executeUpdate(sqlStatementList);
}

private void executeUpdate(List<SqlUpdateStatement> sqlStatementList)
throws SQLException {
throws SQLException {

requireNonNull(sqlStatementList);
int retryCount = 5;
Expand All @@ -540,7 +539,7 @@ private void executeUpdate(List<SqlUpdateStatement> sqlStatementList)
while (generatedKeys.next()) {
final Object genKey = generatedKeys.getObject(1);
if (!"oracle.sql.ROWID".equals(genKey.getClass()
.getName())) {
.getName())) {
sqlStatement.addGeneratedKey(generatedKeys.getLong(1));
} else {
// Handle ROWID, make result = map<,String>
Expand Down Expand Up @@ -619,10 +618,10 @@ protected Map<String, Class<?>> readTypeMapFromSet(Set<SqlTypeInfo> typeInfos) {
requireNonNull(typeInfos);

return typeInfos.stream()
.collect(toMap(
SqlTypeInfo::getSqlTypeName,
sti -> speedment.getSqlTypeMapperComponent().apply(dbms, sti))
);
.collect(toMap(
SqlTypeInfo::getSqlTypeName,
sti -> speedment.getSqlTypeMapperComponent().apply(dbms, sti))
);
}

}

0 comments on commit 28b9704

Please sign in to comment.