package org.infinispan.all.embeddedquery.testdomain;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.CachingWrapperFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
import org.apache.lucene.search.TermQuery;
import org.hibernate.search.annotations.Factory;
import org.hibernate.search.annotations.Key;
import org.hibernate.search.filter.FilterKey;
import org.hibernate.search.filter.StandardFilterKey;
/**
* 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;
@Key
public FilterKey getKey() {
StandardFilterKey key = new StandardFilterKey();
key.addParameter(age);
return key;
}
public void setAge(Integer age) {
this.age = age;
}
@Factory
public Filter getFilter() {
Query query = new TermQuery(new Term("age", age.toString()));
return new CachingWrapperFilter(new QueryWrapperFilter(query));
}
}