/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * */ package org.biojava.bio.search; /** *
* Filtering implementation of SearchContentHandler that by default passes * all messages on to the next delegate in the chain. *
* ** In this handler, all info will be passed onto a delegate handler. You can * build up a chain of filters by using one filter as the delegate for * another. When you over-ride a method in a filter, you can modify any * state you wish. If you want that to propogate on, you should call * the method on yourself via super.(), if not, just return. *
* ** It is your responsibility to ensure that the events emitted from your filter * are sensible. In particular, start/end messages must be paired even after * filtering. *
* ** // we have a handler from somewhere * SearchContentHandler handler = ...; * * // now we are going to mutate all "score" notifications to Double instances * // from strings * SearchContentHandler filter = new SearchContentFilter() { * public void addHitProperty(Object key, Object value) { * if("score".equals(key)) { * if(value instanceof String) { * value = new Double(value); * } * } * super(key, value); * } * }; ** * @author Matthew Pocock * @since 1.3 */ public class SearchContentFilter implements SearchContentHandler { private final SearchContentHandler delegate; public SearchContentFilter(SearchContentHandler delegate) { this.delegate = delegate; } public void addHitProperty(Object key, Object value) { delegate.addHitProperty(key, value); } public void addSearchProperty(Object key, Object value) { delegate.addSearchProperty(key, value); } public void addSubHitProperty(Object key, Object value) { delegate.addSubHitProperty(key, value); } public void startHeader() { delegate.startHeader(); } public void endHeader() { delegate.endHeader(); } public void startHit() { delegate.startHit(); } public void endHit() { delegate.endHit(); } public void startSearch() { delegate.startSearch(); } public void endSearch() { delegate.endSearch(); } public void startSubHit() { delegate.startSubHit(); } public void endSubHit() { delegate.endSubHit(); } public void setQueryID(String queryID) { delegate.setQueryID(queryID); } public void setDatabaseID(String databaseID) { delegate.setDatabaseID(databaseID); } public boolean getMoreSearches() { return delegate.getMoreSearches(); } public void setMoreSearches(boolean val) { delegate.setMoreSearches(val); } }