[#5526] Add code generator flag to turn off generation of UDTs

This commit is contained in:
lukaseder 2016-09-06 11:37:43 +02:00
parent ac5ec261be
commit cae2a72614
5 changed files with 63 additions and 33 deletions

View File

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

View File

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

View File

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

View File

@ -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 <records/>)" :
@ -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<SchemaDefinition> schemas = new ArrayList<SchemaDefinition>();
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 <code>%s</code>", 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("}");

View File

@ -735,6 +735,21 @@
-->
<element name="sequences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate UDT classes.
-->
<element name="udts" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of queue related code
-->
<element name="queues" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of link related code
-->
<element name="links" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate Table classes.
-->
@ -866,16 +881,6 @@
-->
<element name="globalLinkReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of queue related code
-->
<element name="queues" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Allow to turn off the generation of link related code
-->
<element name="links" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
<!--
Generate fluent setters in