Class QueryTreeBuilder
- All Implemented Interfaces:
QueryBuilder
- Direct Known Subclasses:
StandardQueryTreeBuilder
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:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
This tag is used to tag the nodes in a query tree with the built objects produced from their own associated builder. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionBuilds 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 Details
-
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 Details
-
QueryTreeBuilder
public QueryTreeBuilder()QueryTreeBuilder
constructor.
-
-
Method Details
-
setBuilder
Associates a field name with a builder.- Parameters:
fieldName
- the field namebuilder
- the builder to be associated
-
setBuilder
Associates a class with a builder- Parameters:
queryNodeClass
- the classbuilder
- the builder to be associated
-
build
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
-