in core/src/main/java/com/jetbrains/youtrackdb/internal/core/serialization/serializer/StringSerializerHelper.java [80:217]
public static Object fieldTypeFromStream(
DatabaseSessionEmbedded db, final EntityImpl entity, PropertyTypeInternal iType,
final Object iValue) {
if (iValue == null) {
return null;
}
if (iType == null) {
iType = PropertyTypeInternal.EMBEDDED;
}
switch (iType) {
case STRING:
if (iValue instanceof String s) {
return decode(IOUtils.getStringContent(s));
}
return iValue.toString();
case INTEGER: {
if (iValue instanceof Integer) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Integer.parseInt(valueString);
}
case BOOLEAN: {
if (iValue instanceof Boolean) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Boolean.parseBoolean(valueString);
}
case DECIMAL: {
if (iValue instanceof BigDecimal) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return new BigDecimal(valueString);
}
case FLOAT: {
if (iValue instanceof Float) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Float.parseFloat(valueString);
}
case LONG: {
if (iValue instanceof Long) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Long.parseLong(valueString);
}
case DOUBLE: {
if (iValue instanceof Double) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Double.parseDouble(valueString);
}
case SHORT: {
if (iValue instanceof Short) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Short.parseShort(valueString);
}
case BYTE: {
if (iValue instanceof Byte) {
return iValue;
}
final var valueString = IOUtils.getStringContent(iValue);
if (valueString.isEmpty()) {
return null;
}
return Byte.parseByte(valueString);
}
case BINARY:
return getBinaryContent(iValue);
case DATE:
case DATETIME:
if (iValue instanceof Date) {
return iValue;
}
return new Date(Long.parseLong(IOUtils.getStringContent(iValue)));
case LINK:
if (iValue instanceof RID) {
return iValue.toString();
} else if (iValue instanceof String) {
return RecordIdInternal.fromString((String) iValue, false);
} else {
return ((DBRecord) iValue).getIdentity().toString();
}
case EMBEDDED:
// EMBEDDED
return null;
case EMBEDDEDMAP:
// RECORD
final var value = (String) iValue;
return RecordSerializerCSVAbstract.embeddedMapFromStream(db,
entity, null, value, null);
}
throw new IllegalArgumentException(
"Type " + iType + " does not support converting value: " + iValue);
}