[#3784] Add additional <global[XXX]References/> flags to prevent

generation of individual reference classes
This commit is contained in:
lukaseder 2015-01-05 18:31:20 +01:00
parent fad02d294f
commit 5d7beb98ee
5 changed files with 143 additions and 23 deletions

View File

@ -52,22 +52,26 @@ import java.util.Set;
*/
abstract class AbstractGenerator implements Generator {
boolean generateDeprecated = true;
boolean generateRelations = true;
boolean generateInstanceFields = true;
boolean generateGeneratedAnnotation = true;
boolean useSchemaVersionProvider = false;
boolean generateRecords = true;
boolean generatePojos = false;
boolean generatePojosEqualsAndHashCode = false;
boolean generateImmutablePojos = false;
boolean generateInterfaces = false;
boolean generateDaos = false;
boolean generateJPAAnnotations = false;
boolean generateValidationAnnotations = false;
boolean generateGlobalObjectReferences = true;
boolean fluentSetters = false;
String fullyQualifiedTypes = "";
boolean generateDeprecated = true;
boolean generateRelations = true;
boolean generateInstanceFields = true;
boolean generateGeneratedAnnotation = true;
boolean useSchemaVersionProvider = false;
boolean generateRecords = true;
boolean generatePojos = false;
boolean generatePojosEqualsAndHashCode = false;
boolean generateImmutablePojos = false;
boolean generateInterfaces = false;
boolean generateDaos = false;
boolean generateJPAAnnotations = false;
boolean generateValidationAnnotations = false;
boolean generateGlobalObjectReferences = true;
boolean generateGlobalRoutineReferences = true;
boolean generateGlobalSequenceReferences = true;
boolean generateGlobalTableReferences = true;
boolean generateGlobalUDTReferences = true;
boolean fluentSetters = false;
String fullyQualifiedTypes = "";
protected GeneratorStrategyWrapper strategy;
@ -220,6 +224,46 @@ abstract class AbstractGenerator implements Generator {
this.generateGlobalObjectReferences = generateGlobalObjectReferences;
}
@Override
public boolean generateGlobalRoutineReferences() {
return generateGlobalRoutineReferences;
}
@Override
public void setGenerateGlobalRoutineReferences(boolean generateGlobalRoutineReferences) {
this.generateGlobalRoutineReferences = generateGlobalRoutineReferences;
}
@Override
public boolean generateGlobalSequenceReferences() {
return generateGlobalSequenceReferences;
}
@Override
public void setGenerateGlobalSequenceReferences(boolean generateGlobalSequenceReferences) {
this.generateGlobalSequenceReferences = generateGlobalSequenceReferences;
}
@Override
public boolean generateGlobalTableReferences() {
return generateGlobalTableReferences;
}
@Override
public void setGenerateGlobalTableReferences(boolean generateGlobalTableReferences) {
this.generateGlobalTableReferences = generateGlobalTableReferences;
}
@Override
public boolean generateGlobalUDTReferences() {
return generateGlobalUDTReferences;
}
@Override
public void setGenerateGlobalUDTReferences(boolean generateGlobalUDTReferences) {
this.generateGlobalUDTReferences = generateGlobalUDTReferences;
}
@Override
public boolean fluentSetters() {
return fluentSetters;

View File

@ -393,6 +393,14 @@ public class GenerationTool {
generator.setGenerateValidationAnnotations(g.getGenerate().isValidationAnnotations());
if (g.getGenerate().isGlobalObjectReferences() != null)
generator.setGenerateGlobalObjectReferences(g.getGenerate().isGlobalObjectReferences());
if (g.getGenerate().isGlobalRoutineReferences() != null)
generator.setGenerateGlobalRoutineReferences(g.getGenerate().isGlobalRoutineReferences());
if (g.getGenerate().isGlobalSequenceReferences() != null)
generator.setGenerateGlobalSequenceReferences(g.getGenerate().isGlobalSequenceReferences());
if (g.getGenerate().isGlobalTableReferences() != null)
generator.setGenerateGlobalTableReferences(g.getGenerate().isGlobalTableReferences());
if (g.getGenerate().isGlobalUDTReferences() != null)
generator.setGenerateGlobalUDTReferences(g.getGenerate().isGlobalUDTReferences());
if (g.getGenerate().isFluentSetters() != null)
generator.setFluentSetters(g.getGenerate().isFluentSetters());
if (g.getGenerate().isPojosEqualsAndHashCode() != null)

View File

@ -192,6 +192,46 @@ public interface Generator {
*/
void setGenerateGlobalObjectReferences(boolean generateGlobalObjectReferences);
/**
* Whether global routine references should be generated
*/
boolean generateGlobalRoutineReferences();
/**
* Whether global routine references should be generated
*/
void setGenerateGlobalRoutineReferences(boolean globalRoutineReferences);
/**
* Whether global sequence references should be generated
*/
boolean generateGlobalSequenceReferences();
/**
* Whether global sequence references should be generated
*/
void setGenerateGlobalSequenceReferences(boolean globalSequenceReferences);
/**
* Whether global table references should be generated
*/
boolean generateGlobalTableReferences();
/**
* Whether global table references should be generated
*/
void setGenerateGlobalTableReferences(boolean globalTableReferences);
/**
* Whether global UDT references should be generated
*/
boolean generateGlobalUDTReferences();
/**
* Whether global UDT references should be generated
*/
void setGenerateGlobalUDTReferences(boolean globalUDTReferences);
/**
* Whether fluent setters should be generated
*/

View File

@ -282,7 +282,7 @@ public class JavaGenerator extends AbstractGenerator {
// ----------------------------------------------------------------------
generateSchema(schema);
if (generateGlobalObjectReferences() && database.getSequences(schema).size() > 0) {
if (generateGlobalObjectReferences() && generateGlobalSequenceReferences() && database.getSequences(schema).size() > 0) {
generateSequences(schema);
}
@ -298,7 +298,7 @@ public class JavaGenerator extends AbstractGenerator {
generateDaos(schema);
}
if (generateGlobalObjectReferences() && database.getTables(schema).size() > 0) {
if (generateGlobalObjectReferences() && generateGlobalTableReferences() && database.getTables(schema).size() > 0) {
generateTableReferences(schema);
}
@ -334,7 +334,7 @@ public class JavaGenerator extends AbstractGenerator {
generateUDTRoutines(schema);
}
if (generateGlobalObjectReferences() && database.getUDTs(schema).size() > 0) {
if (generateGlobalObjectReferences() && generateGlobalUDTReferences() && database.getUDTs(schema).size() > 0) {
generateUDTReferences(schema);
}
@ -346,7 +346,7 @@ public class JavaGenerator extends AbstractGenerator {
generateEnums(schema);
}
if (database.getRoutines(schema).size() > 0 || hasTableValuedFunctions(schema)) {
if (generateGlobalObjectReferences() && generateGlobalRoutineReferences() && database.getRoutines(schema).size() > 0 || hasTableValuedFunctions(schema)) {
generateRoutines(schema);
}
@ -2367,7 +2367,7 @@ public class JavaGenerator extends AbstractGenerator {
out.tab(1).println("}");
// [#2255] Avoid referencing sequence literals, if they're not generated
if (generateGlobalObjectReferences()) {
if (generateGlobalObjectReferences() && generateGlobalSequenceReferences()) {
printSchemaReferences(out, database.getSequences(schema), Sequence.class, true);
}

View File

@ -677,19 +677,47 @@
<element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of global object references, which include
Allow to turn off the generation of ALL global object references, which include
- Tables.java
- Sequences.java
- UDTs.java
- Routines.java
Turning off the generation of the above files may be necessary for very
large schemas, which exceed the amount of allowed constants in a class's
constant pool (64k) or, whose static initialiser would exceed 64k of
byte code
byte code.
Setting this flag to false will force all other global reference flags to be false:
- <globalTableReferences/>
- <globalSequenceReferences/>
- <globalUDTReferences/>
- <globalRoutineReferences/>
-->
<element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of global table references in Tables.java
-->
<element name="globalTableReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of global table references in Sequences.java
-->
<element name="globalSequenceReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of global table references in UDTs.java
-->
<element name="globalUDTReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of global table references in Routines.java
-->
<element name="globalRoutineReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate fluent setters in