package jeql.std.aggfunction; import java.util.ArrayList; import java.util.List; import jeql.api.function.AggregateFunction; import jeql.api.function.Aggregator; import jeql.engine.Scope; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.operation.union.UnaryUnionOp; /** * Aggregate Union using Cascaded Union * * @author Martin Davis * */ public class GeomUnionMemAggFunction implements AggregateFunction { public GeomUnionMemAggFunction() { } public void bind(Scope scope, List args) { } public String getName() { return "GeomUnionMem"; } public Class getType() { return Geometry.class; } public Aggregator createAggregator() { return new GeomUnionMemAggregator(); } public static class GeomUnionMemAggregator implements Aggregator { private List geoms = new ArrayList(); public void addValue(Object obj) { Geometry geom = (Geometry) obj; geoms.add(geom); } public Object getResult() { return UnaryUnionOp.union(geoms); } } }