Class PrefetchTreeNode

    • Constructor Detail

      • PrefetchTreeNode

        public PrefetchTreeNode()
        Creates a root node of the prefetch tree. Children can be added to the parent by calling "addPath".
      • PrefetchTreeNode

        protected PrefetchTreeNode​(PrefetchTreeNode parent,
                                   String name)
        Creates a phantom PrefetchTreeNode, initializing it with parent node and a name of a relationship segment connecting this node with the parent.
    • Method Detail

      • withPath

        public static PrefetchTreeNode withPath​(String path,
                                                int semantics)
        Creates and returns a prefetch tree spanning a single path. The tree is made of phantom nodes, up to the leaf node, which is non-phantom and has specified semantics.
      • getRoot

        public PrefetchTreeNode getRoot()
        Returns the root of the node tree. Root is the topmost parent node that itself has no parent set.
      • getPath

        public String getPath()
        Returns full prefetch path, that is a dot separated String of node names starting from root and up to and including this node. Note that root "name" is considered to be an empty string.
      • adjacentJointNodes

        public Collection<PrefetchTreeNode> adjacentJointNodes()
        Returns a subset of nodes with "joint" semantics that are to be prefetched in the same query as the current node. Result excludes this node, regardless of its semantics.
      • jointNodes

        public Collection<PrefetchTreeNode> jointNodes()
        Returns a collection of PrefetchTreeNodes in this tree with joint semantics.
      • disjointNodes

        public Collection<PrefetchTreeNode> disjointNodes()
        Returns a collection of PrefetchTreeNodes with disjoint semantics.
      • disjointByIdNodes

        public Collection<PrefetchTreeNode> disjointByIdNodes()
        Returns a collection of PrefetchTreeNodes with disjoint semantics
      • nonPhantomNodes

        public Collection<PrefetchTreeNode> nonPhantomNodes()
        Returns a collection of PrefetchTreeNodes that are not phantoms.
      • cloneJointSubtree

        public PrefetchTreeNode cloneJointSubtree()
        Returns a clone of subtree that includes all joint children starting from this node itself and till the first occurrence of non-joint node
      • traverse

        public void traverse​(PrefetchProcessor processor)
        Traverses the tree depth-first, invoking callback methods of the processor when passing through the nodes.
      • getNode

        public PrefetchTreeNode getNode​(String path)
        Looks up an existing node in the tree desribed by the dot-separated path. Will return null if no matching child exists.
      • addPath

        public PrefetchTreeNode addPath​(String path)
        Adds a "path" with specified semantics to this prefetch node. All yet non-existent nodes in the created path will be marked as phantom.
        the last segment in the created path.
      • merge

        public void merge​(PrefetchTreeNode node)
        Merges PrefetchTreeNode into the current prefetch tree, cloning the nodes added to this tree. Merged nodes semantics (if defined) and non-phantom status are applied to the nodes of this tree.
        node - a root node of a tree to merge into this tree. The path of the merged node within the resulting tree is determined from its name.
      • removePath

        public void removePath​(String path)
        Removes or makes phantom a node defined by this path. If the node for this path doesn't have any children, it is removed, otherwise it is made phantom.
      • removeChild

        protected void removeChild​(String segment)
      • hasChildren

        public boolean hasChildren()
      • getName

        public String getName()
      • isPhantom

        public boolean isPhantom()
      • setPhantom

        public void setPhantom​(boolean phantom)
      • getSemantics

        public int getSemantics()
      • setSemantics

        public void setSemantics​(int semantics)
      • isJointPrefetch

        public boolean isJointPrefetch()
      • isDisjointPrefetch

        public boolean isDisjointPrefetch()
      • isDisjointByIdPrefetch

        public boolean isDisjointByIdPrefetch()
      • getEjbqlPathEntityId

        public String getEjbqlPathEntityId()
      • setEjbqlPathEntityId

        public void setEjbqlPathEntityId​(String ejbqlPathEntityId)
      • getEntityName

        public String getEntityName()
      • setEntityName

        public void setEntityName​(String entityName)