From cae2a726140ce13c491f75a3b9cb9bf37ea0b88d Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 6 Sep 2016 11:37:43 +0200 Subject: [PATCH] [#5526] Add code generator flag to turn off generation of UDTs --- .../java/org/jooq/util/AbstractGenerator.java | 27 +++++++++++----- .../java/org/jooq/util/GenerationTool.java | 2 ++ .../main/java/org/jooq/util/Generator.java | 10 ++++++ .../java/org/jooq/util/JavaGenerator.java | 32 ++++++++++--------- .../main/resources/xsd/jooq-codegen-3.9.0.xsd | 25 +++++++++------ 5 files changed, 63 insertions(+), 33 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java index 312efff54b..ef232a3bd3 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java @@ -67,6 +67,7 @@ abstract class AbstractGenerator implements Generator { boolean useCatalogVersionProvider = false; boolean generateRoutines = true; boolean generateSequences = true; + boolean generateUDTs = true; boolean generateTables = true; boolean generateRecords = true; boolean generatePojos = false; @@ -261,6 +262,16 @@ abstract class AbstractGenerator implements Generator { this.generateSequences = generateSequences; } + @Override + public boolean generateUDTs() { + return generateUDTs; + } + + @Override + public void setGenerateUDTs(boolean generateUDTs) { + this.generateUDTs = generateUDTs; + } + @Override public boolean generateTables() { @@ -380,7 +391,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalCatalogReferences() { - return generateGlobalCatalogReferences; + return generateGlobalObjectReferences() && generateGlobalCatalogReferences; } @Override @@ -390,7 +401,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalSchemaReferences() { - return generateGlobalSchemaReferences; + return generateGlobalObjectReferences() && generateGlobalSchemaReferences; } @Override @@ -400,7 +411,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalRoutineReferences() { - return generateGlobalRoutineReferences; + return generateRoutines() && generateGlobalObjectReferences() && generateGlobalRoutineReferences; } @Override @@ -410,7 +421,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalSequenceReferences() { - return generateGlobalSequenceReferences; + return generateSequences() && generateGlobalObjectReferences() && generateGlobalSequenceReferences; } @Override @@ -420,7 +431,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalTableReferences() { - return generateGlobalTableReferences; + return generateTables() && generateGlobalObjectReferences() && generateGlobalTableReferences; } @Override @@ -430,7 +441,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalUDTReferences() { - return generateGlobalUDTReferences; + return generateUDTs() && generateGlobalObjectReferences() && generateGlobalUDTReferences; } @Override @@ -440,7 +451,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalQueueReferences() { - return generateQueues && generateGlobalQueueReferences; + return generateQueues() && generateGlobalObjectReferences() && generateGlobalQueueReferences; } @Override @@ -450,7 +461,7 @@ abstract class AbstractGenerator implements Generator { @Override public boolean generateGlobalLinkReferences() { - return generateLinks && generateGlobalLinkReferences; + return generateLinks() && generateGlobalObjectReferences() && generateGlobalLinkReferences; } @Override diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java index ee5506e4af..1a2c3a9211 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java @@ -465,6 +465,8 @@ public class GenerationTool { generator.setGenerateRoutines(g.getGenerate().isRoutines()); if (g.getGenerate().isSequences() != null) generator.setGenerateSequences(g.getGenerate().isSequences()); + if (g.getGenerate().isUdts() != null) + generator.setGenerateUDTs(g.getGenerate().isUdts()); if (g.getGenerate().isTables() != null) generator.setGenerateTables(g.getGenerate().isTables()); if (g.getGenerate().isRecords() != null) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java index ec235092a9..f188e26075 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java @@ -140,6 +140,16 @@ public interface Generator { */ void setGenerateSequences(boolean generateSequences); + /** + * Whether UDTs should be generated. + */ + boolean generateUDTs(); + + /** + * Whether UDTs should be generated. + */ + void setGenerateUDTs(boolean generateUDTs); + /** * Whether Tables should be generated */ 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 89a8233bef..27384ced17 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java @@ -218,6 +218,7 @@ public class JavaGenerator extends AbstractGenerator { log.info(" validation annotations", generateValidationAnnotations()); log.info(" instance fields", generateInstanceFields()); log.info(" sequences", generateSequences()); + log.info(" udts", generateUDTs()); log.info(" routines", generateRoutines()); log.info(" tables", generateTables() + ((!generateTables && generateRecords) ? " (forced to true because of )" : @@ -364,7 +365,7 @@ public class JavaGenerator extends AbstractGenerator { // ---------------------------------------------------------------------- generateSchema(schema); - if (generateSequences() && generateGlobalObjectReferences() && generateGlobalSequenceReferences() && database.getSequences(schema).size() > 0) { + if (generateGlobalSequenceReferences() && database.getSequences(schema).size() > 0) { generateSequences(schema); } @@ -380,7 +381,7 @@ public class JavaGenerator extends AbstractGenerator { generateDaos(schema); } - if (generateTables() && generateGlobalObjectReferences() && generateGlobalTableReferences() && database.getTables(schema).size() > 0) { + if (generateGlobalTableReferences() && database.getTables(schema).size() > 0) { generateTableReferences(schema); } @@ -396,7 +397,7 @@ public class JavaGenerator extends AbstractGenerator { generateInterfaces(schema); } - if (database.getUDTs(schema).size() > 0) { + if (generateUDTs() && database.getUDTs(schema).size() > 0) { generateUDTs(schema); } @@ -404,7 +405,7 @@ public class JavaGenerator extends AbstractGenerator { generateUDTPojos(schema); } - if (database.getUDTs(schema).size() > 0) { + if (generateUDTs() && generateRecords() && database.getUDTs(schema).size() > 0) { generateUDTRecords(schema); } @@ -412,23 +413,23 @@ public class JavaGenerator extends AbstractGenerator { generateUDTInterfaces(schema); } - if (generateRoutines() && database.getUDTs(schema).size() > 0) { + if (generateUDTs() && generateRoutines() && database.getUDTs(schema).size() > 0) { generateUDTRoutines(schema); } - if (generateGlobalObjectReferences() && generateGlobalUDTReferences() && database.getUDTs(schema).size() > 0) { + if (generateGlobalUDTReferences() && database.getUDTs(schema).size() > 0) { generateUDTReferences(schema); } - if (database.getArrays(schema).size() > 0) { + if (generateUDTs() && database.getArrays(schema).size() > 0) { generateArrays(schema); } - if (database.getEnums(schema).size() > 0) { + if (generateUDTs() && database.getEnums(schema).size() > 0) { generateEnums(schema); } - if (database.getDomains(schema).size() > 0) { + if (generateUDTs() && database.getDomains(schema).size() > 0) { generateDomains(schema); } @@ -2101,7 +2102,7 @@ public class JavaGenerator extends AbstractGenerator { protected void generateRoutines(SchemaDefinition schema) { log.info("Generating routines and table-valued functions"); - if (generateGlobalObjectReferences() && generateGlobalRoutineReferences()) { + if (generateGlobalRoutineReferences()) { JavaWriter out = newJavaWriter(new File(getStrategy().getFile(schema).getParentFile(), "Routines.java")); printPackage(out, schema); printClassJavadoc(out, "Convenience access to all stored procedures and functions in " + schema.getOutputName()); @@ -3588,7 +3589,7 @@ public class JavaGenerator extends AbstractGenerator { } List schemas = new ArrayList(); - if (generateGlobalObjectReferences() && generateGlobalSchemaReferences()) { + if (generateGlobalSchemaReferences()) { for (SchemaDefinition schema : catalog.getSchemata()) { if (generateSchemaIfEmpty(schema)) { schemas.add(schema); @@ -3675,7 +3676,7 @@ public class JavaGenerator extends AbstractGenerator { out.tab(1).javadoc("The reference instance of %s", schemaName); out.tab(1).println("public static final %s %s = new %s();", className, schemaId, className); - if (generateTables() && generateGlobalObjectReferences() && generateGlobalTableReferences()) { + if (generateGlobalTableReferences()) { for (TableDefinition table : schema.getTables()) { final String tableClassName = out.ref(getStrategy().getFullJavaClassName(table)); final String tableId = getStrategy().getJavaIdentifier(table); @@ -3716,13 +3717,14 @@ public class JavaGenerator extends AbstractGenerator { } // [#2255] Avoid referencing sequence literals, if they're not generated - if (generateGlobalObjectReferences() && generateGlobalSequenceReferences()) + if (generateGlobalSequenceReferences()) printReferences(out, database.getSequences(schema), Sequence.class, true); - if (generateTables() && generateGlobalObjectReferences() && generateGlobalTableReferences()) + if (generateGlobalTableReferences()) printReferences(out, database.getTables(schema), Table.class, true); - printReferences(out, database.getUDTs(schema), UDT.class, true); + if (generateGlobalUDTReferences()) + printReferences(out, database.getUDTs(schema), UDT.class, true); generateSchemaClassFooter(schema, out); out.println("}"); diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.9.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.9.0.xsd index 57ec39d962..bb64ffe1ae 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.9.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.9.0.xsd @@ -735,6 +735,21 @@ --> + + + + + + + + + @@ -866,16 +881,6 @@ --> - - - - - -