From fd6f806608d1047296cbb1ae7ea4a989fe23553b Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 4 Aug 2013 20:09:06 +0200 Subject: wip o Adding support for enums. Will automatically use the name style, not ordinal. --- .../persistence/GeneratorConfiguration.java | 7 ---- .../java/io/trygvis/persistence/TypeHandler.java | 44 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 7 deletions(-) (limited to 'container-compiler-plugin/src/main/java/io/trygvis/persistence') 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 primitiveTypeHandlers = new TreeMap<>(); private final Map 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); -- cgit v1.2.3