package com.manning.hsia.dvdstore.action.filter; import org.apache.lucene.index.Term; 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; /** * Example 8.4,l 8.6 */ public class DistributorFilterFactory { private String distributor; public void setDistributor(String distributor) { //parameters are injected in setters this.distributor = distributor; } @Factory public Filter buildDistributorFilter() { Term term = new Term("distributor.name", distributor); //make use of injected parameters Query query = new TermQuery( term ); Filter filter = new QueryWrapperFilter( query ); return filter; } @Key //method generating the FilterKey public FilterKey getKey() { StandardFilterKey key = new StandardFilterKey(); //use the default implementation key.addParameter(distributor); //parameters are available return key; } }