diff --git a/src/main/java/com/speedment/internal/core/code/entity/GeneratedEntityTranslator.java b/src/main/java/com/speedment/internal/core/code/entity/GeneratedEntityTranslator.java index 84e7ca8e64..a1b910ac96 100644 --- a/src/main/java/com/speedment/internal/core/code/entity/GeneratedEntityTranslator.java +++ b/src/main/java/com/speedment/internal/core/code/entity/GeneratedEntityTranslator.java @@ -38,7 +38,6 @@ 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.JavaLanguageNamer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/com/speedment/internal/core/code/manager/GeneratedEntityManagerImplTranslator.java b/src/main/java/com/speedment/internal/core/code/manager/GeneratedEntityManagerImplTranslator.java index 75d6a2950d..c98af3daa3 100644 --- a/src/main/java/com/speedment/internal/core/code/manager/GeneratedEntityManagerImplTranslator.java +++ b/src/main/java/com/speedment/internal/core/code/manager/GeneratedEntityManagerImplTranslator.java @@ -59,9 +59,9 @@ public final class GeneratedEntityManagerImplTranslator extends EntityAndManagerTranslator { private static final String SPEEDMENT_VARIABLE_NAME = "speedment"; - + private final Speedment speedment; - + public GeneratedEntityManagerImplTranslator(Speedment speedment, Generator gen, Table table) { super(speedment, gen, table, Class::of); this.speedment = speedment; @@ -71,48 +71,48 @@ public GeneratedEntityManagerImplTranslator(Speedment speedment, Generator gen, protected Class makeCodeGenModel(File file) { return newBuilder(file, manager.getGeneratedImplName()) - .forEveryColumn((clazz, col) -> { - - final TypeMapper mapper = col.findTypeMapper(); - final java.lang.Class javaType = mapper.getJavaType(); - final java.lang.Class dbType = mapper.getDatabaseType(); - - final Type mapperType = Type.of(TypeMapper.class) - .add(Generic.of().add(Type.of(dbType))) - .add(Generic.of().add(Type.of(javaType))); - - file.add(Import.of(Type.of(mapper.getClass()))); - - clazz.add(Field.of(typeMapperName(col), mapperType) - .private_().final_() - .set(new ReferenceValue("new " + mapper.getClass().getSimpleName() + "()")) - ); - }) - .build() - .public_().abstract_() - .setSupertype(Type.of(AbstractSqlManager.class) - .add(Generic.of().add(entity.getType())) - ) - .add(manager.getGeneratedType()) - .call(i -> file.add(Import.of(entity.getImplType()))) - .add(Constructor.of() - .protected_() - .add(Field.of(SPEEDMENT_VARIABLE_NAME, Type.of(Speedment.class))) - .add("super(" + SPEEDMENT_VARIABLE_NAME + ");") - .add("setEntityMapper(this::newEntityFrom);")) - .add(newEntityFrom(file)) - .add(Method.of("newEmptyEntity", entity.getType()) - .public_().add(OVERRIDE) - .add("return new " + entity.getImplName() + "() {", indent( - "@Override", - "protected " + Speedment.class.getSimpleName() + " speedment() {", indent( - "return " + SPEEDMENT_VARIABLE_NAME + ";" - ), "}" - ), "};" + // .forEveryColumn((clazz, col) -> { + // + // final TypeMapper mapper = col.findTypeMapper(); + // final java.lang.Class javaType = mapper.getJavaType(); + // final java.lang.Class dbType = mapper.getDatabaseType(); + // + // final Type mapperType = Type.of(TypeMapper.class) + // .add(Generic.of().add(Type.of(dbType))) + // .add(Generic.of().add(Type.of(javaType))); + // + // file.add(Import.of(Type.of(mapper.getClass()))); + // + // clazz.add(Field.of(typeMapperName(col), mapperType) + // .private_().final_() + // .set(new ReferenceValue("new " + mapper.getClass().getSimpleName() + "()")) + // ); + // }) + .build() + .public_().abstract_() + .setSupertype(Type.of(AbstractSqlManager.class) + .add(Generic.of().add(entity.getType())) ) - .call($ -> file.add(Import.of(entity.getImplType()))) - .call($ -> file.add(Import.of(Type.of(Speedment.class)))) - ); + .add(manager.getGeneratedType()) + .call(i -> file.add(Import.of(entity.getImplType()))) + .add(Constructor.of() + .protected_() + .add(Field.of(SPEEDMENT_VARIABLE_NAME, Type.of(Speedment.class))) + .add("super(" + SPEEDMENT_VARIABLE_NAME + ");") + .add("setEntityMapper(this::newEntityFrom);")) + .add(newEntityFrom(file)) + .add(Method.of("newEmptyEntity", entity.getType()) + .public_().add(OVERRIDE) + .add("return new " + entity.getImplName() + "() {", indent( + "@Override", + "protected " + Speedment.class.getSimpleName() + " speedment() {", indent( + "return " + SPEEDMENT_VARIABLE_NAME + ";" + ), "}" + ), "};" + ) + .call($ -> file.add(Import.of(entity.getImplType()))) + .call($ -> file.add(Import.of(Type.of(Speedment.class)))) + ); } private static enum Primitive { @@ -144,9 +144,9 @@ private Method newEntityFrom(File file) { file.add(Import.of(Type.of(SpeedmentException.class))); final Method method = Method.of("newEntityFrom", entity.getType()) - .protected_() - .add(Field.of("resultSet", Type.of(ResultSet.class))) - .add("final " + entity.getName() + " entity = newEmptyEntity();"); + .protected_() + .add(Field.of("resultSet", Type.of(ResultSet.class))) + .add("final " + entity.getName() + " entity = newEmptyEntity();"); final JavaTypeMapperComponent mapperComponent = speedment.getJavaTypeMapperComponent(); final Stream.Builder streamBuilder = Stream.builder(); @@ -159,47 +159,46 @@ private Method newEntityFrom(File file) { dbmsTypeOf(speedment, dbmsOrThrow()), c.findTypeMapper().getDatabaseType() ); - final StringBuilder sb = new StringBuilder() - .append("entity.set") - .append(typeName(c)) - .append("(") - .append(typeMapperName(c)) - .append(".toJavaType("); + .append("entity.set") + .append(typeName(c)) + .append("(") + .append(typeMapperName(c)) + .append(".toJavaType("); final String getterName = "get" + mapping.getResultSetMethodName(dbmsOrThrow()); final boolean isResultSetMethod = Stream.of(ResultSet.class.getMethods()) - .map(java.lang.reflect.Method::getName) - .anyMatch(getterName::equals); + .map(java.lang.reflect.Method::getName) + .anyMatch(getterName::equals); final boolean isResultSetMethodReturnsPrimitive = Stream.of(ResultSet.class.getMethods()) - .filter(m -> m.getName().equals(getterName)) - .anyMatch(m -> m.getReturnType().isPrimitive()); + .filter(m -> m.getName().equals(getterName)) + .anyMatch(m -> m.getReturnType().isPrimitive()); if (isResultSetMethod && !(c.isNullable() && isResultSetMethodReturnsPrimitive)) { sb - .append("resultSet.") - .append("get") - .append(mapping.getResultSetMethodName(dbmsOrThrow())) - .append("(").append(position.getAndIncrement()).append(")"); + .append("resultSet.") + .append("get") + .append(mapping.getResultSetMethodName(dbmsOrThrow())) + .append("(").append(position.getAndIncrement()).append(")"); } else { sb - .append("get") - .append(mapping.getResultSetMethodName(dbmsOrThrow())) - .append("(resultSet, ") - .append(position.getAndIncrement()).append(")"); + .append("get") + .append(mapping.getResultSetMethodName(dbmsOrThrow())) + .append("(resultSet, ") + .append(position.getAndIncrement()).append(")"); } sb.append("));"); streamBuilder.add(sb.toString()); }); method - .add("try " + block(streamBuilder.build())) - .add("catch (" + SQLException.class.getSimpleName() + " sqle) " + block( - "throw new " + SpeedmentException.class.getSimpleName() + "(sqle);" - )) - .add("return entity;"); + .add("try " + block(streamBuilder.build())) + .add("catch (" + SQLException.class.getSimpleName() + " sqle) " + block( + "throw new " + SpeedmentException.class.getSimpleName() + "(sqle);" + )) + .add("return entity;"); return method; } @@ -226,31 +225,31 @@ public Type getImplType() { protected Method generateGet(File file) { file.add(Import.of(Type.of(IllegalArgumentException.class))); return Method.of("get", OBJECT).public_().add(OVERRIDE) - .add(Field.of("entity", entity.getType())) - .add(Field.of("column", Type.of(Column.class))) - .add("switch (column.getName()) " + block( - columns().map(c -> "case \"" + c.getName() + "\" : return entity." + GETTER_METHOD_PREFIX + typeName(c) + "();").collect(Collectors.joining(nl())) - + nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");" - )); + .add(Field.of("entity", entity.getType())) + .add(Field.of("column", Type.of(Column.class))) + .add("switch (column.getName()) " + block( + columns().map(c -> "case \"" + c.getName() + "\" : return entity." + GETTER_METHOD_PREFIX + typeName(c) + "();").collect(Collectors.joining(nl())) + + nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");" + )); } protected Method generateSet(File file) { file.add(Import.of(Type.of(IllegalArgumentException.class))); return Method.of("set", VOID).public_().add(OVERRIDE) - .add(Field.of("entity", entity.getType())) - .add(Field.of("column", Type.of(Column.class))) - .add(Field.of("value", Type.of(Object.class))) - .add("switch (column.getName()) " + block( - columns() - .peek(c -> file.add(Import.of(Type.of(c.findTypeMapper().getJavaType())))) - .map(c -> "case \"" + c.getName() + "\" : entity." + SETTER_METHOD_PREFIX + typeName(c) + "((" + c.findTypeMapper().getJavaType().getSimpleName() + ") value); break;").collect(Collectors.joining(nl())) - + nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");" - )); + .add(Field.of("entity", entity.getType())) + .add(Field.of("column", Type.of(Column.class))) + .add(Field.of("value", Type.of(Object.class))) + .add("switch (column.getName()) " + block( + columns() + .peek(c -> file.add(Import.of(Type.of(c.findTypeMapper().getJavaType())))) + .map(c -> "case \"" + c.getName() + "\" : entity." + SETTER_METHOD_PREFIX + typeName(c) + "((" + c.findTypeMapper().getJavaType().getSimpleName() + ") value); break;").collect(Collectors.joining(nl())) + + nl() + "default : throw new IllegalArgumentException(\"Unknown column '\" + column.getName() + \"'.\");" + )); } protected Method generatePrimaryKeyFor(File file) { final Method method = Method.of("primaryKeyFor", typeOfPK()).public_().add(OVERRIDE) - .add(Field.of("entity", entity.getType())); + .add(Field.of("entity", entity.getType())); final int count = (int) primaryKeyColumns().count(); switch (count) { @@ -261,15 +260,15 @@ protected Method generatePrimaryKeyFor(File file) { } case 1: { method.add("return entity.get" + typeName( - primaryKeyColumns().findFirst().get().findColumn().get() + primaryKeyColumns().findFirst().get().findColumn().get() ) + "();"); break; } default: { file.add(Import.of(Type.of(Arrays.class))); method.add(primaryKeyColumns() - .map(pkc -> "entity.get" + typeName(pkc.findColumn().get()) + "()") - .collect(Collectors.joining(", ", "return Arrays.asList(", ");")) + .map(pkc -> "entity.get" + typeName(pkc.findColumn().get()) + "()") + .collect(Collectors.joining(", ", "return Arrays.asList(", ");")) ); break; } @@ -278,7 +277,7 @@ protected Method generatePrimaryKeyFor(File file) { return method; } - private String typeMapperName(Column c) { - return variableName(c) + "TypeMapper"; + private String typeMapperName(Column col) { + return entity.getName() + "." + javaLanguageNamer().javaStaticFieldName(col.getJavaName()) + ".typeMapper()"; } -} \ No newline at end of file +}