in xtable-core/src/main/java/org/apache/xtable/delta/DeltaValueConverter.java [202:245]
private static Object castObjectToInternalType(Object value, InternalSchema schema) {
InternalType valueType = schema.getDataType();
switch (valueType) {
case DOUBLE:
if (value instanceof String)
switch (value.toString()) {
case NAN_VALUE:
return Double.NaN;
case POSITIVE_INF_VALUE:
case POSITIVE_INFINITY_VALUE:
case INFINITY_VALUE:
return Double.POSITIVE_INFINITY;
case NEGATIVE_INF_VALUE:
case NEGATIVE_INFINITY_VALUE:
return Double.NEGATIVE_INFINITY;
}
break;
case FLOAT:
if (value instanceof Double) {
return ((Double) value).floatValue();
} else if (value instanceof String) {
switch (value.toString()) {
case NAN_VALUE:
return Float.NaN;
case POSITIVE_INF_VALUE:
case POSITIVE_INFINITY_VALUE:
case INFINITY_VALUE:
return Float.POSITIVE_INFINITY;
case NEGATIVE_INF_VALUE:
case NEGATIVE_INFINITY_VALUE:
return Float.NEGATIVE_INFINITY;
}
}
break;
case DECIMAL:
return numberTypeToBigDecimal(value, schema);
case LONG:
if (value instanceof Integer) {
return ((Integer) value).longValue();
}
break;
}
return value;
}