Package org.apache.cayenne.query
Class PrefetchTreeNode
java.lang.Object
org.apache.cayenne.query.PrefetchTreeNode
- All Implemented Interfaces:
Serializable
,XMLSerializable
Defines a node in a prefetch tree.
- Since:
- 1.2
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected Collection
<PrefetchTreeNode> static final int
static final int
protected String
protected String
static final int
protected String
protected PrefetchTreeNode
protected boolean
protected int
static final int
-
Constructor Summary
ModifierConstructorDescriptionCreates a root node of the prefetch tree.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 Summary
Modifier and TypeMethodDescriptionvoid
addChild
(PrefetchTreeNode child) Adds a "path" with specified semantics to this prefetch node.Returns a subset of nodes with "joint" semantics that are to be prefetched in the same query as the current node.Returns a clone of subtree that includes all joint children starting from this node itself and till the first occurrence of non-joint nodeReturns a collection of PrefetchTreeNodes with disjoint semanticsReturns a collection of PrefetchTreeNodes with disjoint semantics.void
encodeAsXML
(XMLEncoder encoder, ConfigurationNodeVisitor delegate) Prints itself as XML to the provided XMLEncoder.protected PrefetchTreeNode
Returns an unmodifiable collection of children.getName()
Looks up an existing node in the tree desribed by the dot-separated path.getPath()
Returns full prefetch path, that is a dot separated String of node names starting from root and up to and including this node.getPath
(PrefetchTreeNode upTillParent) getRoot()
Returns the root of the node tree.int
boolean
boolean
boolean
boolean
boolean
Returns a collection of PrefetchTreeNodes in this tree with joint semantics.void
merge
(PrefetchTreeNode node) MergesPrefetchTreeNode
into the current prefetch tree, cloning the nodes added to this tree.Returns a collection of PrefetchTreeNodes that are not phantoms.protected Object
protected void
removeChild
(String segment) void
removeChild
(PrefetchTreeNode child) void
removePath
(String path) Removes or makes phantom a node defined by this path.void
setEjbqlPathEntityId
(String ejbqlPathEntityId) void
setEntityName
(String entityName) void
setPhantom
(boolean phantom) void
setSemantics
(int semantics) void
traverse
(PrefetchProcessor processor) Traverses the tree depth-first, invoking callback methods of the processor when passing through the nodes.static PrefetchTreeNode
Creates and returns a prefetch tree spanning a single path.
-
Field Details
-
UNDEFINED_SEMANTICS
public static final int UNDEFINED_SEMANTICS- See Also:
-
JOINT_PREFETCH_SEMANTICS
public static final int JOINT_PREFETCH_SEMANTICS- See Also:
-
DISJOINT_PREFETCH_SEMANTICS
public static final int DISJOINT_PREFETCH_SEMANTICS- See Also:
-
DISJOINT_BY_ID_PREFETCH_SEMANTICS
public static final int DISJOINT_BY_ID_PREFETCH_SEMANTICS- See Also:
-
name
-
phantom
protected boolean phantom -
semantics
protected int semantics -
ejbqlPathEntityId
-
entityName
-
parent
-
children
-
-
Constructor Details
-
PrefetchTreeNode
public PrefetchTreeNode()Creates a root node of the prefetch tree. Children can be added to the parent by calling "addPath". -
PrefetchTreeNode
Creates a phantom PrefetchTreeNode, initializing it with parent node and a name of a relationship segment connecting this node with the parent.
-
-
Method Details
-
withPath
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.- Since:
- 4.0
-
encodeAsXML
Description copied from interface:XMLSerializable
Prints itself as XML to the provided XMLEncoder.- Specified by:
encodeAsXML
in interfaceXMLSerializable
-
getRoot
Returns the root of the node tree. Root is the topmost parent node that itself has no parent set. -
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. -
getPath
-
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
Returns a collection of PrefetchTreeNodes in this tree with joint semantics. -
disjointNodes
Returns a collection of PrefetchTreeNodes with disjoint semantics. -
disjointByIdNodes
Returns a collection of PrefetchTreeNodes with disjoint semantics- Since:
- 3.1
-
nonPhantomNodes
Returns a collection of PrefetchTreeNodes that are not phantoms. -
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- Since:
- 3.1
-
traverse
Traverses the tree depth-first, invoking callback methods of the processor when passing through the nodes. -
getNode
Looks up an existing node in the tree desribed by the dot-separated path. Will return null if no matching child exists. -
addPath
Adds a "path" with specified semantics to this prefetch node. All yet non-existent nodes in the created path will be marked as phantom.- Returns:
- the last segment in the created path.
-
merge
MergesPrefetchTreeNode
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.- Parameters:
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.- Since:
- 4.0
-
removePath
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. -
addChild
-
removeChild
-
removeChild
-
getChild
-
getParent
-
getChildren
Returns an unmodifiable collection of children. -
hasChildren
public boolean hasChildren() -
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
-
setEjbqlPathEntityId
-
getEntityName
-
setEntityName
-
readResolve
- Throws:
ObjectStreamException
-