[#6411] Code generator should generate VARCHAR(length) and NUMBER(precision, scale) method
This commit is contained in:
parent
ab65e8d532
commit
97b3c857d3
@ -160,6 +160,17 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
*/
|
||||
private static final Map<DataType<?>, String> SQLDATATYPE_LITERAL_LOOKUP;
|
||||
|
||||
/**
|
||||
* [#6411] A set providing access to SQLDataTypes that can have length.
|
||||
*/
|
||||
private static final Set<String> SQLDATATYPE_WITH_LENGTH;
|
||||
|
||||
/**
|
||||
* [#6411] A set providing access to SQLDataTypes that can have precision
|
||||
* (and scale).
|
||||
*/
|
||||
private static final Set<String> SQLDATATYPE_WITH_PRECISION;
|
||||
|
||||
/**
|
||||
* An overall stop watch to measure the speed of source code generation
|
||||
*/
|
||||
@ -202,6 +213,8 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
|
||||
static {
|
||||
SQLDATATYPE_LITERAL_LOOKUP = new IdentityHashMap<DataType<?>, String>();
|
||||
SQLDATATYPE_WITH_LENGTH = new HashSet<String>();
|
||||
SQLDATATYPE_WITH_PRECISION = new HashSet<String>();
|
||||
|
||||
try {
|
||||
for (java.lang.reflect.Field f : SQLDataType.class.getFields()) {
|
||||
@ -210,6 +223,21 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
Modifier.isFinal(f.getModifiers()))
|
||||
SQLDATATYPE_LITERAL_LOOKUP.put((DataType<?>) f.get(SQLDataType.class), f.getName());
|
||||
}
|
||||
|
||||
for (java.lang.reflect.Method m : SQLDataType.class.getMethods()) {
|
||||
if (Modifier.isPublic(m.getModifiers()) &&
|
||||
Modifier.isStatic(m.getModifiers()) &&
|
||||
m.getParameterCount() == 2)
|
||||
SQLDATATYPE_WITH_PRECISION.add(m.getName());
|
||||
}
|
||||
|
||||
for (java.lang.reflect.Method m : SQLDataType.class.getMethods()) {
|
||||
if (Modifier.isPublic(m.getModifiers()) &&
|
||||
Modifier.isStatic(m.getModifiers()) &&
|
||||
m.getParameterCount() == 1 &&
|
||||
!SQLDATATYPE_WITH_PRECISION.contains(m.getName()))
|
||||
SQLDATATYPE_WITH_LENGTH.add(m.getName());
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.warn(e);
|
||||
@ -5657,16 +5685,26 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
sb.append(sqlDataTypeRef);
|
||||
|
||||
if (dataType.hasPrecision() && p > 0) {
|
||||
sb.append(".precision(").append(p);
|
||||
|
||||
// [#6411] Call static method if available, rather than instance method
|
||||
if (SQLDATATYPE_WITH_PRECISION.contains(literal))
|
||||
sb.append('(').append(p);
|
||||
else
|
||||
sb.append(".precision(").append(p);
|
||||
|
||||
if (dataType.hasScale() && s > 0)
|
||||
sb.append(", ").append(s);
|
||||
|
||||
sb.append(")");
|
||||
sb.append(')');
|
||||
}
|
||||
|
||||
if (dataType.hasLength() && l > 0)
|
||||
sb.append(".length(").append(l).append(")");
|
||||
|
||||
// [#6411] Call static method if available, rather than instance method
|
||||
if (SQLDATATYPE_WITH_LENGTH.contains(literal))
|
||||
sb.append("(").append(l).append(")");
|
||||
else
|
||||
sb.append(".length(").append(l).append(")");
|
||||
|
||||
if (!dataType.nullable())
|
||||
sb.append(".nullable(false)");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user