summaryrefslogtreecommitdiff
path: root/container-compiler-plugin/src/main/java/io/trygvis/persistence
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2013-08-04 20:09:06 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2013-08-04 20:09:06 +0200
commitfd6f806608d1047296cbb1ae7ea4a989fe23553b (patch)
treebe38c3b783ad656605bdf8808aa32a497d0ebd0f /container-compiler-plugin/src/main/java/io/trygvis/persistence
parentf0a9ad191465bba0e7ddaea700d9667be699fec3 (diff)
downloadcontainer-playground-fd6f806608d1047296cbb1ae7ea4a989fe23553b.tar.gz
container-playground-fd6f806608d1047296cbb1ae7ea4a989fe23553b.tar.bz2
container-playground-fd6f806608d1047296cbb1ae7ea4a989fe23553b.tar.xz
container-playground-fd6f806608d1047296cbb1ae7ea4a989fe23553b.zip
wip
o Adding support for enums. Will automatically use the name style, not ordinal.
Diffstat (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence')
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/GeneratorConfiguration.java7
-rw-r--r--container-compiler-plugin/src/main/java/io/trygvis/persistence/TypeHandler.java44
2 files changed, 44 insertions, 7 deletions
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 48072de..3bf7b08 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
@@ -10,7 +10,6 @@ import java.util.TreeMap;
public class GeneratorConfiguration {
- private final Map<TypeRef, TypeHandler> primitiveTypeHandlers = new TreeMap<>();
private final Map<TypeRef, TypeHandler> typeHandlers = new TreeMap<>();
{
@@ -22,8 +21,6 @@ public class GeneratorConfiguration {
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);
}
public void addTypeHandler(TypeRef type, TypeHandler typeHandler) {
@@ -38,10 +35,6 @@ public class GeneratorConfiguration {
return typeHandler;
}
- public boolean isPrimitive(TypeRef type) {
- return primitiveTypeHandlers.containsKey(type);
- }
-
public boolean hasTypeHandler(TypeRef type) {
return typeHandlers.containsKey(type);
}
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 dfb2be3..f13018a 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
@@ -1,6 +1,7 @@
package io.trygvis.persistence;
import io.trygvis.container.compiler.InternalErrorException;
+import io.trygvis.container.compiler.model.TypeRef;
import java.lang.reflect.Field;
import java.sql.Types;
@@ -69,6 +70,49 @@ public abstract class TypeHandler {
}
}
+// public static class OrdinalEnumTypeHandler extends TypeHandler {
+// private final TypeRef enumType;
+// public OrdinalEnumTypeHandler(TypeRef enumType) {
+// super("INTEGER", INTEGER, true);
+// this.enumType = enumType;
+// }
+//
+// @Override
+// String setter(int i, String expr) {
+// return "setInt(" + i + ", " + expr + ".ordinal())";
+// }
+//
+// @Override
+// String getter(String rs, int i) {
+// return "int ordinal = -1; for (Gender v : Gender.values()) if (v.ordinal() == ordinal) return v;";
+// int ordinal = -1; for (EnumType v : EnumType.values()) if (v.ordinal() == ordinal) return v;
+// return enumType.plainName + ".ordinal(" + rs + ".getInt(" + i + "))";
+// }
+// }
+
+ public static class StringEnumTypeHandler extends TypeHandler {
+ private final TypeRef enumType;
+
+ public StringEnumTypeHandler(TypeRef enumType) {
+ super("VARCHAR", VARCHAR, true);
+ this.enumType = enumType;
+ }
+
+ @Override
+ String setter(int i, String expr) {
+ return "setString(" + i + ", " + expr + ".name())";
+ }
+
+ @Override
+ String getter(String rs, int i) {
+ return enumType.plainName + ".valueOf(" + rs + ".getString(" + i + "))";
+ }
+ }
+
+ // -----------------------------------------------------------------------
+ //
+ // -----------------------------------------------------------------------
+
public static class StringTypeHandler extends PrimitiveTypeHandler {
protected StringTypeHandler() {
super(null, VARCHAR, "String", true);