Class QueryTreeBuilder
- java.lang.Object
-
- org.apache.lucene.queryparser.flexible.core.builders.QueryTreeBuilder
-
- All Implemented Interfaces:
QueryBuilder
- Direct Known Subclasses:
StandardQueryTreeBuilder
public class QueryTreeBuilder extends Object implements QueryBuilder
This class should be used when there is a builder for each type of node.The type of node may be defined in 2 different ways: - by the field name, when the node implements the
FieldableNodeinterface - by its class, it keeps checking the class and all the interfaces and classes this class implements/extends until it finds a builder for that class/interfaceThis class always check if there is a builder for the field name before it checks for the node class. So, field name builders have precedence over class builders.
When a builder is found for a node, it's called and the node is passed to the builder. If the returned built object is not
null, it's tagged on the node using the tagQUERY_TREE_BUILDER_TAGID.The children are usually built before the parent node. However, if a builder associated to a node is an instance of
QueryTreeBuilder, the node is delegated to this builder and it's responsible to build the node and its children.- See Also:
QueryBuilder
-
-
Field Summary
Fields Modifier and Type Field Description static StringQUERY_TREE_BUILDER_TAGIDThis tag is used to tag the nodes in a query tree with the built objects produced from their own associated builder.
-
Constructor Summary
Constructors Constructor Description QueryTreeBuilder()QueryTreeBuilderconstructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Objectbuild(QueryNode queryNode)Builds some kind of object from a query tree.voidsetBuilder(CharSequence fieldName, QueryBuilder builder)Associates a field name with a builder.voidsetBuilder(Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)Associates a class with a builder
-
-
-
Field Detail
-
QUERY_TREE_BUILDER_TAGID
public static final String QUERY_TREE_BUILDER_TAGID
This tag is used to tag the nodes in a query tree with the built objects produced from their own associated builder.
-
-
Constructor Detail
-
QueryTreeBuilder
public QueryTreeBuilder()
QueryTreeBuilderconstructor.
-
-
Method Detail
-
setBuilder
public void setBuilder(CharSequence fieldName, QueryBuilder builder)
Associates a field name with a builder.- Parameters:
fieldName- the field namebuilder- the builder to be associated
-
setBuilder
public void setBuilder(Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)
Associates a class with a builder- Parameters:
queryNodeClass- the classbuilder- the builder to be associated
-
build
public Object build(QueryNode queryNode) throws QueryNodeException
Builds some kind of object from a query tree. Each node in the query tree is built using an specific builder associated to it.- Specified by:
buildin interfaceQueryBuilder- Parameters:
queryNode- the query tree root node- Returns:
- the built object
- Throws:
QueryNodeException- if some node builder throws aQueryNodeExceptionor if there is a node which had no builder associated to it
-
-