summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/persistence
diff options
context:
space:
mode:
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/EntityMirror.java11
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java2
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/SequenceMirror.java30
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java32
4 files changed, 69 insertions, 6 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 f1970f7..f0f4ae7 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
@@ -111,7 +111,7 @@ public class EntityMirror implements Comparable<EntityMirror> {
for (FieldMirror field : fields) {
columns.add(field.sqlName);
if (field.id) {
- values.add("nextval('" + unit.getDefaultSequence().name + "')");
+ values.add("nextval('" + unit.getDefaultSequence().sequenceName + "')");
} else {
values.add("?");
}
@@ -162,7 +162,12 @@ public class EntityMirror implements Comparable<EntityMirror> {
if (field.fieldType == PRIMITIVE) {
TypeHandler typeHandler = generatorConfiguration.typeHandler(field.type);
- String access = o.name + "." + field.javaName;
+ String access;
+ if (field.accessorType == FIELD) {
+ access = o.name + "." + field.javaName;
+ } else {
+ access = o.name + "." + toGetterName(field.javaName) + "()";
+ }
String setter = " stmt." + typeHandler.setter(i, access) + ";";
if (field.notNull) {
@@ -283,7 +288,6 @@ public class EntityMirror implements Comparable<EntityMirror> {
body.add(field.type + " " + field.javaName + " = null;");
}
names.add(field.javaName);
- i++;
}
body.add(type + " returnValue = new " + type + "(" + join(names, ", ") + ");");
@@ -305,7 +309,6 @@ public class EntityMirror implements Comparable<EntityMirror> {
body.add("returnValue." + toSetterName(field.javaName) + "(" + null + ");");
}
names.add(field.javaName);
- i++;
}
body.add("return returnValue;");
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java
index 37d8146..9df6c35 100644
--- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java
@@ -17,6 +17,8 @@ public class GeneratorConfiguration {
typeHandlers.put(new TypeRef(Long.class), new TypeHandler.LongTypeHandler());
typeHandlers.put(new TypeRef(String.class), new TypeHandler.StringTypeHandler());
typeHandlers.put(new TypeRef(Date.class), new TypeHandler.DateTypeHandler());
+ typeHandlers.put(new TypeRef("org.joda.time.DateTime"), new TypeHandler.JodaDateTimeTypeHandler());
+ typeHandlers.put(new TypeRef("java.util.UUID"), new TypeHandler.UuidTypeHandler());
primitiveTypeHandlers.putAll(typeHandlers);
}
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/SequenceMirror.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/SequenceMirror.java
index 9ae6781..6a9da6c 100644
--- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/SequenceMirror.java
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/SequenceMirror.java
@@ -1,9 +1,35 @@
package io.trygvis.persistence;
-public class SequenceMirror {
+public class SequenceMirror implements Comparable<SequenceMirror> {
public final String name;
+ public final String sequenceName;
+ public final int initialValue;
+ public final int allocationSize;
- public SequenceMirror(String name) {
+ public SequenceMirror(String name, String sequenceName, int initialValue, int allocationSize) {
this.name = name;
+ this.sequenceName = sequenceName;
+ this.initialValue = initialValue == 0 ? 10000 : initialValue;
+ this.allocationSize = allocationSize == 0 ? 1000 : allocationSize;
+ }
+
+ @Override
+ public int compareTo(@SuppressWarnings("NullableProblems") SequenceMirror o) {
+ return name.compareTo(o.name);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof SequenceMirror)) return false;
+
+ SequenceMirror that = (SequenceMirror) o;
+
+ return name.equals(that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return name.hashCode();
}
}
diff --git a/container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java b/container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java
index 72941f2..31eba4b 100644
--- a/container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java
+++ b/container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java
@@ -116,4 +116,36 @@ public abstract class TypeHandler {
return "new java.util.Date(" + rs + ".getTimestamp(" + i + ").getTime())";
}
}
+
+ public static class JodaDateTimeTypeHandler extends TypeHandler {
+ protected JodaDateTimeTypeHandler() {
+ super("TIMESTAMP", TIMESTAMP);
+ }
+
+ @Override
+ public String setter(int i, String expr) {
+ return "setTimestamp(" + i + ", new java.sql.Timestamp(" + expr + ".getTime()))";
+ }
+
+ @Override
+ public String getter(String rs, int i) {
+ return "new org.joda.time.DateTime(" + rs + ".getTimestamp(" + i + ").getTime())";
+ }
+ }
+
+ public static class UuidTypeHandler extends TypeHandler {
+ protected UuidTypeHandler() {
+ super("CHAR(36)", CHAR);
+ }
+
+ @Override
+ public String setter(int i, String expr) {
+ return "setString(" + i + ", " + expr + ".toString())";
+ }
+
+ @Override
+ public String getter(String rs, int i) {
+ return "java.util.UUID.fromString(" + rs + ".getString(" + i + "))";
+ }
+ }
}