package org.geotoolkit.pending.demo.filter.customfunction; import org.geotoolkit.filter.function.AbstractFunction; import org.geotoolkit.pending.demo.filter.customaccessor.Pojo; import org.opengis.filter.expression.Expression; import org.opengis.filter.expression.Literal; public class DensityFunction extends AbstractFunction{ /** * @param parameters : * 1 - x var * 2 - y var * @param fallback */ public DensityFunction(Expression[] parameters, Literal fallback){ super(IMRFunctionFactory.DENSITY, parameters, fallback); if(parameters.length != 2){ throw new IllegalArgumentException("Expecting 2 parameters."); } } @Override public Object evaluate(Object object) { final Number x = parameters.get(0).evaluate(object, Number.class); final Number y = parameters.get(1).evaluate(object, Number.class); //an incredible highly complex mathematic algorithm return x.doubleValue() * 2 + y.doubleValue(); } }