summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java53
1 files changed, 31 insertions, 22 deletions
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java
index e06855f..48f8adc 100644
--- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java
@@ -74,7 +74,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
} else if (field instanceof ReferenceFieldMirror) {
ReferenceFieldMirror ref = (ReferenceFieldMirror) field;
EntityMirror referenced = unit.get(ref.type);
- if(referenced.idFields.size() == 1) {
+ if (referenced.idFields.size() == 1) {
FieldMirror idField = referenced.idFields.get(0);
TypeHandler typeHandler = generatorConfiguration.typeHandler(idField.type);
s = " " + field.sqlName + " " + typeHandler.sqlType(field);
@@ -84,8 +84,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
} else if (field.unique) {
s += " UNIQUE";
}
- }
- else {
+ } else {
throw new NotImplementedException();
}
} else {
@@ -103,16 +102,20 @@ public class EntityMirror implements Comparable<EntityMirror> {
return "DROP TABLE " + tableName + ";";
}
- public String insertIntoSql() {
- List<String> names = new ArrayList<>();
- List<String> placeholders = new ArrayList<>();
+ public String insertIntoSql(SqlUnitModel unit) {
+ List<String> columns = new ArrayList<>();
+ List<String> values = new ArrayList<>();
for (FieldMirror field : fields) {
- names.add(field.sqlName);
- placeholders.add("?");
+ columns.add(field.sqlName);
+ if (field.id) {
+ values.add("nextval('" + unit.getDefaultSequence().name + "')");
+ } else {
+ values.add("?");
+ }
}
- return "INSERT INTO " + tableName + "(" + join(names, ", ") + ") " +
- "VALUES(" + join(placeholders, ", ") + ");";
+ return "INSERT INTO " + tableName + "(" + join(columns, ", ") + ") " +
+ "VALUES(" + join(values, ", ") + ");";
}
public String deleteFromSql() {
@@ -145,20 +148,26 @@ public class EntityMirror implements Comparable<EntityMirror> {
List<String> body = new ArrayList<>();
body.add("try(" + psType + " stmt = " + con.name + ".prepareStatement(insertIntoSql)) {");
- for (int i = 0; i < fields.size(); i++) {
- FieldMirror field = fields.get(i);
- if(field instanceof PrimitiveFieldMirror) {
+ int i = 0;
+ for (FieldMirror field : fields) {
+ // Assume all ID fields are generated for now.
+ if (field.id) {
+ continue;
+ }
+
+ i++;
+
+ if (field instanceof PrimitiveFieldMirror) {
TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type);
String access = o.name + "." + field.javaName;
- String setter = " stmt." + typeHandler.setter(i + 1, access) + ";";
+ String setter = " stmt." + typeHandler.setter(i, access) + ";";
- if(field.notNull) {
+ if (field.notNull) {
body.add(setter);
- }
- else {
+ } else {
body.add(" " + field.type + " " + field.javaName + " = " + access + ";");
body.add(" if(" + field.javaName + " == null) {");
- body.add(" stmt.setNull(" + (i + 1) + ", " + typesType + "." + typeHandler.typeName() + ");");
+ body.add(" stmt.setNull(" + i + ", " + typesType + "." + typeHandler.typeName() + ");");
body.add(" } else {");
body.add(" " + setter);
body.add(" }");
@@ -168,7 +177,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
EntityMirror referenced = unit.get(ref.type);
FieldMirror idField = referenced.getIdField();
TypeHandler typeHandler = generatorConfiguration.typeHandler(idField.type);
- body.add(" stmt." + typeHandler.setter(i + 1, o.name + "." + field.javaName + "." + idField.javaName) + ";");
+ body.add(" stmt." + typeHandler.setter(i, o.name + "." + field.javaName + "." + idField.javaName) + ";");
}
}
body.add(" stmt.executeUpdate();");
@@ -231,7 +240,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
return typedQuery;
}
- public MethodRef query(SqlUnitModel sqlUnit, Imports imports) {
+ public MethodRef query(Imports imports) {
TypeRef conType = imports.add(Connection.class);
TypeRef typedQueryType = imports.add(TypedQuery.class).args(type);
TypeRef entityTypedQuery = new TypeRef(type.className + "TypedQuery");
@@ -244,7 +253,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
return new MethodRef(PUBLIC | STATIC, typedQueryType, "query", p, body);
}
- public MethodRef fromResultSet(SqlUnitModel unit, Imports g) {
+ public MethodRef fromResultSet(Imports g) {
TypeRef rsType = g.add(ResultSet.class);
Parameters p = new Parameters();
ParameterRef rs = p.addParameter(rsType, "rs");
@@ -253,7 +262,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
List<String> names = new ArrayList<>();
for (int i = 0; i < fields.size(); i++) {
FieldMirror field = fields.get(i);
- if(field instanceof PrimitiveFieldMirror) {
+ if (field instanceof PrimitiveFieldMirror) {
TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type);
body.add(field.type + " " + field.javaName + " = " + typeHandler.getter(rs.name, i + 1) + ";");
} else if (field instanceof ReferenceFieldMirror) {