diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
index ca9ffeccc8..d224643e56 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
@@ -1842,6 +1842,31 @@ public class JavaGenerator extends AbstractGenerator {
watch.splitInfo("Routines generated");
}
+ protected void printConstant(JavaWriter out, AttributeDefinition constant) {
+ final String constantType = out.ref(getJavaType(constant.getType()));
+ final String constantId = out.ref(getStrategy().getJavaIdentifier(constant));
+
+ out.tab(1).javadoc("The constant %s.", constant.getQualifiedOutputName());
+
+ if (scala) {
+ out.tab(1).println("val %s = %s.field(%s.name(\"%s\", \"%s\", \"%s\"), classOf[%s]);",
+ constantId, DSL.class, DSL.class,
+ constant.getSchema().getOutputName().replace("\"", "\\\""),
+ constant.getContainer().getOutputName().replace("\"", "\\\""),
+ constant.getOutputName().replace("\"", "\\\""),
+ constantType);
+ }
+ else {
+ out.tab(1).println("public static final %s<%s> %s = %s.field(%s.name(\"%s\", \"%s\", \"%s\"), %s.class);",
+ Field.class, constantType, constantId,
+ DSL.class, DSL.class,
+ constant.getSchema().getOutputName().replace("\"", "\\\""),
+ constant.getContainer().getOutputName().replace("\"", "\\\""),
+ constant.getOutputName().replace("\"", "\\\""),
+ constantType);
+ }
+ }
+
protected void printRoutine(JavaWriter out, RoutineDefinition routine) {
if (!routine.isSQLUsable()) {
@@ -1914,6 +1939,10 @@ public class JavaGenerator extends AbstractGenerator {
printSingletonInstance(out, pkg);
}
+ for (AttributeDefinition constant : pkg.getConstants()) {
+ printConstant(out, constant);
+ }
+
for (RoutineDefinition routine : pkg.getRoutines()) {
printRoutine(out, routine);
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractPackageDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractPackageDefinition.java
index f002ada0b7..cd6ba1571c 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractPackageDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractPackageDefinition.java
@@ -52,9 +52,10 @@ import org.jooq.tools.JooqLogger;
*/
public abstract class AbstractPackageDefinition extends AbstractDefinition implements PackageDefinition {
- private static final JooqLogger log = JooqLogger.getLogger(AbstractPackageDefinition.class);
+ private static final JooqLogger log = JooqLogger.getLogger(AbstractPackageDefinition.class);
- private List routines;
+ private List routines;
+ private List constants;
public AbstractPackageDefinition(SchemaDefinition schema, String name, String comment) {
super(schema.getDatabase(), schema, name, comment);
@@ -82,4 +83,22 @@ public abstract class AbstractPackageDefinition extends AbstractDefinition imple
}
protected abstract List getRoutines0() throws SQLException;
+
+ @Override
+ public final List getConstants() {
+ if (constants == null) {
+ constants = new ArrayList();
+
+ try {
+ constants = getConstants0();
+ }
+ catch (SQLException e) {
+ log.error("Error while initialising package", e);
+ }
+ }
+
+ return constants;
+ }
+
+ protected abstract List getConstants0() throws SQLException;
}
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractUDTDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractUDTDefinition.java
index 84322f001c..0ce3fdb793 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractUDTDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractUDTDefinition.java
@@ -40,6 +40,7 @@
*/
package org.jooq.util;
+import java.util.Collections;
import java.util.List;
/**
@@ -84,4 +85,9 @@ implements
}
protected abstract List getRoutines0();
+
+ @Override
+ public List getConstants() {
+ return Collections.emptyList();
+ }
}
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/PackageDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/PackageDefinition.java
index a0b3eeff08..a19c59928e 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/PackageDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/PackageDefinition.java
@@ -50,7 +50,12 @@ import java.util.List;
public interface PackageDefinition extends Definition {
/**
- * Fetch all routines from the package
+ * Fetch all routines from the package.
*/
List getRoutines();
+
+ /**
+ * Fetch all constants from the package.
+ */
+ List getConstants();
}