in xtable-core/src/main/java/org/apache/xtable/delta/DeltaValueConverter.java [157:200]
public static Object convertFromDeltaPartitionValue(
String value,
InternalType fieldType,
PartitionTransformType partitionTransformType,
String dateFormat) {
if (value == null) {
return null;
}
if (partitionTransformType == PartitionTransformType.VALUE) {
switch (fieldType) {
case DATE:
return (int) LocalDate.parse(value).toEpochDay();
case INT:
return Integer.parseInt(value);
case LONG:
return Long.parseLong(value);
case DOUBLE:
return Double.parseDouble(value);
case FLOAT:
return Float.parseFloat(value);
case STRING:
case ENUM:
return value;
case DECIMAL:
return new BigDecimal(value);
case BYTES:
case FIXED:
return value.getBytes(StandardCharsets.UTF_8);
case BOOLEAN:
return Boolean.parseBoolean(value);
default:
throw new NotSupportedException("Unsupported partition value type: " + fieldType);
}
} else {
// use appropriate date formatter for value serialization.
try {
DateFormat formatter = getDateFormat(dateFormat);
return formatter.parse(value).toInstant().toEpochMilli();
} catch (ParseException ex) {
throw new org.apache.xtable.model.exception.ParseException(
"Unable to parse partition value", ex);
}
}
}