[jOOQ/jOOQ#13143] Add code generation flags to turn off the recognition
of jOOQ-specific types
This commit is contained in:
parent
36c71d4c61
commit
ed778cf7b3
@ -153,6 +153,10 @@ abstract class AbstractGenerator implements Generator {
|
||||
boolean generateVarargsSetters = true;
|
||||
String generateFullyQualifiedTypes = "";
|
||||
boolean generateJavaTimeTypes = true;
|
||||
boolean generateSpatialTypes = true;
|
||||
boolean generateXmlTypes = true;
|
||||
boolean generateJsonTypes = true;
|
||||
boolean generateIntervalTypes = true;
|
||||
boolean generateTableValuedFunctions = false;
|
||||
boolean generateEmptyCatalogs = false;
|
||||
boolean generateEmptySchemas = false;
|
||||
@ -1183,6 +1187,46 @@ abstract class AbstractGenerator implements Generator {
|
||||
this.generateJavaTimeTypes = generateJavaTimeTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateSpatialTypes() {
|
||||
return generateSpatialTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateSpatialTypes(boolean generateSpatialTypes) {
|
||||
this.generateSpatialTypes = generateSpatialTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateXmlTypes() {
|
||||
return generateXmlTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateXmlTypes(boolean generateXmlTypes) {
|
||||
this.generateXmlTypes = generateXmlTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateJsonTypes() {
|
||||
return generateJsonTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateJsonTypes(boolean generateJsonTypes) {
|
||||
this.generateJsonTypes = generateJsonTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateIntervalTypes() {
|
||||
return generateIntervalTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGenerateIntervalTypes(boolean generateIntervalTypes) {
|
||||
this.generateIntervalTypes = generateIntervalTypes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generateEmptyCatalogs() {
|
||||
return generateEmptyCatalogs;
|
||||
|
||||
@ -877,6 +877,14 @@ public class GenerationTool {
|
||||
generator.setGenerateFullyQualifiedTypes(g.getGenerate().getFullyQualifiedTypes());
|
||||
if (g.getGenerate().isJavaTimeTypes() != null)
|
||||
generator.setGenerateJavaTimeTypes(g.getGenerate().isJavaTimeTypes());
|
||||
if (g.getGenerate().isSpatialTypes() != null)
|
||||
generator.setGenerateSpatialTypes(g.getGenerate().isSpatialTypes());
|
||||
if (g.getGenerate().isXmlTypes() != null)
|
||||
generator.setGenerateXmlTypes(g.getGenerate().isXmlTypes());
|
||||
if (g.getGenerate().isJsonTypes() != null)
|
||||
generator.setGenerateJsonTypes(g.getGenerate().isJsonTypes());
|
||||
if (g.getGenerate().isIntervalTypes() != null)
|
||||
generator.setGenerateIntervalTypes(g.getGenerate().isIntervalTypes());
|
||||
if (g.getGenerate().isEmptyCatalogs() != null)
|
||||
generator.setGenerateEmptyCatalogs(g.getGenerate().isEmptyCatalogs());
|
||||
if (g.getGenerate().isEmptySchemas() != null)
|
||||
|
||||
@ -42,10 +42,15 @@ import java.io.Serializable;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.jooq.Constants;
|
||||
import org.jooq.JSON;
|
||||
import org.jooq.JSONB;
|
||||
import org.jooq.Spatial;
|
||||
import org.jooq.XML;
|
||||
import org.jooq.meta.Database;
|
||||
import org.jooq.meta.jaxb.GeneratedAnnotationType;
|
||||
import org.jooq.meta.jaxb.GeneratedSerialVersionUID;
|
||||
import org.jooq.meta.jaxb.VisibilityModifier;
|
||||
import org.jooq.types.Interval;
|
||||
|
||||
/**
|
||||
* The Generator provides a basic interface for java code generation
|
||||
@ -1065,6 +1070,52 @@ public interface Generator {
|
||||
*/
|
||||
void setGenerateJavaTimeTypes(boolean generateJavaTimeTypes);
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link Spatial} type support should be
|
||||
* enabled.
|
||||
*/
|
||||
boolean generateSpatialTypes();
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link Spatial} type support should be
|
||||
* enabled.
|
||||
*/
|
||||
void setGenerateSpatialTypes(boolean generateSpatialTypes);
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link XML} type support should be enabled.
|
||||
*/
|
||||
boolean generateXmlTypes();
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link XML} type support should be enabled.
|
||||
*/
|
||||
void setGenerateXmlTypes(boolean generateXmlTypes);
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link JSON} and {@link JSONB} type support
|
||||
* should be enabled.
|
||||
*/
|
||||
boolean generateJsonTypes();
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link JSON} and {@link JSONB} type support
|
||||
* should be enabled.
|
||||
*/
|
||||
void setGenerateJsonTypes(boolean generateJsonTypes);
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link Interval} type support should be
|
||||
* enabled.
|
||||
*/
|
||||
boolean generateIntervalTypes();
|
||||
|
||||
/**
|
||||
* A flag indicating whether the {@link Interval} type support should be
|
||||
* enabled.
|
||||
*/
|
||||
void setGenerateIntervalTypes(boolean generateJsonTypes);
|
||||
|
||||
/**
|
||||
* Whether empty catalogs should still be generated.
|
||||
*/
|
||||
|
||||
@ -8998,7 +8998,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
// Try finding a basic standard SQL type according to the current dialect
|
||||
else {
|
||||
try {
|
||||
Class<?> clazz = mapJavaTimeTypes(getDataType(db, t, p, s)).getType();
|
||||
Class<?> clazz = mapTypes(getDataType(db, t, p, s)).getType();
|
||||
if (scala && clazz == byte[].class)
|
||||
type = "scala.Array[scala.Byte]";
|
||||
else if (kotlin && clazz == byte[].class)
|
||||
@ -9086,7 +9086,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
String sqlDataTypeRef;
|
||||
|
||||
try {
|
||||
dataType = mapJavaTimeTypes(getDataType(db, t, p, s));
|
||||
dataType = mapTypes(getDataType(db, t, p, s));
|
||||
}
|
||||
|
||||
// Mostly because of unsupported data types.
|
||||
@ -9218,11 +9218,11 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
return typed.getType().isNullable() ? "?" : "";
|
||||
}
|
||||
|
||||
private DataType<?> mapJavaTimeTypes(DataType<?> dataType) {
|
||||
private DataType<?> mapTypes(DataType<?> dataType) {
|
||||
DataType<?> result = dataType;
|
||||
|
||||
// [#4429] [#5713] This logic should be implemented in Configuration
|
||||
if (dataType.isDateTime() && generateJavaTimeTypes) {
|
||||
if (dataType.isDateTime() && generateJavaTimeTypes()) {
|
||||
if (dataType.getType() == Date.class)
|
||||
result = SQLDataType.LOCALDATE;
|
||||
else if (dataType.getType() == Time.class)
|
||||
@ -9231,6 +9231,15 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
result = SQLDataType.LOCALDATETIME;
|
||||
}
|
||||
|
||||
// [#13143] Turn off support for some types
|
||||
else if (
|
||||
dataType.isSpatial() && !generateSpatialTypes() ||
|
||||
dataType.isJSON() && !generateJsonTypes() ||
|
||||
dataType.isXML() && !generateXmlTypes() ||
|
||||
dataType.isInterval() && !generateIntervalTypes()
|
||||
)
|
||||
result = SQLDataType.OTHER;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -212,6 +212,14 @@ public class Generate implements Serializable, XMLAppendable
|
||||
protected Boolean emptySchemas = false;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean javaTimeTypes = true;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean spatialTypes = true;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean xmlTypes = true;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean jsonTypes = true;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean intervalTypes = true;
|
||||
@XmlElement(defaultValue = "\\n")
|
||||
@XmlJavaTypeAdapter(StringAdapter.class)
|
||||
protected String newline = "\\n";
|
||||
@ -2338,6 +2346,102 @@ public class Generate implements Serializable, XMLAppendable
|
||||
this.javaTimeTypes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* A flag indicating whether the spatial type support should be enabled.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isSpatialTypes() {
|
||||
return spatialTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the spatialTypes property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setSpatialTypes(Boolean value) {
|
||||
this.spatialTypes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* A flag indicating whether the XML type support should be enabled.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isXmlTypes() {
|
||||
return xmlTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the xmlTypes property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setXmlTypes(Boolean value) {
|
||||
this.xmlTypes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* A flag indicating whether the JSON type support should be enabled.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isJsonTypes() {
|
||||
return jsonTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the jsonTypes property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setJsonTypes(Boolean value) {
|
||||
this.jsonTypes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* A flag indicating whether the INTERVAL type support should be enabled.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isIntervalTypes() {
|
||||
return intervalTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the intervalTypes property.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setIntervalTypes(Boolean value) {
|
||||
this.intervalTypes = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n
|
||||
*
|
||||
@ -2868,6 +2972,26 @@ public class Generate implements Serializable, XMLAppendable
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withSpatialTypes(Boolean value) {
|
||||
setSpatialTypes(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withXmlTypes(Boolean value) {
|
||||
setXmlTypes(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withJsonTypes(Boolean value) {
|
||||
setJsonTypes(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Generate withIntervalTypes(Boolean value) {
|
||||
setIntervalTypes(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n
|
||||
*
|
||||
@ -2986,6 +3110,10 @@ public class Generate implements Serializable, XMLAppendable
|
||||
builder.append("emptyCatalogs", emptyCatalogs);
|
||||
builder.append("emptySchemas", emptySchemas);
|
||||
builder.append("javaTimeTypes", javaTimeTypes);
|
||||
builder.append("spatialTypes", spatialTypes);
|
||||
builder.append("xmlTypes", xmlTypes);
|
||||
builder.append("jsonTypes", jsonTypes);
|
||||
builder.append("intervalTypes", intervalTypes);
|
||||
builder.append("newline", newline);
|
||||
builder.append("indentation", indentation);
|
||||
builder.append("printMarginForBlockComment", printMarginForBlockComment);
|
||||
@ -3811,6 +3939,42 @@ public class Generate implements Serializable, XMLAppendable
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (spatialTypes == null) {
|
||||
if (other.spatialTypes!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!spatialTypes.equals(other.spatialTypes)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (xmlTypes == null) {
|
||||
if (other.xmlTypes!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!xmlTypes.equals(other.xmlTypes)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (jsonTypes == null) {
|
||||
if (other.jsonTypes!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!jsonTypes.equals(other.jsonTypes)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (intervalTypes == null) {
|
||||
if (other.intervalTypes!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!intervalTypes.equals(other.intervalTypes)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (newline == null) {
|
||||
if (other.newline!= null) {
|
||||
return false;
|
||||
@ -3934,6 +4098,10 @@ public class Generate implements Serializable, XMLAppendable
|
||||
result = ((prime*result)+((emptyCatalogs == null)? 0 :emptyCatalogs.hashCode()));
|
||||
result = ((prime*result)+((emptySchemas == null)? 0 :emptySchemas.hashCode()));
|
||||
result = ((prime*result)+((javaTimeTypes == null)? 0 :javaTimeTypes.hashCode()));
|
||||
result = ((prime*result)+((spatialTypes == null)? 0 :spatialTypes.hashCode()));
|
||||
result = ((prime*result)+((xmlTypes == null)? 0 :xmlTypes.hashCode()));
|
||||
result = ((prime*result)+((jsonTypes == null)? 0 :jsonTypes.hashCode()));
|
||||
result = ((prime*result)+((intervalTypes == null)? 0 :intervalTypes.hashCode()));
|
||||
result = ((prime*result)+((newline == null)? 0 :newline.hashCode()));
|
||||
result = ((prime*result)+((indentation == null)? 0 :indentation.hashCode()));
|
||||
result = ((prime*result)+((printMarginForBlockComment == null)? 0 :printMarginForBlockComment.hashCode()));
|
||||
|
||||
@ -1999,6 +1999,22 @@ source code generator, rather than JDBC's java.sql types.
|
||||
<p>
|
||||
This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+ ]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="spatialTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the spatial type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="xmlTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the XML type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="jsonTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the JSON type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="intervalTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the INTERVAL type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="newline" type="string" default="\n" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user