From 46cb0cef9303940ade51ffe16831f55ee9cd8e1f Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sat, 10 Aug 2013 18:28:36 +0200 Subject: o Start of loading referenced (singular) entities. --- .../persistence/generators/DaoUtilsGenerator.java | 136 ++++++++------------- 1 file changed, 49 insertions(+), 87 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoUtilsGenerator.java') diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoUtilsGenerator.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoUtilsGenerator.java index 115223a..2848c8e 100644 --- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoUtilsGenerator.java +++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/generators/DaoUtilsGenerator.java @@ -12,24 +12,17 @@ import io.trygvis.persistence.FieldMirror; import io.trygvis.persistence.GeneratorConfiguration; import io.trygvis.persistence.TypeHandler; import io.trygvis.persistence.sql.AbstractTypedQuery; -import io.trygvis.persistence.sql.FromResultSet; -import javax.persistence.TypedQuery; import java.sql.Connection; import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; import java.util.List; import static io.trygvis.container.compiler.Utils.toGetterName; -import static io.trygvis.container.compiler.Utils.toSetterName; -import static io.trygvis.persistence.FieldMirror.AccessorType.FIELD; -import static io.trygvis.persistence.FieldMirror.AccessorType.METHOD; import static io.trygvis.persistence.FieldMirror.FieldType.PRIMITIVE; -import static io.trygvis.persistence.FieldMirror.FieldType.REFERENCE; -import static io.trygvis.persistence.generators.GeneratorUtils.staticVersion; +import static io.trygvis.persistence.FieldMirror.GetterType; import static java.lang.reflect.Modifier.PUBLIC; import static java.lang.reflect.Modifier.STATIC; import static java.util.Collections.singletonList; @@ -51,14 +44,14 @@ public class DaoUtilsGenerator { ClassG g = new ClassG(PUBLIC | STATIC, entity.utilsType); g.add(insertInto(g.imports)); g.add(selectById(g.imports)); - g.add(selectWhere(g.imports)); +// g.add(selectWhere(g.imports)); g.add(update(g.imports)); g.add(delete(g.imports)); g.add(deleteById(g.imports)); - g.add(query(g.imports)); - MethodRef fromResultSet = fromResultSet(g.imports); - g.add(fromResultSet); - g.add(staticVersion(new TypeRef(FromResultSet.class).args(entity.type), "fromResultSet", fromResultSet, g.type)); +// g.add(query(g.imports)); +// MethodRef fromResultSet = fromResultSet(g.imports); +// g.add(fromResultSet); +// g.add(staticVersion(new TypeRef(FromResultSet.class).args(entity.type), "fromResultSet", fromResultSet, g.type)); return g; } @@ -123,20 +116,6 @@ public class DaoUtilsGenerator { "throw new UnsupportedOperationException(\"Not implemented\");"); } - public MethodRef selectWhere(Imports imports) { - TypeRef sqlExceptionType = imports.add(SQLException.class); - Parameters p = new Parameters(); - Parameters.ParameterRef c = p.addParameter(imports.add(Connection.class), "c"); - Parameters.ParameterRef where = p.addParameter(imports.add(String.class), "where"); - List body = new ArrayList<>(); - body.add("String sql = \"SELECT \" + desc.defaultFields + \" FROM " + entity.tableName + " WHERE \" + " + where.name + " + \";\";"); - body.add("return runQuery(" + c.name + ", sql, " + entity.utilsType + ".fromResultSet" + entity.type.className + ");"); - - TypeRef listOfEntityType = new TypeRef(List.class).args(entity.type); - return new MethodRef(PUBLIC | STATIC, listOfEntityType, "select" + entity.type.className + "Where", p, body). - exception(sqlExceptionType); - } - public MethodRef update(Imports imports) { Parameters p = new Parameters(); p.addParameter(imports.add(Connection.class), "c"); @@ -155,7 +134,7 @@ public class DaoUtilsGenerator { List arguments = new ArrayList<>(); arguments.add(con.name); for (FieldMirror field : entity.idFields) { - if (field.accessorType == FIELD) { + if (field.getterType == GetterType.FIELD) { arguments.add(o.name + "." + field.javaName); } else { arguments.add(o.name + "." + toGetterName(field.javaName) + "()"); @@ -200,66 +179,49 @@ public class DaoUtilsGenerator { ClassG g = new ClassG(PUBLIC | STATIC, entityTypedQuery). extendsType(sqlQueryType). add(constructor); - p = new Parameters(); - Parameters.ParameterRef rs = p.addParameter(new TypeRef(ResultSet.class), "rs"); - MethodRef fromResultSet = new MethodRef(PUBLIC, entity.type, "fromResultSet", p, - "return " + entity.utilsType.className + ".fromResultSet" + entity.type.className + "(" + rs.name + ");"). - exception(sqlExceptionType); - g.add(fromResultSet); return g; } - public MethodRef query(Imports imports) { - TypeRef conType = imports.add(Connection.class); - TypeRef typedQueryType = imports.add(TypedQuery.class).args(entity.type); - TypeRef entityTypedQuery = new TypeRef(entity.type.className + "TypedQuery"); - - Parameters p = new Parameters(); - Parameters.ParameterRef c = p.addParameter(conType, "c"); - return new MethodRef(PUBLIC | STATIC, typedQueryType, "query" + entity.type.className, p, - "return new " + entityTypedQuery + "(" + c.name + ");"); - } - - public MethodRef fromResultSet(Imports g) { - TypeRef rsType = g.add(ResultSet.class); - Parameters p = new Parameters(); - Parameters.ParameterRef rs = p.addParameter(rsType, "rs"); - - List body = new ArrayList<>(); - List names = new ArrayList<>(); - for (int i = 0; i < entity.fields.size(); i++) { - FieldMirror field = entity.fields.get(i); - if (field.accessorType != FIELD) { - continue; - } - if (field.fieldType == PRIMITIVE) { - TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); - body.add(field.type + " " + field.javaName + " = " + typeHandler.getter(rs.name, i + 1) + ";"); - } else if (field.fieldType == REFERENCE) { - body.add(field.type + " " + field.javaName + " = null;"); - } - names.add(field.javaName); - } - - body.add(entity.type + " returnValue = new " + entity.type + "(" + join(names, ", ") + ");"); - - for (int i = 0; i < entity.fields.size(); i++) { - FieldMirror field = entity.fields.get(i); - if (field.accessorType != METHOD) { - continue; - } - if (field.fieldType == PRIMITIVE) { - TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); - body.add("returnValue." + toSetterName(field.javaName) + "(" + typeHandler.getter(rs.name, i + 1) + ");"); - } else if (field.fieldType == REFERENCE) { - body.add("returnValue." + toSetterName(field.javaName) + "(" + null + ");"); - } - names.add(field.javaName); - } - - body.add("return returnValue;"); - - return new MethodRef(PUBLIC | STATIC, entity.type, "fromResultSet" + entity.type.className, p, body). - exception(g.add(SQLException.class)); - } +// public MethodRef fromResultSet(Imports g) { +// TypeRef rsType = g.add(ResultSet.class); +// Parameters p = new Parameters(); +// Parameters.ParameterRef rs = p.addParameter(rsType, "rs"); +// +// List body = new ArrayList<>(); +// List names = new ArrayList<>(); +// for (int i = 0; i < entity.fields.size(); i++) { +// FieldMirror field = entity.fields.get(i); +// if (field.accessorType != FIELD) { +// continue; +// } +// if (field.fieldType == PRIMITIVE) { +// TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); +// body.add(field.type + " " + field.javaName + " = " + typeHandler.getter(rs.name, i + 1) + ";"); +// } else if (field.fieldType == REFERENCE) { +// body.add(field.type + " " + field.javaName + " = null;"); +// } +// names.add(field.javaName); +// } +// +// body.add(entity.type + " returnValue = new " + entity.type + "(" + join(names, ", ") + ");"); +// +// for (int i = 0; i < entity.fields.size(); i++) { +// FieldMirror field = entity.fields.get(i); +// if (field.accessorType != METHOD) { +// continue; +// } +// if (field.fieldType == PRIMITIVE) { +// TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type); +// body.add("returnValue." + toSetterName(field.javaName) + "(" + typeHandler.getter(rs.name, i + 1) + ");"); +// } else if (field.fieldType == REFERENCE) { +// body.add("returnValue." + toSetterName(field.javaName) + "(" + null + ");"); +// } +// names.add(field.javaName); +// } +// +// body.add("return returnValue;"); +// +// return new MethodRef(PUBLIC | STATIC, entity.type, "fromResultSet" + entity.type.className, p, body). +// exception(g.add(SQLException.class)); +// } } -- cgit v1.2.3