@SuppressWarnings("unchecked") private <S> S convertTo(Type<S> type, int index) { switch (type.tag()) { case PropertyType.STRING: return (S) getConverter(values.get(index)).toString(); case PropertyType.BINARY: return (S) getConverter(values.get(index)).toBinary(); case PropertyType.LONG: return (S) (Long) getConverter(values.get(index)).toLong(); case PropertyType.DOUBLE: return (S) (Double) getConverter(values.get(index)).toDouble(); case PropertyType.DATE: return (S) getConverter(values.get(index)).toString(); case PropertyType.BOOLEAN: return (S) (Boolean) getConverter(values.get(index)).toBoolean(); case PropertyType.NAME: return (S) getConverter(values.get(index)).toString(); case PropertyType.PATH: return (S) getConverter(values.get(index)).toString(); case PropertyType.REFERENCE: return (S) getConverter(values.get(index)).toString(); case PropertyType.WEAKREFERENCE: return (S) getConverter(values.get(index)).toString(); case PropertyType.URI: return (S) getConverter(values.get(index)).toString(); case PropertyType.DECIMAL: return (S) getConverter(values.get(index)).toDecimal(); default: throw new IllegalArgumentException("Unknown type:" + type); } }
@SuppressWarnings("unchecked") private <S> S convertTo(Type<S> type, int index) { switch (type.tag()) { case PropertyType.STRING: return (S) getConverter(values.get(index)).toString(); case PropertyType.BINARY: return (S) getConverter(values.get(index)).toBinary(); case PropertyType.LONG: return (S) (Long) getConverter(values.get(index)).toLong(); case PropertyType.DOUBLE: return (S) (Double) getConverter(values.get(index)).toDouble(); case PropertyType.DATE: return (S) getConverter(values.get(index)).toString(); case PropertyType.BOOLEAN: return (S) (Boolean) getConverter(values.get(index)).toBoolean(); case PropertyType.NAME: return (S) getConverter(values.get(index)).toString(); case PropertyType.PATH: return (S) getConverter(values.get(index)).toString(); case PropertyType.REFERENCE: return (S) getConverter(values.get(index)).toString(); case PropertyType.WEAKREFERENCE: return (S) getConverter(values.get(index)).toString(); case PropertyType.URI: return (S) getConverter(values.get(index)).toString(); case PropertyType.DECIMAL: return (S) getConverter(values.get(index)).toDecimal(); default: throw new IllegalArgumentException("Unknown type:" + type); } }
values.add(Conversions.convert(value).toDouble()); } else if (type == PropertyType.DECIMAL) { values.add(Conversions.convert(value).toDecimal()); } else { values.add(StringCache.get(value));
return newValue(GenericPropertyState.uriProperty("", value), namePathMapper); case PropertyType.DECIMAL: return createValue(Conversions.convert(value).toDecimal()); default: throw new ValueFormatException("Invalid type: " + type);
values.add(Conversions.convert(value).toDouble()); } else if (type == PropertyType.DECIMAL) { values.add(Conversions.convert(value).toDecimal()); } else { values.add(StringCache.get(value));
values.add(Conversions.convert(value).toDouble()); } else if (type == PropertyType.DECIMAL) { values.add(Conversions.convert(value).toDecimal()); } else { if (type == PropertyType.UNDEFINED){
return newValue(GenericPropertyState.uriProperty("", value), namePathMapper, getBlobAccessProvider()); case PropertyType.DECIMAL: return createValue(Conversions.convert(value).toDecimal()); default: throw new ValueFormatException("Invalid type: " + type);
values.add(Conversions.convert(value).toDouble()); } else if (type == PropertyType.DECIMAL) { values.add(Conversions.convert(value).toDecimal()); } else { if (type == PropertyType.UNDEFINED){
values.add(Conversions.convert(value).toDouble()); } else if (type == PropertyType.DECIMAL) { values.add(Conversions.convert(value).toDecimal()); } else { values.add(value);
return convert(convert(value).toDecimal()); } else if (type == Type.DOUBLE) { return convert(convert(value).toDouble());
return convert(convert(value).toDecimal()); } else if (type == Type.DOUBLE) { return convert(convert(value).toDouble());
@SuppressWarnings("unchecked") private <T> T getValue(RecordId id, Type<T> type) { if (type == BINARY) { return (T) reader.readBlob(id); // load binaries lazily } String value = reader.readString(id); if (type == STRING || type == URI || type == DATE || type == NAME || type == PATH || type == REFERENCE || type == WEAKREFERENCE) { return (T) value; // no conversion needed for string types } Type<?> base = getType(); if (base.isArray()) { base = base.getBaseType(); } Converter converter = Conversions.convert(value, base); if (type == BOOLEAN) { return (T) Boolean.valueOf(converter.toBoolean()); } else if (type == DECIMAL) { return (T) converter.toDecimal(); } else if (type == DOUBLE) { return (T) Double.valueOf(converter.toDouble()); } else if (type == LONG) { return (T) Long.valueOf(converter.toLong()); } else { throw new UnsupportedOperationException( "Unknown type: " + type); } }
/** * Create a {@code PropertyState} from a string. * @param name The name of the property state * @param value The value of the property state * @param type The type of the property state * @return The new property state */ @Nonnull public static PropertyState createProperty(String name, String value, int type) { switch (type) { case PropertyType.STRING: return StringPropertyState.stringProperty(name, value); case PropertyType.BINARY: return BinaryPropertyState.binaryProperty(name, Conversions.convert(value).toBinary()); case PropertyType.LONG: return LongPropertyState.createLongProperty(name, Conversions.convert(value).toLong()); case PropertyType.DOUBLE: return DoublePropertyState.doubleProperty(name, Conversions.convert(value).toDouble()); case PropertyType.BOOLEAN: return BooleanPropertyState.booleanProperty(name, Conversions.convert(value).toBoolean()); case PropertyType.DECIMAL: return DecimalPropertyState.decimalProperty(name, Conversions.convert(value).toDecimal()); default: return new GenericPropertyState(name, value, Type.fromTag(type, false)); } }
/** * Create a {@code PropertyState} from a string. * @param name The name of the property state * @param value The value of the property state * @param type The type of the property state * @return The new property state */ @NotNull public static PropertyState createProperty(String name, String value, int type) { switch (type) { case PropertyType.STRING: return StringPropertyState.stringProperty(name, value); case PropertyType.BINARY: return BinaryPropertyState.binaryProperty(name, Conversions.convert(value).toBinary()); case PropertyType.LONG: return LongPropertyState.createLongProperty(name, Conversions.convert(value).toLong()); case PropertyType.DOUBLE: return DoublePropertyState.doubleProperty(name, Conversions.convert(value).toDouble()); case PropertyType.BOOLEAN: return BooleanPropertyState.booleanProperty(name, Conversions.convert(value).toBoolean()); case PropertyType.DECIMAL: return DecimalPropertyState.decimalProperty(name, Conversions.convert(value).toDecimal()); default: return new GenericPropertyState(name, value, Type.fromTag(type, false)); } }
@SuppressWarnings("unchecked") private <S> S convertTo(Type<S> type) { switch (type.tag()) { case PropertyType.STRING: return (S) getConverter().toString(); case PropertyType.BINARY: return (S) getConverter().toBinary(); case PropertyType.LONG: return (S) (Long) getConverter().toLong(); case PropertyType.DOUBLE: return (S) (Double) getConverter().toDouble(); case PropertyType.DATE: return (S) getConverter().toDate(); case PropertyType.BOOLEAN: return (S) (Boolean) getConverter().toBoolean(); case PropertyType.NAME: return (S) getConverter().toString(); case PropertyType.PATH: return (S) getConverter().toString(); case PropertyType.REFERENCE: return (S) getConverter().toString(); case PropertyType.WEAKREFERENCE: return (S) getConverter().toString(); case PropertyType.URI: return (S) getConverter().toString(); case PropertyType.DECIMAL: return (S) getConverter().toDecimal(); default: throw new IllegalArgumentException("Unknown type:" + type); } }
@SuppressWarnings("unchecked") private <S> S convertTo(Type<S> type) { switch (type.tag()) { case PropertyType.STRING: return (S) getConverter().toString(); case PropertyType.BINARY: return (S) getConverter().toBinary(); case PropertyType.LONG: return (S) (Long) getConverter().toLong(); case PropertyType.DOUBLE: return (S) (Double) getConverter().toDouble(); case PropertyType.DATE: return (S) getConverter().toDate(); case PropertyType.BOOLEAN: return (S) (Boolean) getConverter().toBoolean(); case PropertyType.NAME: return (S) getConverter().toString(); case PropertyType.PATH: return (S) getConverter().toString(); case PropertyType.REFERENCE: return (S) getConverter().toString(); case PropertyType.WEAKREFERENCE: return (S) getConverter().toString(); case PropertyType.URI: return (S) getConverter().toString(); case PropertyType.DECIMAL: return (S) getConverter().toDecimal(); default: throw new IllegalArgumentException("Unknown type:" + type); } }
@Override public BigDecimal apply(T value) { return getConverter(value).toDecimal(); } });
@Override public BigDecimal apply(T value) { return getConverter(value).toDecimal(); } });