/* * Copyright (c) 2009 Andrejs Jermakovics. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Andrejs Jermakovics - initial implementation */ package it.unibz.instasearch.indexing.querying; import it.unibz.instasearch.indexing.Field; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.PhraseQuery; import org.apache.lucene.search.PrefixQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.WildcardQuery; public abstract class QueryVisitor { /** * @param query * @return Query */ public Query visitQuery(Query query) { return query; } /** * @param termQuery * @param field or null if field is not recognized * @return Query */ public Query visit(TermQuery termQuery, Field field) { return termQuery; } /** * * @param boolQuery * @return the Query to replace boolQuery with (or itself). * If new query is returned, children of boolQuery are still visited */ public BooleanQuery visit(BooleanQuery boolQuery) { return boolQuery; } /** * @param boolClause * @return true if should visit this clause (and its children), false to skip it */ public boolean visit(BooleanClause boolClause) { return true; } /** * @param phraseQuery * @return Query */ public Query visit(PhraseQuery phraseQuery) { return phraseQuery; } /** * @param wildcardQuery * @param field * @return Query */ public Query visit(WildcardQuery wildcardQuery, Field field) { return wildcardQuery; } /** * @param prefixQuery * @param field * @return Query */ public Query visit(PrefixQuery prefixQuery, Field field) { return prefixQuery; } /** * Initialize visitor * @param query */ public void init(Query query) { } /** * @param query * @return modified query */ public Query endVisit(Query query) { return query; } }