[#7386] org.jooq.Parser should generate in-memory enum types

This commit is contained in:
lukaseder 2018-04-04 23:12:06 +03:00
parent 0031a344c6
commit 3bfe2471c0

View File

@ -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()
)
;
}
// -----------------------------------------------------------------------------------------------------------------