package nl.ipo.cds.etl.featurecollection; import java.util.Iterator; import nl.ipo.cds.domain.FeatureType; import nl.ipo.cds.etl.GenericFeature; import org.deegree.geometry.Envelope; public class NumberLimitedFeatureCollection implements FeatureCollection { private final FeatureCollection collection; private final int maxFeatures; public NumberLimitedFeatureCollection(final FeatureCollection collection, int maxFeatures) { this.collection = collection; this.maxFeatures = maxFeatures; } @Override public Iterator<GenericFeature> iterator() { if (maxFeatures == -1) { return collection.iterator(); } return new NumberLimitedIterator(maxFeatures, collection.iterator()); } @Override public Envelope getBoundedBy() { return collection.getBoundedBy(); } @Override public FeatureType getFeatureType() { return collection.getFeatureType(); } private class NumberLimitedIterator implements Iterator<GenericFeature> { private final int maxFeatures; private final Iterator<GenericFeature> iterator; private int count; private NumberLimitedIterator(int maxFeatures, Iterator<GenericFeature> iterator) { this.maxFeatures = maxFeatures; this.iterator = iterator; } @Override public boolean hasNext() { return iterator.hasNext() && count < maxFeatures; } @Override public GenericFeature next() { count++; return iterator.next(); } @Override public void remove() { throw new UnsupportedOperationException(); } } }