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.java103
1 files changed, 5 insertions, 98 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 1dbc534..a2bb5a6 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,10 +1,5 @@
package io.trygvis.container.compiler;
-import io.trygvis.container.compiler.model.ClassG;
-import io.trygvis.container.compiler.model.Constructor;
-import io.trygvis.container.compiler.model.FieldRef;
-import io.trygvis.container.compiler.model.MethodRef;
-import io.trygvis.container.compiler.model.Parameters;
import io.trygvis.container.compiler.model.TypeRef;
import io.trygvis.persistence.EntityMirror;
import io.trygvis.persistence.FieldMirror;
@@ -13,8 +8,7 @@ import io.trygvis.persistence.SequenceMirror;
import io.trygvis.persistence.SqlEntity;
import io.trygvis.persistence.SqlEntitySet;
import io.trygvis.persistence.TypeHandler;
-import io.trygvis.persistence.sql.SqlDao;
-import io.trygvis.persistence.sql.SqlEntityMeta;
+import io.trygvis.persistence.generators.DaoGenerator;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
@@ -30,10 +24,6 @@ import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -41,9 +31,8 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
-import static io.trygvis.container.compiler.Utils.*;
-import static io.trygvis.container.compiler.model.Parameters.ParameterRef;
-import static io.trygvis.container.compiler.model.TypeRef.VOID;
+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;
@@ -51,7 +40,6 @@ import static io.trygvis.persistence.FieldMirror.FieldType.REFERENCE;
import static io.trygvis.persistence.TypeHandler.StringEnumTypeHandler;
import static java.lang.Character.isUpperCase;
import static java.lang.String.format;
-import static java.lang.reflect.Modifier.PUBLIC;
import static javax.lang.model.util.ElementFilter.fieldsIn;
import static javax.lang.model.util.ElementFilter.methodsIn;
import static org.apache.commons.lang.StringUtils.join;
@@ -237,88 +225,6 @@ public class EntityHandler extends AbstractHandler {
}
}
- public ClassG phase3(EntityMirror entityMirror) throws IOException {
- ClassG g = new ClassG(PUBLIC, entityMirror.daoType).
- extendsType(new TypeRef(SqlDao.class).args(entityMirror.idType, entityMirror.type));
- Parameters p = new Parameters();
- ParameterRef c = p.addParameter(new TypeRef(Connection.class), "c");
- g.add(new Constructor(p, "super(" + c.name + ");"));
-
- TypeRef stringType = g.imports.add(String.class);
- TypeRef sqlEntityDescType = g.imports.add(SqlEntityMeta.class);
- TypeRef sqlException = g.imports.add(SQLException.class);
-
- FieldRef createTableSql = g.addPublicStaticFinalField(stringType, "createTableSql").
- value(toJavaString(entityMirror.createTableSql(sqlUnit)));
- g.add(new MethodRef(PUBLIC, stringType, "createTableSql", "return createTableSql;"));
- FieldRef dropTableSql = g.addPublicStaticFinalField(stringType, "dropTableSql").
- value(toJavaString(entityMirror.dropTableSql()));
- g.add(new MethodRef(PUBLIC, stringType, "dropTableSql", "return dropTableSql;"));
- g.addPublicStaticFinalField(stringType, "insertIntoSql").
- value(toJavaString(entityMirror.insertIntoSql(sqlUnit)));
- g.addPublicStaticFinalField(stringType, "deleteFromSql").
- value(toJavaString(entityMirror.deleteFromSql()));
- String desc = "new " + sqlEntityDescType + "(" +
- toJavaString(entityMirror.tableName) + ", " +
- toJavaString(entityMirror.defaultFields()) + ", " +
- createTableSql.name + ", " +
- dropTableSql.name +
- ")";
- g.addPublicStaticFinalField(sqlEntityDescType, "desc").value(desc);
- ClassG.InnerClassG typedQuery = g.addInnerClass(entityMirror.queryType(g.imports));
- g.addInnerClass(entityMirror.utils(sqlUnit));
-
- {
- p = new Parameters();
- ParameterRef rs = p.addParameter(new TypeRef(ResultSet.class), "rs");
- g.add(new MethodRef(PUBLIC, entityMirror.type, "fromResultSet", p,
- "return Utils.fromResultSet" + entityMirror.type.className + "(" + rs.name + ");").
- exception(sqlException));
- }
-
- {
- p = new Parameters();
- ParameterRef entity = p.addParameter(entityMirror.type, "entity");
- g.add(new MethodRef(PUBLIC, VOID, "insert", p,
- "Utils.insert" + entityMirror.type.className + "(super.c, " + entity.name + ");").
- exception(sqlException));
- }
-
- {
- p = new Parameters();
- ParameterRef id = p.addParameter(entityMirror.idType, "id");
- g.add(new MethodRef(PUBLIC, entityMirror.type, "selectById", p,
- "return Utils.select" + entityMirror.type.className + "ById(super.c, " + id.name + ");").
- exception(sqlException));
- }
-
- {
- p = new Parameters();
- ParameterRef entity = p.addParameter(entityMirror.type, "entity");
- g.add(new MethodRef(PUBLIC, VOID, "delete", p,
- "Utils.delete" + entityMirror.type.className + "(super.c, " + entity.name + ");").
- exception(sqlException));
- }
-
- {
- p = new Parameters();
- ParameterRef id = p.addParameter(entityMirror.idType, "id");
- g.add(new MethodRef(PUBLIC, VOID, "deleteById", p,
- "Utils.delete" + entityMirror.type.className + "ById(super.c, " + id.name + ");").
- exception(sqlException));
- }
-
- {
- p = new Parameters();
- ParameterRef entity = p.addParameter(entityMirror.type, "entity");
- g.add(new MethodRef(PUBLIC, VOID, "update", p,
- "Utils.update" + entityMirror.type.className + "(super.c, " + entity.name + ");").
- exception(sqlException));
- }
-
- return g;
- }
-
public FieldMirror fromElement(GeneratorConfiguration generatorConfiguration, VariableElement var,
ExecutableElement getter, ExecutableElement setter) {
// TODO: check the setter for annotations too
@@ -401,7 +307,8 @@ public class EntityHandler extends AbstractHandler {
public void phase3(boolean errorRaised) throws Exception {
try {
for (EntityMirror entity : sqlUnit.getEntities().values()) {
- writeFile(processingEnv, phase3(entity), sqlUnit.element(entity));
+ DaoGenerator daoGenerator = new DaoGenerator(generatorConfiguration, sqlUnit, entity);
+ writeFile(processingEnv, daoGenerator.generate(), sqlUnit.element(entity));
}
} catch (CompilerException | InternalErrorException e) {
// Ignore any exceptions if we had an error from before