From 9f6ece29210f1b2e7dd995b3ce5d63ef78c0f4ae Mon Sep 17 00:00:00 2001 From: lukaseder Date: Sun, 4 Sep 2016 21:55:51 +0200 Subject: [PATCH] [#5527] Add code generator flag to turn off the generation of routines --- .../java/org/jooq/util/AbstractGenerator.java | 11 +++++ .../java/org/jooq/util/GenerationTool.java | 2 + .../main/java/org/jooq/util/Generator.java | 10 ++++ .../java/org/jooq/util/JavaGenerator.java | 49 ++++++++++--------- .../main/resources/xsd/jooq-codegen-3.9.0.xsd | 5 ++ 5 files changed, 55 insertions(+), 22 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 fd785cf3e4..d0badad1e6 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java @@ -65,6 +65,7 @@ abstract class AbstractGenerator implements Generator { boolean generateGeneratedAnnotation = true; boolean useSchemaVersionProvider = false; boolean useCatalogVersionProvider = false; + boolean generateRoutines = true; boolean generateRecords = true; boolean generatePojos = false; boolean generatePojosEqualsAndHashCode = false; @@ -238,6 +239,16 @@ abstract class AbstractGenerator implements Generator { this.useCatalogVersionProvider = useCatalogVersionProvider; } + @Override + public boolean generateRoutines() { + return generateRoutines; + } + + @Override + public void setGenerateRoutines(boolean generateRoutines) { + this.generateRoutines = generateRoutines; + } + @Override public boolean generateRecords() { 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 2b0530320a..6c5a2278c5 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java @@ -461,6 +461,8 @@ public class GenerationTool { generator.setGenerateInstanceFields(g.getGenerate().isInstanceFields()); if (g.getGenerate().isGeneratedAnnotation() != null) generator.setGenerateGeneratedAnnotation(g.getGenerate().isGeneratedAnnotation()); + if (g.getGenerate().isRoutines() != null) + generator.setGenerateRoutines(g.getGenerate().isRoutines()); if (g.getGenerate().isRecords() != null) generator.setGenerateRecords(g.getGenerate().isRecords()); if (g.getGenerate().isPojos() != 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 4f04fbac56..540bd85a79 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java @@ -120,6 +120,16 @@ public interface Generator { boolean useCatalogVersionProvider(); void setUseCatalogVersionProvider(boolean useCatalogVersionProvider); + /** + * Whether Routines should be generated. + */ + boolean generateRoutines(); + + /** + * Whether Routines should be generated. + */ + void setGenerateRoutines(boolean generateRoutines); + /** * Whether TableRecords should be generated in addition to tables */ 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 fade4faf0b..c073710e41 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java @@ -217,6 +217,7 @@ public class JavaGenerator extends AbstractGenerator { log.info(" JPA annotations", generateJPAAnnotations()); log.info(" validation annotations", generateValidationAnnotations()); log.info(" instance fields", generateInstanceFields()); + log.info(" routines", generateRoutines()); log.info(" records", generateRecords() + ((!generateRecords && generateDaos) ? " (forced to true because of )" : "")); log.info(" pojos", generatePojos() @@ -406,7 +407,7 @@ public class JavaGenerator extends AbstractGenerator { generateUDTInterfaces(schema); } - if (database.getUDTs(schema).size() > 0) { + if (generateRoutines() && database.getUDTs(schema).size() > 0) { generateUDTRoutines(schema); } @@ -426,7 +427,7 @@ public class JavaGenerator extends AbstractGenerator { generateDomains(schema); } - if (generateGlobalObjectReferences() && generateGlobalRoutineReferences() && database.getRoutines(schema).size() > 0 || hasTableValuedFunctions(schema)) { + if (generateRoutines() && (database.getRoutines(schema).size() > 0 || hasTableValuedFunctions(schema))) { generateRoutines(schema); } @@ -2095,35 +2096,39 @@ public class JavaGenerator extends AbstractGenerator { protected void generateRoutines(SchemaDefinition schema) { log.info("Generating routines and table-valued functions"); - 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()); - printClassAnnotations(out, schema); + if (generateGlobalObjectReferences() && 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()); + printClassAnnotations(out, schema); - if (scala) - out.println("object Routines {"); - else - out.println("public class Routines {"); + if (scala) + out.println("object Routines {"); + else + out.println("public class Routines {"); + + for (RoutineDefinition routine : database.getRoutines(schema)) + printRoutine(out, routine); + + for (TableDefinition table : database.getTables(schema)) { + if (table.isTableValuedFunction()) { + printTableValuedFunction(out, table, getStrategy().getJavaMethodName(table, Mode.DEFAULT)); + } + } + + out.println("}"); + closeJavaWriter(out); + } for (RoutineDefinition routine : database.getRoutines(schema)) { - printRoutine(out, routine); - try { generateRoutine(schema, routine); - } catch (Exception e) { + } + catch (Exception e) { log.error("Error while generating routine " + routine, e); } } - for (TableDefinition table : database.getTables(schema)) { - if (table.isTableValuedFunction()) { - printTableValuedFunction(out, table, getStrategy().getJavaMethodName(table, Mode.DEFAULT)); - } - } - - out.println("}"); - closeJavaWriter(out); - watch.splitInfo("Routines generated"); } 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 639f13faa5..bf2bca4cca 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 @@ -725,6 +725,11 @@ --> + + +