From 3bfe2471c0cf5dfa12e5719a292fc797a14f180c Mon Sep 17 00:00:00 2001 From: lukaseder Date: Wed, 4 Apr 2018 23:12:06 +0300 Subject: [PATCH] [#7386] org.jooq.Parser should generate in-memory enum types --- .../main/java/org/jooq/impl/ParserImpl.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index b3349997ca..aaa89fbce4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -6747,7 +6747,28 @@ final class ParserImpl implements Parser { parse(ctx, ')'); // [#7025] TODO, replace this by a dynamic enum data type encoding, once available - return SQLDataType.VARCHAR(length); + String className = "GeneratedEnum" + (literals.hashCode() & 0x7FFFFFF); + return SQLDataType.VARCHAR(length) + + .asEnumDataType(Reflect + .compile( + "org.jooq.impl." + className, + "package org.jooq.impl;\n" + + "enum " + className + " implements org.jooq.EnumType {\n" + + " " + String.join(", ", literals) + ";\n" + + " @Override\n" + + " public String getName() {\n" + + " return getClass().getName();\n" + + " }\n" + + " @Override\n" + + " public String getLiteral() {\n" + + " return name();" + + " }\n" + + "}") + .get() + ) + + ; } // -----------------------------------------------------------------------------------------------------------------