package org.geotoolkit.pending.demo.filter.customfunction; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.Point; import java.util.Date; import org.geotoolkit.factory.FactoryFinder; import org.apache.sis.feature.builder.FeatureTypeBuilder; import org.geotoolkit.pending.demo.Demos; import org.geotoolkit.pending.demo.filter.customaccessor.Pojo; import org.apache.sis.referencing.CommonCRS; import org.opengis.feature.Feature; import org.opengis.feature.FeatureType; import org.opengis.filter.FilterFactory; import org.opengis.filter.expression.Expression; public class IMRFunctionDemo { private static final FilterFactory FF = FactoryFinder.getFilterFactory(null); public static void main(String[] args) { Demos.init(); final Pojo pojo = aPOJO(); final Feature feature = aFeature(); final Expression param1 = FF.literal(45); final Expression param2 = FF.property("depth"); final Expression imrFunction = FF.function(IMRFunctionFactory.DENSITY, param1, param2); System.out.println(imrFunction.evaluate(pojo)); System.out.println(imrFunction.evaluate(feature)); } private static Pojo aPOJO(){ final Pojo myPojo = new Pojo("squid", 1200, new Date()); return myPojo; } private static Feature aFeature(){ final GeometryFactory gf = new GeometryFactory(); final FeatureTypeBuilder ftb = new FeatureTypeBuilder(); ftb.setName("marine-life"); ftb.addAttribute(String.class).setName("family"); ftb.addAttribute(Integer.class).setName("depth"); ftb.addAttribute(Point.class).setName("localisation").setCRS(CommonCRS.WGS84.normalizedGeographic()); final FeatureType type = ftb.build(); final Feature feature1 = type.newInstance(); feature1.setPropertyValue("family","seashell"); feature1.setPropertyValue("depth",1200); feature1.setPropertyValue("localisation",gf.createPoint(new Coordinate(5, 2))); return feature1; } }