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
FieldableNode
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/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 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 Object
build(QueryNode queryNode)
Builds some kind of object from a query tree.void
setBuilder(CharSequence fieldName, QueryBuilder builder)
Associates a field name with a builder.void
setBuilder(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()
QueryTreeBuilder
constructor.
-
-
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:
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
-
-