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.java36
1 files changed, 17 insertions, 19 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 ad36988..cf21887 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
@@ -1,6 +1,7 @@
package io.trygvis.container.compiler;
import io.trygvis.container.compiler.model.ClassG;
+import io.trygvis.container.compiler.model.TypeRef;
import io.trygvis.persistence.EntityMirror;
import io.trygvis.persistence.FieldMirror;
import io.trygvis.persistence.GeneratorSupport;
@@ -14,7 +15,6 @@ import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.persistence.Id;
import javax.tools.JavaFileObject;
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import static io.trygvis.container.compiler.Utils.toJavaString;
import static io.trygvis.persistence.FieldMirror.PrimitiveFieldMirror;
import static java.lang.Character.isUpperCase;
import static javax.lang.model.util.ElementFilter.fieldsIn;
@@ -47,7 +48,7 @@ public class EntityHandler extends AbstractHandler {
TypeHandler typeHandler = (TypeHandler) typeHandlerClass.newInstance();
String type = entity.asType().toString();
- generatorSupport.addTypeHandler(type, typeHandler);
+ generatorSupport.addTypeHandler(new TypeRef(type, type), typeHandler);
System.out.println("Loaded TypeHandler for " + type + " through " + typeHandlerClass.getCanonicalName());
break;
}
@@ -78,8 +79,8 @@ public class EntityHandler extends AbstractHandler {
}
public void processEntity(TypeElement element) throws Exception {
- DeclaredType declaredType = types.getDeclaredType(element);
- EntityMirror entityMirror = new EntityMirror(generatorSupport, declaredType, sqlName(element.getSimpleName().toString()));
+ EntityMirror entityMirror = new EntityMirror(generatorSupport, new TypeRef(types.getDeclaredType(element)),
+ sqlName(element.getSimpleName().toString()));
for (VariableElement f : fieldsIn(elements.getAllMembers(element))) {
entityMirror.add(fromElement(generatorSupport, f));
@@ -101,16 +102,14 @@ public class EntityHandler extends AbstractHandler {
String p = elements.getPackageOf(element).getQualifiedName().toString();
- ClassG g = new ClassG(p, entityMirror.daoName);
- String insertInto = entityMirror.insertIntoSql();
- g.addPublicStaticFinalField(String.class, "insertIntoSql").value("\"" + insertInto + "\"");
-// List<String> body = new ArrayList<>();
-// body.add("this.insertIntoSql = \"" + insertInto + "\";");
-// g.addConstructor(new Parameters(), body);
+ ClassG g = new ClassG(entityMirror.daoType);
+ g.addPublicStaticFinalField(String.class, "createTableSql").value(toJavaString(entityMirror.createTableSql()));
+ g.addPublicStaticFinalField(String.class, "dropTableSql").value(toJavaString(entityMirror.dropTableSql()));
+ g.addPublicStaticFinalField(String.class, "insertIntoSql").value(toJavaString(entityMirror.insertIntoSql()));
+ g.addPublicStaticFinalField(String.class, "deleteFromSql").value(toJavaString(entityMirror.deleteFromSql()));
entityMirror.insertInto(g);
- String fileName = (p.length() == 0 ? "" : p + ".") + entityMirror.daoName;
- JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(fileName, element);
+ JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(entityMirror.daoType.fqName, element);
try (PrintWriter w = new PrintWriter(sourceFile.openWriter())) {
g.write(w);
}
@@ -119,7 +118,7 @@ public class EntityHandler extends AbstractHandler {
}
public FieldMirror fromElement(GeneratorSupport generatorSupport, VariableElement var) {
- TypeMirror type = var.asType();
+ TypeRef type = new TypeRef(var.asType().toString());
// System.out.print("element = ");
// elements.printElements(new PrintWriter(System.out), var);
String javaName = var.getSimpleName().toString();
@@ -128,13 +127,13 @@ public class EntityHandler extends AbstractHandler {
FieldMirror field;
boolean id = isId(var);
if (generatorSupport.isPrimitive(type)) {
- field = new PrimitiveFieldMirror(var, javaName, sqlName, id, notNull);
+ field = new PrimitiveFieldMirror(type, javaName, sqlName, id, notNull);
} else if (generatorSupport.hasTypeHandler(type)) {
if (id) {
throw new CompilerException(var, "A @Id field has to be a primitive or embedded.");
}
- field = new FieldMirror.ReferenceFieldMirror(var, javaName, sqlName, notNull);
+ field = new FieldMirror.ReferenceFieldMirror(type, javaName, sqlName, notNull);
} else {
throw new CompilerException(var, "Missing type handler for type: " + type);
}
@@ -151,10 +150,9 @@ public class EntityHandler extends AbstractHandler {
String p = packageElement.getQualifiedName().toString();
// TODO: Support a name prefix from @SqlEntitySet
- String className = "Daos";
+ TypeRef type = new TypeRef(p + ".Daos");
- String fileName = (p.length() == 0 ? "" : p + ".") + className;
- ClassG g = new ClassG(p, className);
+ ClassG g = new ClassG(type);
/*
TypeRef conType = g.addImport(Connection.class);
@@ -170,7 +168,7 @@ public class EntityHandler extends AbstractHandler {
g.addConstructor(parameters, body);
*/
- JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(fileName, packageElement);
+ JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(type.fqName, packageElement);
try (PrintWriter w = new PrintWriter(sourceFile.openWriter())) {
g.write(w);
}