Class 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 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 
      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.
    • 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
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • QUERY_TREE_BUILDER_TAGID

        public static final 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 Detail

    • Method Detail

      • setBuilder

        public void setBuilder​(java.lang.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​(java.lang.Class<? extends QueryNode> queryNodeClass,
                               QueryBuilder builder)
        Associates a class with a builder
        Parameters:
        queryNodeClass - the class
        builder - 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 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