package org.styloot.hobo.iterators;
import java.util.*;
import org.styloot.hobo.*;
import org.styloot.hobo.iterators.FilterIterator;
public class FeaturesFilterIterator extends FilterIterator {
public FeaturesFilterIterator(Iterator<Item> iter, Collection<String> f) {
super(iter);
features = Feature.getFeatures(f); //getFeatures returns sorted
}
private Feature[] features;
public static Iterator<Item> wrap(Iterator<Item> iterator, Collection<String> features) {
if (features != null && features.size() > 0) {
iterator = new FeaturesFilterIterator(iterator, features);
}
return iterator;
}
public boolean predicate(Item item) {
return item.hasFeaturesSorted(features); //Better performance, O(n+m) rather than O(N*M)
}
}