From 46cb0cef9303940ade51ffe16831f55ee9cd8e1f Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 10 Aug 2013 18:28:36 +0200 Subject: o Start of loading referenced (singular) entities. --- .../trygvis/container/compiler/EntityHandler.java | 26 ++++++++++++++-------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java index a2bb5a6..9cb85e9 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java @@ -33,10 +33,10 @@ import java.util.TreeMap; import static io.trygvis.container.compiler.Utils.toFieldName; import static io.trygvis.container.compiler.Utils.writeFile; -import static io.trygvis.persistence.FieldMirror.AccessorType.FIELD; -import static io.trygvis.persistence.FieldMirror.AccessorType.METHOD; import static io.trygvis.persistence.FieldMirror.FieldType.PRIMITIVE; import static io.trygvis.persistence.FieldMirror.FieldType.REFERENCE; +import static io.trygvis.persistence.FieldMirror.GetterType; +import static io.trygvis.persistence.FieldMirror.SetterType; import static io.trygvis.persistence.TypeHandler.StringEnumTypeHandler; import static java.lang.Character.isUpperCase; import static java.lang.String.format; @@ -91,8 +91,8 @@ public class EntityHandler extends AbstractHandler { name = value; } } - sqlUnit.setName(name); sqlUnit.setPackageName(packageElement.getQualifiedName().toString()); + sqlUnit.setName(name); } public void recordEntity(TypeElement element) throws Exception { @@ -229,7 +229,8 @@ public class EntityHandler extends AbstractHandler { ExecutableElement getter, ExecutableElement setter) { // TODO: check the setter for annotations too // TODO: check for transient and @Transient - FieldMirror.AccessorType accessorType; + final SetterType setterType; + final GetterType getterType; TypeRef type; Element element; String javaName; @@ -240,7 +241,13 @@ public class EntityHandler extends AbstractHandler { if (var.getModifiers().contains(Modifier.STATIC)) { return null; } - accessorType = FIELD; + boolean isFinal = var.getModifiers().contains(Modifier.FINAL); + if (isFinal) { + setterType = SetterType.CONSTRUCTOR; + } else { + setterType = setter != null ? SetterType.METHOD : SetterType.FIELD; + } + getterType = GetterType.FIELD; type = new TypeRef(var.asType()); element = types.asElement(var.asType()); javaName = var.getSimpleName().toString(); @@ -253,9 +260,9 @@ public class EntityHandler extends AbstractHandler { if (setter == null) { // Skipping fields is closer to what hibernate does. return null; -// throw new CompilerException(getter, "Missing setter for getter: " + getter.getSimpleName()); } - accessorType = METHOD; + setterType = SetterType.METHOD; + getterType = GetterType.METHOD; type = new TypeRef(getter.getReturnType()); element = types.asElement(getter.getReturnType()); id = isId(getter); @@ -291,11 +298,11 @@ public class EntityHandler extends AbstractHandler { System.out.println("typeHandler.typeName() = " + typeHandler.typeName()); // TODO: check for configuration conflict notNull = !typeHandler.nullable; - field = new FieldMirror(PRIMITIVE, accessorType, type, javaName, sqlName, id, notNull, unique); + field = new FieldMirror(PRIMITIVE, setterType, getterType, type, javaName, sqlName, id, notNull, unique); } else if (generatorConfiguration.hasTypeHandler(type)) { throw new CompilerException(var, "Missing type handler for type: " + type.fqName); } else { - field = new FieldMirror(REFERENCE, accessorType, type, javaName, sqlName, id, notNull, unique); + field = new FieldMirror(REFERENCE, setterType, getterType, type, javaName, sqlName, id, notNull, unique); } return field; } @@ -309,6 +316,7 @@ public class EntityHandler extends AbstractHandler { for (EntityMirror entity : sqlUnit.getEntities().values()) { DaoGenerator daoGenerator = new DaoGenerator(generatorConfiguration, sqlUnit, entity); writeFile(processingEnv, daoGenerator.generate(), sqlUnit.element(entity)); + writeFile(processingEnv, daoGenerator.generateRow(), sqlUnit.element(entity)); } } catch (CompilerException | InternalErrorException e) { // Ignore any exceptions if we had an error from before -- cgit v1.2.3