From e1cf8889628d2d31cf7067b8c002f229fc22007d Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 3 Aug 2013 18:00:10 +0200 Subject: wip --- .../trygvis/container/compiler/EntityHandler.java | 36 ++++++++++------------ 1 file changed, 17 insertions(+), 19 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 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 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); } -- cgit v1.2.3