@Override public FieldValue evaluate(List<FieldValue> arguments){ checkFixedArityArguments(arguments, 3); String string = getRequiredArgument(arguments, 0, "input").asString(); int position = getRequiredArgument(arguments, 1, "startPos").asInteger(); if(position < 1){ throw new FunctionException(this, "Invalid \'startPos\' value " + position + ". Must be equal or greater than 1"); } // "The first character of a string is located at position 1 (not position 0)" int javaPosition = Math.min(position - 1, string.length()); int length = getRequiredArgument(arguments, 2, "length").asInteger(); if(length < 0){ throw new FunctionException(this, "Invalid \'length\' value " + length); } int javaLength = Math.min(length, (string.length() - javaPosition)); // This expression must never throw a StringIndexOutOfBoundsException String result = string.substring(javaPosition, javaPosition + javaLength); return FieldValueUtil.create(TypeInfos.CATEGORICAL_STRING, result); } };
static private Integer getTrials(GeneralRegressionModel generalRegressionModel, EvaluationContext context){ FieldName trialsVariable = generalRegressionModel.getTrialsVariable(); if(trialsVariable != null){ FieldValue value = getVariable(trialsVariable, context); return value.asInteger(); } return generalRegressionModel.getTrialsValue(); }
@Override public FieldValue evaluate(List<FieldValue> arguments){ checkArguments(arguments, 2); Collection<?> values = FieldValueUtil.getValue(Collection.class, arguments.get(0)); int percentile = (arguments.get(1)).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(result); }
checkFixedArityArguments(arguments, 2); int length = getRequiredArgument(arguments, 0, "length").asInteger(); if(length < 0){ throw new FunctionException(this, "Invalid \'length\' value " + length);
@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); 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); 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); }
@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); }