package com.browseengine.bobo.facets.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.Filter;
import org.apache.lucene.util.Bits;
import com.browseengine.bobo.docidset.OrDocIdSet;
public class OrFilter extends Filter {
private final List<? extends Filter> _filters;
public OrFilter(List<? extends Filter> filters) {
_filters = filters;
}
@Override
public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
if (_filters.size() == 1) {
return _filters.get(0).getDocIdSet(context, acceptDocs);
} else {
List<DocIdSet> list = new ArrayList<DocIdSet>(_filters.size());
for (Filter f : _filters) {
list.add(f.getDocIdSet(context, acceptDocs));
}
return new OrDocIdSet(list);
}
}
}