From e78c0a1e4a4ebc71502dceccc9ae640862b7ce9e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 11 Aug 2013 22:35:02 +0200 Subject: o Overhauling inheritance, adding a decent start of support for @MappedSuperclass. --- .../persistence/generators/DaoGenerator.java | 49 +++++++++------------- 1 file changed, 19 insertions(+), 30 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoGenerator.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoGenerator.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoGenerator.java index c260a48..7cd3f59 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoGenerator.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoGenerator.java @@ -1,6 +1,5 @@ package io.trygvis.persistence.generators; -import io.trygvis.container.compiler.NotImplementedException; import io.trygvis.container.compiler.SqlUnitModel; import io.trygvis.container.compiler.model.ClassG; import io.trygvis.container.compiler.model.Constructor; @@ -123,7 +122,7 @@ public class DaoGenerator { Parameters parameters = new Parameters(); List body = new ArrayList<>(); - for (FieldMirror field : entity.fields) { + for (FieldMirror field : entity.getFields()) { TypeRef type; if (field.fieldType == PRIMITIVE) { type = field.type; @@ -142,7 +141,7 @@ public class DaoGenerator { public String createTableSql() { List columns = new ArrayList<>(); - for (FieldMirror field : entity.fields) { + for (FieldMirror field : entity.getFields()) { String s; if (field.fieldType == PRIMITIVE) { TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); @@ -156,18 +155,14 @@ public class DaoGenerator { } } else if (field.fieldType == REFERENCE) { EntityMirror referenced = unit.get(field.type); - if (referenced.idFields.size() == 1) { - FieldMirror idField = referenced.idFields.get(0); - TypeHandler typeHandler = generatorConfiguration.typeHandler(idField.type); - s = " " + field.sqlName + " " + typeHandler.sqlType(field); - s += " REFERENCES " + referenced.tableName + "(" + idField.sqlName + ")"; - if (field.notNull) { - s += " NOT NULL"; - } else if (field.unique) { - s += " UNIQUE"; - } - } else { - throw new NotImplementedException(); + FieldMirror idField = referenced.getIdField(); + TypeHandler typeHandler = generatorConfiguration.typeHandler(idField.type); + s = " " + field.sqlName + " " + typeHandler.sqlType(field); + s += " REFERENCES " + referenced.tableName + "(" + idField.sqlName + ")"; + if (field.notNull) { + s += " NOT NULL"; + } else if (field.unique) { + s += " UNIQUE"; } } else { throw new RuntimeException("Unknown field type: " + field.getClass()); @@ -187,7 +182,7 @@ public class DaoGenerator { public String insertIntoSql() { List columns = new ArrayList<>(); List values = new ArrayList<>(); - for (FieldMirror field : entity.fields) { + for (FieldMirror field : entity.getFields()) { columns.add(field.sqlName); if (field.id) { values.add("nextval('" + unit.getDefaultSequence().sequenceName + "')"); @@ -202,9 +197,7 @@ public class DaoGenerator { public String deleteFromSql() { List ss = new ArrayList<>(); - for (FieldMirror field : entity.idFields) { - ss.add(field.sqlName + "=?"); - } + ss.add(entity.getIdField().sqlName + "=?"); return "DELETE FROM " + entity.tableName + " WHERE " + join(ss, " AND ") + ";"; } @@ -221,12 +214,8 @@ public class DaoGenerator { body.add(entityListType + " list = runQuery(new Preparator() {"); body.add(" @Override"); body.add(" public void prepare(" + preparedStatementType.plainName + " stmt) throws " + sqlExceptionType + " {"); - List idFields = entity.idFields; - for (int i = 0; i < idFields.size(); i++) { - FieldMirror field = idFields.get(i); - TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); - body.add(" stmt." + typeHandler.setter(i + 1, idP.name) + ";"); - } + TypeHandler typeHandler = generatorConfiguration.typeHandler(entity.getIdField().type); + body.add(" stmt." + typeHandler.setter(1, idP.name) + ";"); body.add(" }"); body.add("}, sql);"); body.add("if (list.isEmpty()) {"); @@ -257,8 +246,8 @@ public class DaoGenerator { List body = new ArrayList<>(); List fields = new ArrayList<>(); - for (int i = 0; i < entity.fields.size(); i++) { - FieldMirror field = entity.fields.get(i); + for (int i = 0; i < entity.getFields().size(); i++) { + FieldMirror field = entity.getFields().get(i); String getter; TypeRef type; @@ -290,8 +279,8 @@ public class DaoGenerator { List body = new ArrayList<>(); List cArgs = new ArrayList<>(); List method = new ArrayList<>(); - for (int i = 0; i < this.entity.fields.size(); i++) { - FieldMirror field = this.entity.fields.get(i); + for (int i = 0; i < entity.getFields().size(); i++) { + FieldMirror field = this.entity.getFields().get(i); String value; if (field.fieldType == PRIMITIVE) { @@ -330,7 +319,7 @@ public class DaoGenerator { public String defaultFields() { List names = new ArrayList<>(); - for (FieldMirror field : entity.fields) { + for (FieldMirror field : entity.getFields()) { names.add(field.sqlName); } -- cgit v1.2.3