org.apache.lucene.queryParser.precedence.processors
Class BooleanModifiersQueryNodeProcessor

java.lang.Object
  extended by org.apache.lucene.queryParser.core.processors.QueryNodeProcessorImpl
      extended by org.apache.lucene.queryParser.precedence.processors.BooleanModifiersQueryNodeProcessor
All Implemented Interfaces:
QueryNodeProcessor

public class BooleanModifiersQueryNodeProcessor
extends QueryNodeProcessorImpl

This processor is used to apply the correct ModifierQueryNode to BooleanQueryNodes children.

It walks through the query node tree looking for BooleanQueryNodes. If an AndQueryNode is found, every child, which is not a ModifierQueryNode or the ModifierQueryNode is ModifierQueryNode.Modifier.MOD_NONE, becomes a ModifierQueryNode.Modifier.MOD_REQ. For any other BooleanQueryNode which is not an OrQueryNode, it checks the default operator is StandardQueryConfigHandler.Operator.AND, if it is, the same operation when an AndQueryNode is found is applied to it.

See Also:
StandardQueryConfigHandler.ConfigurationKeys.DEFAULT_OPERATOR, StandardQueryParser.setDefaultOperator(org.apache.lucene.queryParser.standard.config.DefaultOperatorAttribute.Operator)

Constructor Summary
BooleanModifiersQueryNodeProcessor()
           
 
Method Summary
protected  QueryNode postProcessNode(QueryNode node)
          This method is invoked for every node when walking up the tree.
protected  QueryNode preProcessNode(QueryNode node)
          This method is invoked for every node when walking down the tree.
 QueryNode process(QueryNode queryTree)
          Processes a query node tree.
protected  List<QueryNode> setChildrenOrder(List<QueryNode> children)
          This method is invoked for every node that has at least on child.
 
Methods inherited from class org.apache.lucene.queryParser.core.processors.QueryNodeProcessorImpl
getQueryConfigHandler, processChildren, setQueryConfigHandler
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BooleanModifiersQueryNodeProcessor

public BooleanModifiersQueryNodeProcessor()
Method Detail

process

public QueryNode process(QueryNode queryTree)
                  throws QueryNodeException
Description copied from interface: QueryNodeProcessor
Processes a query node tree. It may return the same or another query tree. I should never return null.

Specified by:
process in interface QueryNodeProcessor
Overrides:
process in class QueryNodeProcessorImpl
Parameters:
queryTree - tree root node
Returns:
the processed query tree
Throws:
QueryNodeException

postProcessNode

protected QueryNode postProcessNode(QueryNode node)
                             throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node when walking up the tree.

Specified by:
postProcessNode in class QueryNodeProcessorImpl
Parameters:
node - node the query node to be post-processed
Returns:
a query node
Throws:
QueryNodeException - if something goes wrong during the query node processing

preProcessNode

protected QueryNode preProcessNode(QueryNode node)
                            throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node when walking down the tree.

Specified by:
preProcessNode in class QueryNodeProcessorImpl
Parameters:
node - the query node to be pre-processed
Returns:
a query node
Throws:
QueryNodeException - if something goes wrong during the query node processing

setChildrenOrder

protected List<QueryNode> setChildrenOrder(List<QueryNode> children)
                                    throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node that has at least on child. It's invoked right before QueryNodeProcessorImpl.postProcessNode(QueryNode) is invoked.

Specified by:
setChildrenOrder in class QueryNodeProcessorImpl
Parameters:
children - the list containing all current node's children
Returns:
a new list containing all children that should be set to the current node
Throws:
QueryNodeException - if something goes wrong during the query node processing