summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/container/compiler/EntityHandler.java26
1 files changed, 17 insertions, 9 deletions
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