static public Object getValue(FieldValue value){ return (value != null ? value.getValue() : null); }
public Integer asInteger(){ return (Integer)getValue(DataType.INTEGER); }
public LocalDate asLocalDate(){ return (LocalDate)getValue(DataType.DATE); }
public LocalTime asLocalTime(){ return (LocalTime)getValue(DataType.TIME); }
public String asString(){ return (String)getValue(DataType.STRING); }
public LocalDateTime asLocalDateTime(){ return (LocalDateTime)getValue(DataType.DATE_TIME); }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkVariableArityArguments(arguments, 2); String result = arguments.stream() .filter(Objects::nonNull) .map(value -> (String)TypeUtil.cast(DataType.STRING, value.getValue())) .collect(Collectors.joining()); return FieldValueUtil.create(TypeInfos.CATEGORICAL_STRING, result); } };
public int compareToString(String string){ Object value = TypeUtil.parse(getDataType(), string); return ((Comparable)getValue()).compareTo(value); }
private boolean equalsValue(Object value){ value = TypeUtil.parseOrCast(getDataType(), value); return (getValue()).equals(value); }
public boolean equalsString(String string){ Object value = TypeUtil.parse(getDataType(), string); return (getValue()).equals(value); }
private int compareToValue(Object value){ value = TypeUtil.parseOrCast(getDataType(), value); return ((Comparable)getValue()).compareTo(value); }
@Override public int hashCode(){ return (31 * (getOpType().hashCode() ^ getDataType().hashCode())) + getValue().hashCode(); }
@Override public int compareToValue(FieldValue value){ Number number; try { number = (Number)TypeUtil.cast(DataType.DOUBLE, value.asNumber()); } catch(TypeCheckException tce){ throw new TypeCheckException(DataType.DOUBLE, value.getValue()); } return ((Comparable)TypeUtil.cast(DataType.DOUBLE, asBoolean())).compareTo(number); }
@Override public int compareToValue(FieldValue value){ List<?> ordering = getOrdering(); if(ordering == null){ return super.compareToValue(value); } return compare(ordering, getValue(), TypeUtil.parseOrCast(getDataType(), value.getValue())); }
protected ToStringHelper toStringHelper(){ ToStringHelper helper = new ToStringHelper(this) .add("opType", getOpType()) .add("dataType", getDataType()) .add("value", getValue()); return helper; }
public FieldValue cast(TypeInfo typeInfo){ DataType dataType = typeInfo.getDataType(); OpType opType = typeInfo.getOpType(); if((dataType).equals(getDataType()) && (opType).equals(getOpType())){ return this; } return FieldValue.create(typeInfo, getValue()); }