in java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java [183:275]
public Object castFromSingleValue(TSDataType sourceType, Object value) {
if (Objects.isNull(value)) {
return null;
}
switch (this) {
case BOOLEAN:
if (sourceType == TSDataType.BOOLEAN) {
return value;
} else {
break;
}
case INT32:
if (sourceType == TSDataType.INT32) {
return value;
} else {
break;
}
case INT64:
if (sourceType == TSDataType.INT64) {
return value;
} else if (sourceType == INT32) {
return (long) ((int) value);
} else if (sourceType == TIMESTAMP) {
return value;
} else {
break;
}
case FLOAT:
if (sourceType == TSDataType.FLOAT) {
return value;
} else if (sourceType == INT32) {
return (float) ((int) value);
} else {
break;
}
case DOUBLE:
if (sourceType == TSDataType.DOUBLE) {
return value;
} else if (sourceType == INT32) {
return (double) ((int) value);
} else if (sourceType == INT64) {
return (double) ((long) value);
} else if (sourceType == FLOAT) {
return (double) ((float) value);
} else if (sourceType == TIMESTAMP) {
return (double) ((long) value);
} else {
break;
}
case TEXT:
if (sourceType == TSDataType.TEXT || sourceType == TSDataType.STRING) {
return value;
} else {
break;
}
case TIMESTAMP:
if (sourceType == TSDataType.TIMESTAMP) {
return value;
} else if (sourceType == INT32) {
return (long) ((int) value);
} else if (sourceType == INT64) {
return value;
} else {
break;
}
case DATE:
if (sourceType == TSDataType.DATE) {
return value;
} else {
break;
}
case BLOB:
if (sourceType == TSDataType.BLOB
|| sourceType == TSDataType.STRING
|| sourceType == TSDataType.TEXT) {
return value;
} else {
break;
}
case STRING:
if (sourceType == TSDataType.STRING || sourceType == TSDataType.TEXT) {
return value;
} else {
break;
}
case VECTOR:
case UNKNOWN:
default:
break;
}
throw new ClassCastException(
String.format("Unsupported cast: from %s to %s", sourceType, this));
}