[jOOQ/jOOQ#17063] Update DataType.isXYZ() Javadoc with new types

This commit is contained in:
Lukas Eder 2024-08-14 11:40:55 +02:00
parent aa3fbda55d
commit 044cebb85b
9 changed files with 142 additions and 5 deletions

View File

@ -181,6 +181,7 @@ abstract class AbstractGenerator implements Generator {
boolean generateXmlTypes = true;
boolean generateJsonTypes = true;
boolean generateIntervalTypes = true;
boolean generateDecfloatTypes = true;
boolean generateTableValuedFunctions = false;
boolean generateEmptyCatalogs = false;
boolean generateEmptySchemas = false;
@ -1444,6 +1445,16 @@ abstract class AbstractGenerator implements Generator {
this.generateIntervalTypes = generateIntervalTypes;
}
@Override
public boolean generateDecfloatTypes() {
return generateDecfloatTypes;
}
@Override
public void setGenerateDecfloatTypes(boolean generateDecfloatTypes) {
this.generateDecfloatTypes = generateDecfloatTypes;
}
@Override
public boolean generateEmptyCatalogs() {
return generateEmptyCatalogs;

View File

@ -961,6 +961,8 @@ public class GenerationTool {
generator.setGenerateJsonTypes(g.getGenerate().isJsonTypes());
if (g.getGenerate().isIntervalTypes() != null)
generator.setGenerateIntervalTypes(g.getGenerate().isIntervalTypes());
if (g.getGenerate().isDecfloatTypes() != null)
generator.setGenerateDecfloatTypes(g.getGenerate().isDecfloatTypes());
if (g.getGenerate().isEmptyCatalogs() != null)
generator.setGenerateEmptyCatalogs(g.getGenerate().isEmptyCatalogs());
if (g.getGenerate().isEmptySchemas() != null)

View File

@ -43,6 +43,7 @@ import java.util.Locale;
import org.jooq.Condition;
import org.jooq.Constants;
import org.jooq.Decfloat;
import org.jooq.Generated;
import org.jooq.JSON;
import org.jooq.JSONB;
@ -1354,7 +1355,19 @@ public interface Generator {
* A flag indicating whether the {@link Interval} type support should be
* enabled.
*/
void setGenerateIntervalTypes(boolean generateJsonTypes);
void setGenerateIntervalTypes(boolean generateIntervalTypes);
/**
* A flag indicating whether the {@link Decfloat} type support should be
* enabled.
*/
boolean generateDecfloatTypes();
/**
* A flag indicating whether the {@link Decfloat} type support should be
* enabled.
*/
void setGenerateDecfloatTypes(boolean generateDecfloatTypes);
/**
* Whether empty catalogs should still be generated.

View File

@ -11097,7 +11097,8 @@ public class JavaGenerator extends AbstractGenerator {
dataType.isSpatial() && !generateSpatialTypes() ||
dataType.isJSON() && !generateJsonTypes() ||
dataType.isXML() && !generateXmlTypes() ||
dataType.isInterval() && !generateIntervalTypes()
dataType.isInterval() && !generateIntervalTypes() ||
dataType.isFloat() && dataType.isDecimal() && !generateDecfloatTypes()
)
result = SQLDataType.OTHER;

View File

@ -254,6 +254,8 @@ public class Generate implements Serializable, XMLAppendable
protected Boolean jsonTypes = true;
@XmlElement(defaultValue = "true")
protected Boolean intervalTypes = true;
@XmlElement(defaultValue = "true")
protected Boolean decfloatTypes = true;
@XmlElement(defaultValue = "\\n")
@XmlJavaTypeAdapter(StringAdapter.class)
protected String newline = "\\n";
@ -2935,6 +2937,30 @@ public class Generate implements Serializable, XMLAppendable
this.intervalTypes = value;
}
/**
* A flag indicating whether the DECFLOAT type support should be enabled.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isDecfloatTypes() {
return decfloatTypes;
}
/**
* A flag indicating whether the DECFLOAT type support should be enabled.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setDecfloatTypes(Boolean value) {
this.decfloatTypes = value;
}
/**
* The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n
*
@ -4184,6 +4210,15 @@ public class Generate implements Serializable, XMLAppendable
return this;
}
/**
* A flag indicating whether the DECFLOAT type support should be enabled.
*
*/
public Generate withDecfloatTypes(Boolean value) {
setDecfloatTypes(value);
return this;
}
/**
* The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n
*
@ -4392,6 +4427,7 @@ public class Generate implements Serializable, XMLAppendable
builder.append("xmlTypes", xmlTypes);
builder.append("jsonTypes", jsonTypes);
builder.append("intervalTypes", intervalTypes);
builder.append("decfloatTypes", decfloatTypes);
builder.append("newline", newline);
builder.append("indentation", indentation);
builder.append("printMarginForBlockComment", printMarginForBlockComment);
@ -5413,6 +5449,15 @@ public class Generate implements Serializable, XMLAppendable
return false;
}
}
if (decfloatTypes == null) {
if (other.decfloatTypes!= null) {
return false;
}
} else {
if (!decfloatTypes.equals(other.decfloatTypes)) {
return false;
}
}
if (newline == null) {
if (other.newline!= null) {
return false;
@ -5620,6 +5665,7 @@ public class Generate implements Serializable, XMLAppendable
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)+((decfloatTypes == null)? 0 :decfloatTypes.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()));

View File

@ -2976,6 +2976,10 @@ This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+ ]]></jxb
<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="decfloatTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the DECFLOAT 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>

View File

@ -1322,6 +1322,7 @@ public interface DataType<T> extends Named {
* <li> {@link SQLDataType#DECIMAL}</li>
* <li> {@link SQLDataType#DECIMAL_INTEGER}</li>
* <li> {@link SQLDataType#NUMERIC}</li>
* <li> {@link SQLDataType#DECFLOAT}</li>
* </ul>
*
* @see #isNumeric()
@ -1349,10 +1350,24 @@ public interface DataType<T> extends Named {
* <li> {@link SQLDataType#FLOAT}</li>
* <li> {@link SQLDataType#DOUBLE}</li>
* <li> {@link SQLDataType#REAL}</li>
* <li> {@link SQLDataType#DECFLOAT}</li>
* </ul>
*/
boolean isFloat();
/**
* Whether this data type is any decimal numeric data type.
* <p>
* This applies to any of these types:
* <ul>
* <li> {@link SQLDataType#DECIMAL}</li>
* <li> {@link SQLDataType#DECIMAL_INTEGER}</li>
* <li> {@link SQLDataType#NUMERIC}</li>
* <li> {@link SQLDataType#DECFLOAT}</li>
* </ul>
*/
boolean isDecimal();
/**
* Whether this data type is any boolean data type.
* <p>
@ -1408,6 +1423,7 @@ public interface DataType<T> extends Named {
* <li> {@link SQLDataType#OFFSETTIME}</li>
* <li> {@link SQLDataType#OFFSETDATETIME}</li>
* <li> {@link SQLDataType#INSTANT}</li>
* <li> {@link SQLDataType#YEAR}</li>
* </ul>
*
* @see #isDate()
@ -1460,6 +1476,8 @@ public interface DataType<T> extends Named {
* <li> {@link SQLDataType#LOCALDATETIME}</li>
* <li> {@link SQLDataType#OFFSETTIME}</li>
* <li> {@link SQLDataType#OFFSETDATETIME}</li>
* <li> {@link SQLDataType#INSTANT}</li>
* <li> {@link SQLDataType#YEAR}</li>
* <li> {@link YearToSecond}</li>
* <li> {@link YearToMonth}</li>
* <li> {@link DayToSecond}</li>

View File

@ -52,7 +52,7 @@ import org.jetbrains.annotations.Nullable;
* <code>data() == null</code>. This is consistent with jOOQ's general way of
* returning <code>NULL</code> from {@link Result} and {@link Record} methods.
*/
public class Decfloat implements Data {
public final class Decfloat extends Number implements Data {
private final String data;
private transient BigDecimal coefficient;
@ -97,6 +97,34 @@ public class Decfloat implements Data {
return data == null ? null : decfloat(data);
}
// ------------------------------------------------------------------------
// The Number API
// ------------------------------------------------------------------------
@Override
public final double doubleValue() {
return Double.valueOf(data);
}
@Override
public final float floatValue() {
return Float.valueOf(data);
}
@Override
public final int intValue() {
return (int) doubleValue();
}
@Override
public final long longValue() {
return (long) doubleValue();
}
// ------------------------------------------------------------------------
// The Object API
// ------------------------------------------------------------------------
@Override
public int hashCode() {
parse();
@ -156,7 +184,7 @@ public class Decfloat implements Data {
return String.valueOf(data);
}
private void parse() {
private final void parse() {
if (coefficient != null || special != null)
return;

View File

@ -73,6 +73,7 @@ import static org.jooq.impl.QOM.GenerationOption.VIRTUAL;
import static org.jooq.impl.SQLDataType.BLOB;
import static org.jooq.impl.SQLDataType.CHAR;
import static org.jooq.impl.SQLDataType.CLOB;
import static org.jooq.impl.SQLDataType.LONGNVARCHAR;
import static org.jooq.impl.SQLDataType.NCHAR;
import static org.jooq.impl.SQLDataType.NCLOB;
import static org.jooq.impl.SQLDataType.NVARCHAR;
@ -114,6 +115,7 @@ import org.jooq.ContextConverter;
import org.jooq.Converter;
import org.jooq.ConverterContext;
import org.jooq.DataType;
import org.jooq.Decfloat;
import org.jooq.Domain;
import org.jooq.EmbeddableRecord;
import org.jooq.EnumType;
@ -863,6 +865,14 @@ implements
return Number.class.isAssignableFrom(tType0()) && !isInterval();
}
@Override
public final boolean isDecimal() {
Class<?> tType = tType0();
return BigInteger.class == tType
|| BigDecimal.class == tType
|| Decfloat.class == tType;
}
@Override
public final boolean isInteger() {
Class<?> tType = tType0();
@ -879,6 +889,7 @@ implements
Class<?> tType = tType0();
return Float.class == tType
|| Double.class == tType
|| Decfloat.class == tType
;
}
@ -898,11 +909,14 @@ implements
return t == NCHAR
|| t == NCLOB
|| t == NVARCHAR
|| t == LONGNVARCHAR
// [#9540] [#10368] In case the constant literals haven't been initialised yet
|| NCHAR == null && "nchar".equals(t.typeName0())
|| NCLOB == null && "nclob".equals(t.typeName0())
|| NVARCHAR == null && "nvarchar".equals(t.typeName0());
|| NVARCHAR == null && "nvarchar".equals(t.typeName0())
|| LONGNVARCHAR == null && "longnvarchar".equals(t.typeName0())
;
}
@Override