package proj.zoie.example.service; import com.browseengine.bobo.api.BoboIndexReader; import com.browseengine.bobo.facets.FacetHandler; import com.browseengine.bobo.facets.FacetHandlerFactory; import proj.zoie.api.ZoieIndexReader; import proj.zoie.api.indexing.IndexReaderDecorator; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class BoboIndexReaderDecorator implements IndexReaderDecorator<BoboIndexReader> { protected List<FacetHandlerFactory> facetFactories; public BoboIndexReaderDecorator(List<FacetHandlerFactory> facetFactories) { this.facetFactories = facetFactories; } public static List<FacetHandler> buildFacetHandlers(List<FacetHandlerFactory> facetHandlerFactories) { ArrayList<FacetHandler> retList = null; if (facetHandlerFactories != null) { retList = new ArrayList<FacetHandler>(facetHandlerFactories.size()); for (FacetHandlerFactory factory : facetHandlerFactories) { FacetHandler handler = factory.newInstance(); retList.add(handler); } } return retList; } @Override public BoboIndexReader decorate(ZoieIndexReader<BoboIndexReader> reader) throws IOException { return BoboIndexReader.getInstance(reader, buildFacetHandlers(facetFactories)); } @Override public BoboIndexReader redecorate(BoboIndexReader decorated, ZoieIndexReader<BoboIndexReader> copy) throws IOException { return decorate(copy); } }