public static Object convertRawValueToTarget()

in aws-datastore/src/main/java/com/amplifyframework/datastore/storage/sqlite/SQLiteModelFieldTypeConverter.java [97:142]


    public static Object convertRawValueToTarget(
            @Nullable final Object value,
            @NonNull final JavaFieldType fieldType,
            @NonNull Gson gson
    ) {
        if (value == null) {
            return null;
        }
        Objects.requireNonNull(fieldType);
        Objects.requireNonNull(gson);

        switch (fieldType) {
            case INTEGER:
            case LONG:
            case FLOAT:
            case DOUBLE:
            case STRING:
                // these types require no special treatment
                return value;
            case BOOLEAN:
                boolean booleanValue = (boolean) value;
                return booleanValue ? 1L : 0L;
            case MODEL:
                return value instanceof Map ? ((Map<?, ?>) value).get("id") : ((Model) value).getId();
            case ENUM:
                return value instanceof String ? value : ((Enum<?>) value).name();
            case CUSTOM_TYPE:
                return gson.toJson(value);
            case DATE:
                return value instanceof String ? value : ((Temporal.Date) value).format();
            case DATE_TIME:
                return value instanceof String ? value : ((Temporal.DateTime) value).format();
            case TIME:
                return value instanceof String ? value : ((Temporal.Time) value).format();
            case TIMESTAMP:
                if (value instanceof Integer) {
                    return ((Integer) value).longValue();
                } else if (value instanceof Long) {
                    return value;
                }
                return ((Temporal.Timestamp) value).getSecondsSinceEpoch();
            default:
                LOGGER.warn(String.format("Field of type %s is not supported. Fallback to null.", fieldType));
                return null;
        }
    }