package org.infinispan.query.test; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.Filter; import org.apache.lucene.search.NumericRangeQuery; import org.apache.lucene.search.QueryWrapperFilter; import org.hibernate.search.annotations.Factory; /** * A filter factory producing a filter for Person. Filters by age. * * The main purpose of this filter is to work together with other filters and test * applying more than one filter. * * @author Martin Gencur */ public class PersonAgeFilterFactory { private Integer age; public void setAge(Integer age) { this.age = age; } @Factory public Filter getFilter() { NumericRangeQuery<Integer> query = NumericRangeQuery.newIntRange("age", this.age, age, true, true); BooleanQuery filterQuery = new BooleanQuery.Builder().add(query, BooleanClause.Occur.FILTER).build(); return new QueryWrapperFilter(filterQuery); } }