org.apache.cayenne.query
Class PrefetchTreeNode

java.lang.Object
  extended by org.apache.cayenne.query.PrefetchTreeNode
All Implemented Interfaces:
Serializable, XMLSerializable

public class PrefetchTreeNode
extends Object
implements Serializable, XMLSerializable

Defines a node in a prefetch tree.

Since:
1.2
See Also:
Serialized Form

Field Summary
protected  Collection<PrefetchTreeNode> children
           
static int DISJOINT_PREFETCH_SEMANTICS
           
protected  String ejbqlPathEntityId
           
protected  String entityName
           
static int JOINT_PREFETCH_SEMANTICS
           
protected  String name
           
protected  PrefetchTreeNode parent
           
protected  boolean phantom
           
protected  int semantics
           
static int UNDEFINED_SEMANTICS
           
 
Constructor Summary
  PrefetchTreeNode()
          Creates 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
 void addChild(PrefetchTreeNode child)
           
 PrefetchTreeNode addPath(String path)
          Adds a "path" with specified semantics to this prefetch node.
 Collection<PrefetchTreeNode> adjacentJointNodes()
          Returns a subset of nodes with "joint" semantics that are to be prefetched in the same query as the current node.
 Collection<PrefetchTreeNode> disjointNodes()
          Returns a collection of PrefetchTreeNodes with disjoint semantics.
 void encodeAsXML(XMLEncoder encoder)
          Prints itself as XML to the provided XMLEncoder.
protected  PrefetchTreeNode getChild(String segment)
           
 Collection<PrefetchTreeNode> getChildren()
          Returns an unmodifiable collection of children.
 String getEjbqlPathEntityId()
           
 String getEntityName()
           
 String getName()
           
 PrefetchTreeNode getNode(String path)
          Looks up an existing node in the tree desribed by the dot-separated path.
 PrefetchTreeNode getParent()
           
 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.
 String getPath(PrefetchTreeNode upTillParent)
           
 PrefetchTreeNode getRoot()
          Returns the root of the node tree.
 int getSemantics()
           
 boolean hasChildren()
           
 boolean isDisjointPrefetch()
           
 boolean isJointPrefetch()
           
 boolean isPhantom()
           
 Collection<PrefetchTreeNode> jointNodes()
          Returns a collection of PrefetchTreeNodes in this tree with joint semantics.
 Collection<PrefetchTreeNode> nonPhantomNodes()
          Returns a collection of PrefetchTreeNodes that are not phantoms.
 void removeChild(PrefetchTreeNode child)
           
protected  void removeChild(String segment)
           
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNDEFINED_SEMANTICS

public static final int UNDEFINED_SEMANTICS
See Also:
Constant Field Values

JOINT_PREFETCH_SEMANTICS

public static final int JOINT_PREFETCH_SEMANTICS
See Also:
Constant Field Values

DISJOINT_PREFETCH_SEMANTICS

public static final int DISJOINT_PREFETCH_SEMANTICS
See Also:
Constant Field Values

name

protected String name

phantom

protected boolean phantom

semantics

protected int semantics

ejbqlPathEntityId

protected String ejbqlPathEntityId

entityName

protected String entityName

parent

protected transient PrefetchTreeNode parent

children

protected Collection<PrefetchTreeNode> children
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

encodeAsXML

public void encodeAsXML(XMLEncoder encoder)
Description copied from interface: XMLSerializable
Prints itself as XML to the provided XMLEncoder.

Specified by:
encodeAsXML in interface XMLSerializable

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.


getPath

public String getPath(PrefetchTreeNode upTillParent)

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.


nonPhantomNodes

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


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.

Returns:
the last segment in the created path.

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.


addChild

public void addChild(PrefetchTreeNode child)

removeChild

public void removeChild(PrefetchTreeNode child)

removeChild

protected void removeChild(String segment)

getChild

protected PrefetchTreeNode getChild(String segment)

getParent

public PrefetchTreeNode getParent()

getChildren

public Collection<PrefetchTreeNode> getChildren()
Returns an unmodifiable collection of children.


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()

getEjbqlPathEntityId

public String getEjbqlPathEntityId()

setEjbqlPathEntityId

public void setEjbqlPathEntityId(String ejbqlPathEntityId)

getEntityName

public String getEntityName()

setEntityName

public void setEntityName(String entityName)


Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.