## org.apache.lucene.queryParser.core.builders
Class QueryTreeBuilder

    java.lang.Object
      org.apache.lucene.queryParser.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
`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
`QueryTreeBuilder()` `QueryTreeBuilder` constructor.

Method Summary
`Object` `build(QueryNode queryNode)` Builds some kind of object from a query tree.
`void` `setBuilder(CharSequence fieldName, QueryBuilder builder)` Deprecated. use `setBuilder(String, QueryBuilder)` instead
`void` `setBuilder(Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)` Associates a class with a builder
`void` `setBuilder(String fieldName, QueryBuilder builder)` Associates a field name 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(String fieldName,
                           QueryBuilder builder)

  Associates a field name with a builder.

  Parameters:
    `fieldName` - the field name
    `builder` - the builder to be associated

### setBuilder

    @Deprecated
    public void setBuilder(CharSequence fieldName,
                                      QueryBuilder builder)

  Deprecated. use `setBuilder(String, QueryBuilder)` instead

  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