package com.c2c.style;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.feature.visitor.CalcResult;
import org.geotools.feature.visitor.FeatureCalc;
import org.geotools.util.NullProgressListener;
import org.opengis.feature.Feature;
import org.opengis.feature.FeatureVisitor;
import java.io.IOException;
import java.util.*;
/**
* Visitor for performing multiple calculations in a single pass
*/
public class CombinatorialFeatureVisitor implements FeatureVisitor {
private final List<FeatureCalc> calculations;
public CombinatorialFeatureVisitor(List<FeatureCalc> calculations) {
this.calculations = new ArrayList<FeatureCalc>(calculations);
}
@Override
public void visit(Feature feature) {
for (FeatureCalc calculation : calculations) {
calculation.visit(feature);
}
}
public static void visit(SimpleFeatureCollection features, FeatureCalc... calculations) throws IOException {
CombinatorialFeatureVisitor visitor = new CombinatorialFeatureVisitor(Arrays.asList(calculations));
features.accepts(visitor, new NullProgressListener());
}
}