[#5527] Add code generator flag to turn off the generation of routines

This commit is contained in:
lukaseder 2016-09-04 21:55:51 +02:00
parent be266d6e8c
commit 9f6ece2921
5 changed files with 55 additions and 22 deletions

View File

@ -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() {

View File

@ -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)

View File

@ -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
*/

View File

@ -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 <daos/>)" : ""));
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");
}

View File

@ -725,6 +725,11 @@
-->
<element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate Routine classes.
-->
<element name="routines" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate TableRecord classes. Disable this when you don't
need the additional type-safety