package net.refractions.linecleaner.cleansing;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.geotools.feature.Feature;
import org.geotools.filter.Expression;
import org.geotools.filter.FilterVisitor;
/**
* Returns the length of the provided Feature.
*
* @author rgould
*/
public class LengthExpression implements Expression {
private IProgressMonitor monitor;
public LengthExpression(IProgressMonitor monitor) {
if (monitor == null) monitor = new NullProgressMonitor();
this.monitor = monitor;
}
public short getType() {
return Expression.LITERAL_DOUBLE;
}
public Object getValue(Feature feature) {
return feature.getDefaultGeometry().getLength();
}
public void accept(FilterVisitor visitor) {
monitor.worked(1);
visitor.visit(this);
}
}