* This method computes the type precedence for the given field f.
* @return an integer value indicating the precedence. 0 indicates
* highest precedence and Integer.MAX_VALUE indicates lowest.
*/
private int computeTypePrecedence() {
ColumnElement c = (ColumnElement) columnDescs.get(0);
int sqlType = c.getType();
Class type = getType();
boolean isNullable = c.isNullable();
int precedence = Integer.MAX_VALUE;
switch (sqlType) {
case Types.TINYINT:
case Types.SMALLINT:
case Types.INTEGER:
case Types.BIGINT:
if (isNullable) {
precedence = lookupTypePrecedence(type, nullableNonScaledTypes);
} else {
precedence = lookupTypePrecedence(type, nonNullableNonScaledTypes);
}
break;
case Types.REAL:
case Types.FLOAT:
case Types.DOUBLE:
if (isNullable) {
precedence = lookupTypePrecedence(type, nullableScaledTypes);
} else {
precedence = lookupTypePrecedence(type, nonNullableScaledTypes);
}
break;
case Types.NUMERIC:
case Types.DECIMAL:
int scale = -1;
if ((scale = c.getScale().intValue()) == 0) {
// non scaled type
if (isNullable) {
precedence = lookupTypePrecedence(type, nullableNonScaledTypes);
} else {
precedence = lookupTypePrecedence(type, nonNullableNonScaledTypes);