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 java.lang.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 theFieldableNode
interface - 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/interface This 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 notnull
, 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 ofQueryTreeBuilder
, 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 java.lang.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 Summary
Constructors Constructor Description QueryTreeBuilder()
QueryTreeBuilder
constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
build(QueryNode queryNode)
Builds some kind of object from a query tree.void
setBuilder(java.lang.CharSequence fieldName, QueryBuilder builder)
Associates a field name with a builder.void
setBuilder(java.lang.Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)
Associates a class with a builder
-
-
-
Constructor Detail
-
QueryTreeBuilder
public QueryTreeBuilder()
QueryTreeBuilder
constructor.
-
-
Method Detail
-
setBuilder
public void setBuilder(java.lang.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(java.lang.Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)
Associates a class with a builder- Parameters:
queryNodeClass
- the classbuilder
- the builder to be associated
-
build
public java.lang.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:
build
in interfaceQueryBuilder
- Parameters:
queryNode
- the query tree root node- Returns:
- the built object
- Throws:
QueryNodeException
- if some node builder throws aQueryNodeException
or if there is a node which had no builder associated to it
-
-