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.java38
1 files changed, 29 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 c623af7..19205b1 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
@@ -7,6 +7,7 @@ import io.trygvis.persistence.FieldMirror;
import io.trygvis.persistence.GeneratorConfiguration;
import io.trygvis.persistence.SqlEntity;
import io.trygvis.persistence.TypeHandler;
+import io.trygvis.persistence.sql.SqlEntityDesc;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
@@ -28,7 +29,9 @@ 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 java.lang.reflect.Modifier.PUBLIC;
import static javax.lang.model.util.ElementFilter.fieldsIn;
+import static org.apache.commons.lang.StringUtils.stripEnd;
public class EntityHandler extends AbstractHandler {
private GeneratorConfiguration generatorConfiguration = new GeneratorConfiguration();
@@ -49,7 +52,7 @@ public class EntityHandler extends AbstractHandler {
TypeHandler typeHandler = (TypeHandler) typeHandlerClass.newInstance();
String type = entity.asType().toString();
- generatorConfiguration.addTypeHandler(new TypeRef(type, type), typeHandler);
+ generatorConfiguration.addTypeHandler(new TypeRef(type), typeHandler);
System.out.println("Loaded TypeHandler for " + type + " through " + typeHandlerClass.getCanonicalName());
break;
}
@@ -105,18 +108,33 @@ public class EntityHandler extends AbstractHandler {
}
public void generate(EntityMirror entityMirror) throws IOException {
- ClassG g = new ClassG(entityMirror.daoType);
- g.addPublicStaticFinalField(String.class, "createTableSql").value(toJavaString(entityMirror.createTableSql(sqlUnit)));
- 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()));
+ TypeRef stringType = new TypeRef(String.class);
+ TypeRef sqlEntityDescType = new TypeRef(SqlEntityDesc.class);
+
+ ClassG g = new ClassG(PUBLIC, entityMirror.daoType);
+ g.addPublicStaticFinalField(stringType, "createTableSql").
+ value(toJavaString(entityMirror.createTableSql(sqlUnit)));
+ g.addPublicStaticFinalField(stringType, "dropTableSql").
+ value(toJavaString(entityMirror.dropTableSql()));
+ g.addPublicStaticFinalField(stringType, "insertIntoSql").
+ value(toJavaString(entityMirror.insertIntoSql()));
+ g.addPublicStaticFinalField(stringType, "deleteFromSql").
+ value(toJavaString(entityMirror.deleteFromSql()));
+ String desc = "new " + sqlEntityDescType + "(" +
+ toJavaString(entityMirror.tableName) + ", " +
+ toJavaString(entityMirror.defaultFields()) +
+ ")";
+ g.addPublicStaticFinalField(sqlEntityDescType, "desc").value(desc);
entityMirror.insertInto(sqlUnit, g);
entityMirror.delete(g);
entityMirror.deleteById(g);
+ entityMirror.query(sqlUnit, g);
JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(entityMirror.daoType.fqName, sqlUnit.elementForEntity(entityMirror));
try (PrintWriter w = new PrintWriter(sourceFile.openWriter())) {
- g.write(w);
+ for (String s : g.generate()) {
+ w.println(stripEnd(s, " "));
+ }
}
}
@@ -162,7 +180,7 @@ public class EntityHandler extends AbstractHandler {
// TODO: Support a name prefix from @SqlEntitySet
TypeRef type = new TypeRef(p + ".Session");
- ClassG g = new ClassG(type);
+ ClassG g = new ClassG(PUBLIC, type);
/*
TypeRef conType = g.addImport(Connection.class);
@@ -180,7 +198,9 @@ public class EntityHandler extends AbstractHandler {
JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(type.fqName, packageElement);
try (PrintWriter w = new PrintWriter(sourceFile.openWriter())) {
- g.write(w);
+ for (String s : g.generate()) {
+ w.println(stripEnd(s, " "));
+ }
}
}