[jOOQ/jOOQ#9629] Add "sequenceFlags" option to code generator

The `<generate>` element now has a `<sequenceFlags>` element which can
be used to disable the sequence flags generation, which is enabled by
default.
This commit is contained in:
Knut Wannheden 2019-12-05 14:29:09 +01:00
parent 791ed71c5b
commit aa963f3010
6 changed files with 84 additions and 12 deletions

View File

@ -70,6 +70,7 @@ abstract class AbstractGenerator implements Generator {
boolean useCatalogVersionProvider = false;
boolean generateRoutines = true;
boolean generateSequences = true;
boolean generateSequenceFlags = true;
boolean generateUDTs = true;
boolean generateTables = true;
boolean generateEmbeddables = true;
@ -335,6 +336,16 @@ abstract class AbstractGenerator implements Generator {
this.generateSequences = generateSequences;
}
@Override
public boolean generateSequenceFlags() {
return generateSequenceFlags;
}
@Override
public void setGenerateSequenceFlags(boolean generateSequenceFlags) {
this.generateSequenceFlags = generateSequenceFlags;
}
@Override
public boolean generateUDTs() {
return generateUDTs;

View File

@ -653,6 +653,8 @@ public class GenerationTool {
generator.setGenerateRoutines(g.getGenerate().isRoutines());
if (g.getGenerate().isSequences() != null)
generator.setGenerateSequences(g.getGenerate().isSequences());
if (g.getGenerate().isSequenceFlags() != null)
generator.setGenerateSequenceFlags(g.getGenerate().isSequenceFlags());
if (g.getGenerate().isUdts() != null)
generator.setGenerateUDTs(g.getGenerate().isUdts());
if (g.getGenerate().isTables() != null)

View File

@ -182,6 +182,16 @@ public interface Generator {
*/
void setGenerateSequences(boolean generateSequences);
/**
* Whether sequence flags should be generated.
*/
boolean generateSequenceFlags();
/**
* Whether sequence flags should be generated.
*/
void setGenerateSequenceFlags(boolean generateSequenceFlags);
/**
* Whether UDTs should be generated.
*/

View File

@ -357,6 +357,7 @@ public class JavaGenerator extends AbstractGenerator {
+ ((!generateRecords && generateDaos) ? " (forced to true because of <daos/>)" : ""));
log.info(" routines", generateRoutines());
log.info(" sequences", generateSequences());
log.info(" sequenceFlags", generateSequenceFlags());
log.info(" table-valued functions", generateTableValuedFunctions());
log.info(" tables", generateTables()
+ ((!generateTables && generateRecords) ? " (forced to true because of <records/>)" :
@ -4623,6 +4624,8 @@ public class JavaGenerator extends AbstractGenerator {
if (!printDeprecationIfUnknownType(out, seqTypeFull))
out.tab(1).javadoc("The sequence <code>%s</code>", sequence.getQualifiedOutputName());
boolean flags = generateSequenceFlags();
if (scala)
out.tab(1).println("val %s : %s[%s] = %s.createSequence(\"%s\", %s, %s, %s, %s, %s, %s, %s, %s)",
seqId,
@ -4632,12 +4635,12 @@ public class JavaGenerator extends AbstractGenerator {
seqName,
schemaId,
typeRef,
sequence.getStartWith() != null ? sequence.getStartWith() + "L" : "null",
sequence.getIncrementBy() != null ? sequence.getIncrementBy() + "L" : "null",
sequence.getMinvalue() != null ? sequence.getMinvalue() + "L" : "null",
sequence.getMaxvalue() != null ? sequence.getMaxvalue() + "L" : "null",
sequence.getCycle(),
sequence.getCache() != null ? sequence.getCache() + "L" : "null");
flags && sequence.getStartWith() != null ? sequence.getStartWith() + "L" : "null",
flags && sequence.getIncrementBy() != null ? sequence.getIncrementBy() + "L" : "null",
flags && sequence.getMinvalue() != null ? sequence.getMinvalue() + "L" : "null",
flags && sequence.getMaxvalue() != null ? sequence.getMaxvalue() + "L" : "null",
flags && sequence.getCycle(),
flags && sequence.getCache() != null ? sequence.getCache() + "L" : "null");
else
out.tab(1).println("public static final %s<%s> %s = %s.<%s> createSequence(\"%s\", %s, %s, %s, %s, %s, %s, %s, %s);",
Sequence.class,
@ -4648,12 +4651,12 @@ public class JavaGenerator extends AbstractGenerator {
seqName,
schemaId,
typeRef,
sequence.getStartWith() != null ? sequence.getStartWith() + "L" : "null",
sequence.getIncrementBy() != null ? sequence.getIncrementBy() + "L" : "null",
sequence.getMinvalue() != null ? sequence.getMinvalue() + "L" : "null",
sequence.getMaxvalue() != null ? sequence.getMaxvalue() + "L" : "null",
sequence.getCycle(),
sequence.getCache() != null ? sequence.getCache() + "L" : "null"
flags && sequence.getStartWith() != null ? sequence.getStartWith() + "L" : "null",
flags && sequence.getIncrementBy() != null ? sequence.getIncrementBy() + "L" : "null",
flags && sequence.getMinvalue() != null ? sequence.getMinvalue() + "L" : "null",
flags && sequence.getMaxvalue() != null ? sequence.getMaxvalue() + "L" : "null",
flags && sequence.getCycle(),
flags && sequence.getCache() != null ? sequence.getCache() + "L" : "null"
);
}

View File

@ -35,6 +35,8 @@ public class Generate implements Serializable, XMLAppendable
@XmlElement(defaultValue = "true")
protected Boolean relations = true;
@XmlElement(defaultValue = "true")
protected Boolean sequenceFlags = true;
@XmlElement(defaultValue = "true")
protected Boolean implicitJoinPathsToOne = true;
@XmlElement(defaultValue = "true")
protected Boolean deprecated = true;
@ -215,6 +217,30 @@ public class Generate implements Serializable, XMLAppendable
this.relations = value;
}
/**
* Sequence flags should be generated and used.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isSequenceFlags() {
return sequenceFlags;
}
/**
* Sets the value of the sequenceFlags property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setSequenceFlags(Boolean value) {
this.sequenceFlags = value;
}
/**
* Generate implicit join path constructors on generated tables for outgoing foreign key relationships (to-one relationships)
*
@ -1758,6 +1784,11 @@ public class Generate implements Serializable, XMLAppendable
return this;
}
public Generate withSequenceFlags(Boolean value) {
setSequenceFlags(value);
return this;
}
public Generate withImplicitJoinPathsToOne(Boolean value) {
setImplicitJoinPathsToOne(value);
return this;
@ -2107,6 +2138,7 @@ public class Generate implements Serializable, XMLAppendable
public final void appendTo(XMLBuilder builder) {
builder.append("indexes", indexes);
builder.append("relations", relations);
builder.append("sequenceFlags", sequenceFlags);
builder.append("implicitJoinPathsToOne", implicitJoinPathsToOne);
builder.append("deprecated", deprecated);
builder.append("deprecationOnUnknownTypes", deprecationOnUnknownTypes);
@ -2210,6 +2242,15 @@ public class Generate implements Serializable, XMLAppendable
return false;
}
}
if (sequenceFlags == null) {
if (other.sequenceFlags!= null) {
return false;
}
} else {
if (!sequenceFlags.equals(other.sequenceFlags)) {
return false;
}
}
if (implicitJoinPathsToOne == null) {
if (other.implicitJoinPathsToOne!= null) {
return false;
@ -2795,6 +2836,7 @@ public class Generate implements Serializable, XMLAppendable
int result = 1;
result = ((prime*result)+((indexes == null)? 0 :indexes.hashCode()));
result = ((prime*result)+((relations == null)? 0 :relations.hashCode()));
result = ((prime*result)+((sequenceFlags == null)? 0 :sequenceFlags.hashCode()));
result = ((prime*result)+((implicitJoinPathsToOne == null)? 0 :implicitJoinPathsToOne.hashCode()));
result = ((prime*result)+((deprecated == null)? 0 :deprecated.hashCode()));
result = ((prime*result)+((deprecationOnUnknownTypes == null)? 0 :deprecationOnUnknownTypes.hashCode()));

View File

@ -1096,6 +1096,10 @@ type. If provided, both "includeExpression" and "includeTypes" must match.]]></j
This is a prerequisite for various advanced features]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="sequenceFlags" type="boolean" default="true" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Sequence flags should be generated and used.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="implicitJoinPathsToOne" type="boolean" default="true" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors on generated tables for outgoing foreign key relationships (to-one relationships)]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>