in java/ws-server/src/main/java/com/epam/deltix/tbwg/webapp/services/timebase/csvimport/CsvValueConvertor.java [292:334]
private Object castObjectValue(Object value, DataType type) {
if (value == null)
return null;
if (value instanceof String) {
return convertStandardDataType(null, (String) value, type);
} else if (type instanceof IntegerDataType)
switch (((IntegerDataType) type).getSize()) {
case 1:
return ((Number) value).byteValue();
case 2:
return ((Number) value).shortValue();
case 4:
case IntegerDataType.PACKED_UNSIGNED_INT:
case IntegerDataType.PACKED_INTERVAL:
return ((Number) value).intValue();
default:
return ((Number) value).longValue();
}
else if (type instanceof FloatDataType) {
if (type.getEncoding().equals(FloatDataType.ENCODING_FIXED_FLOAT))
return ((Number) value).floatValue();
else
return ((Number) value).doubleValue();
} else if (type instanceof BooleanDataType && value instanceof Number) {
byte byteValue = ((Number) value).byteValue();
if (byteValue == -1) return null;
return byteValue;
} else if (type instanceof DateTimeDataType) {
if (value instanceof Number) {
return ((Number) value).longValue();
}
} else if (type instanceof TimeOfDayDataType)
return ((Number) value).intValue();
else if (type instanceof ArrayDataType) {
Object[] objects = value instanceof List ? ((List) value).toArray() : (Object[]) value;
return castArrayValues(objects, (ArrayDataType) type);
} else if (type instanceof ClassDataType) {
return castObjectValues((Map) value, (ClassDataType) type);
} else if (type instanceof BinaryDataType) {
return castBinaryValues((List) value);
}
return value;
}