org.apache.lucene.queryparser.flexible.core.builders

## 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/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 not `null`, it's tagged on the node using the tag `QUERY_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
`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 and Description
`QueryTreeBuilder()` `QueryTreeBuilder` constructor.

### Method Summary

Methods
`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

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### 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 name
  `builder` - the builder to be associated

#### setBuilder

    public void setBuilder(Class<? extends QueryNode> queryNodeClass,
                  QueryBuilder builder)

Associates a class with a builder

Parameters:
  `queryNodeClass` - the class
  `builder` - 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 interface `QueryBuilder`
Parameters:
  `queryNode` - the query tree root node
Returns:
  the built object
Throws:
  `QueryNodeException` - if some node builder throws a `QueryNodeException` or if there is a node which had no builder associated to it