@Override public FieldValue prepare(String value){ return FieldValueUtil.create(TypeInfos.CATEGORICAL_STRING, value); } }
@Override protected FieldValue prepare(FieldName name, Object value){ return FieldValueUtil.create(value); } }
static public FieldValue createOrCast(TypeInfo typeInfo, Object value){ if(value instanceof FieldValue){ FieldValue fieldValue = (FieldValue)value; return fieldValue.cast(typeInfo); } else { return FieldValueUtil.create(typeInfo, value); } }
static public FieldValue createOrCast(DataType dataType, OpType opType, Object value){ if(value instanceof FieldValue){ FieldValue fieldValue = (FieldValue)value; return fieldValue.cast(dataType, opType); } else { return FieldValueUtil.create(dataType, opType, value); } }
@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); } };
private FieldValue evaluate(FieldValue left, FieldValue right){ Boolean result = evaluate((left).compareToValue(right)); return FieldValueUtil.create(TypeInfos.CATEGORICAL_BOOLEAN, result); } }
private FieldValue evaluate(FieldValue value){ Boolean result = evaluate(value.asBoolean()); return FieldValueUtil.create(TypeInfos.CATEGORICAL_BOOLEAN, result); } }
private FieldValue evaluate(FieldValue left, FieldValue right){ Boolean result = evaluate((left).equalsValue(right)); return FieldValueUtil.create(TypeInfos.CATEGORICAL_BOOLEAN, result); } }
private FieldValue evaluate(FieldValue value){ Number result = evaluate(value.asNumber()); return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, result); } }
static public FieldValue evaluateFieldRef(FieldRef fieldRef, EvaluationContext context){ FieldValue value = context.evaluate(ensureField(fieldRef)); if(Objects.equals(FieldValues.MISSING_VALUE, value)){ return FieldValueUtil.create(TypeInfos.CATEGORICAL_STRING, fieldRef.getMapMissingTo()); } return value; }
private FieldValue evaluate(FieldValue left, FieldValue right){ DataType dataType = TypeUtil.getCommonDataType(left.getDataType(), right.getDataType()); Double result = Math.pow((left.asNumber()).doubleValue(), (right.asNumber()).doubleValue()); return FieldValueUtil.create(dataType, OpType.CONTINUOUS, result); } };
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 2); Number y = getRequiredArgument(arguments, 0).asNumber(); Number x = getRequiredArgument(arguments, 1).asNumber(); Double result = Math.atan2(y.doubleValue(), x.doubleValue()); if(result.isNaN()){ throw new NaNResultException(); } return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, result); } };
static public FieldValue evaluateNormContinuous(NormContinuous normContinuous, EvaluationContext context){ FieldValue value = context.evaluate(ensureField(normContinuous)); if(Objects.equals(FieldValues.MISSING_VALUE, value)){ return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, normContinuous.getMapMissingTo()); } return NormalizationUtil.normalize(normContinuous, value); }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 1); Collection<?> values = FieldValueUtil.getValue(Collection.class, getRequiredArgument(arguments, 0, "values")); Double result = evaluate(values); return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, result); }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 3); String input = getRequiredArgument(arguments, 0, "input").asString(); String regex = getRequiredArgument(arguments, 1, "pattern").asString(); Pattern pattern = RegExUtil.compile(regex, null); Matcher matcher = pattern.matcher(input); String replacement = getRequiredArgument(arguments, 2, "replacement").asString(); String result = matcher.replaceAll(replacement); return FieldValueUtil.create(TypeInfos.CATEGORICAL_STRING, result); } };
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkVariableArityArguments(arguments, 1, 2); Collection<?> values = FieldValueUtil.getValue(Collection.class, getRequiredArgument(arguments, 0, "values")); Boolean biasCorrected = Boolean.FALSE; if(arguments.size() > 1){ biasCorrected = getRequiredArgument(arguments, 1, "biasCorrected").asBoolean(); } Double result = evaluate(values, biasCorrected); return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, result); }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkVariableArityArguments(arguments, 2); Boolean result = getRequiredArgument(arguments, 0).asBoolean(); for(int i = 1; i < arguments.size(); i++){ result = evaluate(result, getRequiredArgument(arguments, i).asBoolean()); } return FieldValueUtil.create(TypeInfos.CATEGORICAL_BOOLEAN, result); } }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 2); LocalDateTime instant = getRequiredArgument(arguments, 0, "input").asLocalDateTime(); int year = getRequiredArgument(arguments, 1, "referenceYear").asInteger(); SecondsSinceDate period = new SecondsSinceDate(LocalDate.of(year, 1, 1), instant); return FieldValueUtil.create(TypeInfos.CONTINUOUS_INTEGER, period.intValue()); } };
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 2); LocalDate instant = getRequiredArgument(arguments, 0, "input").asLocalDate(); int year = getRequiredArgument(arguments, 1, "referenceYear").asInteger(); DaysSinceDate period = new DaysSinceDate(LocalDate.of(year, 1, 1), instant); return FieldValueUtil.create(TypeInfos.CONTINUOUS_INTEGER, period.intValue()); } };
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 2); Collection<?> values = FieldValueUtil.getValue(Collection.class, getRequiredArgument(arguments, 0, "values")); int percentile = getRequiredArgument(arguments, 1, "percentile").asInteger(); if(percentile < 1 || percentile > 100){ throw new FunctionException(this, "Invalid \'percentile\' value " + percentile + ". Must be greater than 0 and equal or less than 100"); } Double result = evaluate(values, percentile); return FieldValueUtil.create(TypeInfos.CONTINUOUS_DOUBLE, result); }