org.dom4j.tree
Class AbstractBranch

java.lang.Object
  extended byorg.dom4j.tree.AbstractNode
      extended byorg.dom4j.tree.AbstractBranch
All Implemented Interfaces:
Branch, Cloneable, Node, Serializable
Direct Known Subclasses:
AbstractDocument, AbstractElement

public abstract class AbstractBranch
extends AbstractNode
implements Branch

AbstractBranch is an abstract base class for tree implementors to use for implementation inheritence.

Version:
$Revision: 1.44 $
Author:
James Strachan
See Also:
Serialized Form

Field Summary
protected static int DEFAULT_CONTENT_LIST_SIZE
           
 
Fields inherited from class org.dom4j.tree.AbstractNode
NODE_TYPE_NAMES
 
Fields inherited from interface org.dom4j.Node
ANY_NODE, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_REFERENCE_NODE, MAX_NODE_TYPE, NAMESPACE_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE, UNKNOWN_NODE
 
Constructor Summary
AbstractBranch()
           
 
Method Summary
 void add(Comment comment)
          Adds the given Comment to this branch.
 void add(Element element)
          Adds the given Element to this branch.
 void add(Node node)
          Adds the given Node or throws IllegalAddException if the given node is not of a valid type.
 void add(ProcessingInstruction pi)
          Adds the given ProcessingInstruction to this branch.
 Element addElement(QName qname)
          Adds a new Element node with the given QNameto this branch and returns a reference to the new node.
 Element addElement(String name)
          Adds a new Element node with the given name to this branch and returns a reference to the new node.
 Element addElement(String qualifiedName, String namespaceURI)
          Adds a new Element node with the given qualified name and namespace URI to this branch and returns a reference to the new node.
 Element addElement(String name, String prefix, String uri)
           
protected abstract  void addNode(int index, Node node)
           
protected abstract  void addNode(Node node)
           
 void appendContent(Branch branch)
          Appends the content of the given branch to this branch instance.
protected abstract  void childAdded(Node node)
          Called when a new child node has been added to me to allow any parent relationships to be created or events to be fired.
protected abstract  void childRemoved(Node node)
          Called when a child node has been removed to allow any parent relationships to be deleted or events to be fired.
 List content()
           Returns the content nodes of this branch as a backed Listso that the content of this branch may be modified directly using the Listinterface.
protected abstract  List contentList()
          DOCUMENT ME!
protected  void contentRemoved()
          Called when the given List content has been removed so each node should have its parent and document relationships cleared
protected  List createContentList()
          A Factory Method pattern which creates a List implementation used to store content
protected  List createContentList(int size)
          A Factory Method pattern which creates a List implementation used to store content
protected  List createEmptyList()
          A Factory Method pattern which creates an empty a BackedList implementation
protected  BackedList createResultList()
          A Factory Method pattern which creates a BackedList implementation used to store results of a filtered content query.
protected  List createSingleResultList(Object result)
          A Factory Method pattern which creates a BackedList implementation which contains a single result
 Element elementByID(String elementID)
          Returns the element of the given ID attribute value.
protected  String elementID(Element element)
          DOCUMENT ME!
protected  String getContentAsStringValue(Object content)
          DOCUMENT ME!
protected  String getContentAsText(Object content)
          DOCUMENT ME!
 String getText()
           Returns the text of this node.
 String getTextTrim()
           
 boolean hasContent()
           hasContent returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.
 int indexOf(Node node)
          Returns the index of the given node if it is a child node of this branch or -1 if the given node is not a child node.
protected  void invalidNodeTypeAddException(Node node)
          Called when an invalid node has been added.
 boolean isReadOnly()
           isReadOnly returns true if this node is read only and cannot be modified.
 Node node(int index)
          Returns the Node at the specified index position.
 int nodeCount()
          Returns the number of Node instances that this branch contains.
 Iterator nodeIterator()
          Returns an iterator through the content nodes of this branch
 boolean remove(Comment comment)
          Removes the given Comment if the node is an immediate child of this branch.
 boolean remove(Element element)
          Removes the given Element if the node is an immediate child of this branch.
 boolean remove(Node node)
          Removes the given Node if the node is an immediate child of this branch.
 boolean remove(ProcessingInstruction pi)
          Removes the given ProcessingInstruction if the node is an immediate child of this branch.
protected abstract  boolean removeNode(Node node)
           
 void setProcessingInstructions(List listOfPIs)
          Sets all the processing instructions for this branch
 
Methods inherited from class org.dom4j.tree.AbstractNode
asXPathResult, clone, createPattern, createXPath, createXPathFilter, createXPathResult, detach, getDocument, getDocumentFactory, getName, getNodeType, getNodeTypeName, getParent, getPath, getStringValue, getUniquePath, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, setDocument, setName, setParent, setText, supportsParent, valueOf, write
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.dom4j.Branch
clearContent, normalize, processingInstruction, processingInstructions, processingInstructions, removeProcessingInstruction, setContent
 
Methods inherited from interface org.dom4j.Node
accept, asXML, asXPathResult, clone, createXPath, detach, getDocument, getName, getNodeType, getNodeTypeName, getParent, getPath, getPath, getStringValue, getUniquePath, getUniquePath, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, setDocument, setName, setParent, setText, supportsParent, valueOf, write
 

Field Detail

DEFAULT_CONTENT_LIST_SIZE

protected static final int DEFAULT_CONTENT_LIST_SIZE
See Also:
Constant Field Values
Constructor Detail

AbstractBranch

public AbstractBranch()
Method Detail

isReadOnly

public boolean isReadOnly()
Description copied from interface: Node

isReadOnly returns true if this node is read only and cannot be modified. Any attempt to modify a read-only Node will result in an UnsupportedOperationException being thrown.

Specified by:
isReadOnly in interface Node
Overrides:
isReadOnly in class AbstractNode

hasContent

public boolean hasContent()
Description copied from interface: Node

hasContent returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.

Specified by:
hasContent in interface Node
Overrides:
hasContent in class AbstractNode

content

public List content()
Description copied from interface: Branch

Returns the content nodes of this branch as a backed Listso that the content of this branch may be modified directly using the Listinterface. The List is backed by the Branch so that changes to the list are reflected in the branch and vice versa.

Specified by:
content in interface Branch
Returns:
the nodes that this branch contains as a List

getText

public String getText()
Description copied from interface: Node

Returns the text of this node.

Specified by:
getText in interface Node
Overrides:
getText in class AbstractNode

getContentAsText

protected String getContentAsText(Object content)
DOCUMENT ME!

Parameters:
content - DOCUMENT ME!
Returns:
the text value of the given content object as text which returns the text value of CDATA, Entity or Text nodes

getContentAsStringValue

protected String getContentAsStringValue(Object content)
DOCUMENT ME!

Parameters:
content - DOCUMENT ME!
Returns:
the XPath defined string-value of the given content object

getTextTrim

public String getTextTrim()

setProcessingInstructions

public void setProcessingInstructions(List listOfPIs)
Description copied from interface: Branch
Sets all the processing instructions for this branch

Specified by:
setProcessingInstructions in interface Branch
Parameters:
listOfPIs - DOCUMENT ME!

addElement

public Element addElement(String name)
Description copied from interface: Branch
Adds a new Element node with the given name to this branch and returns a reference to the new node.

Specified by:
addElement in interface Branch
Parameters:
name - is the name for the Element node.
Returns:
the newly added Element node.

addElement

public Element addElement(String qualifiedName,
                          String namespaceURI)
Description copied from interface: Branch
Adds a new Element node with the given qualified name and namespace URI to this branch and returns a reference to the new node.

Specified by:
addElement in interface Branch
Parameters:
qualifiedName - is the fully qualified name of the Element
namespaceURI - is the URI of the namespace to use
Returns:
the newly added Element node.

addElement

public Element addElement(QName qname)
Description copied from interface: Branch
Adds a new Element node with the given QNameto this branch and returns a reference to the new node.

Specified by:
addElement in interface Branch
Parameters:
qname - is the qualified name for the Element node.
Returns:
the newly added Element node.

addElement

public Element addElement(String name,
                          String prefix,
                          String uri)

add

public void add(Node node)
Description copied from interface: Branch
Adds the given Node or throws IllegalAddException if the given node is not of a valid type. This is a polymorphic method which will call the typesafe method for the node type such as add(Element) or add(Comment).

Specified by:
add in interface Branch
Parameters:
node - is the given node to add

remove

public boolean remove(Node node)
Description copied from interface: Branch
Removes the given Node if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the Node.detach()method should be used instead. This is a polymorphic method which will call the typesafe method for the node type such as remove(Element) or remove(Comment).

Specified by:
remove in interface Branch
Parameters:
node - is the given node to be removed
Returns:
true if the node was removed

add

public void add(Comment comment)
Description copied from interface: Branch
Adds the given Comment to this branch. If the given node already has a parent defined then an IllegalAddException will be thrown.

Specified by:
add in interface Branch
Parameters:
comment - is the comment to be added

add

public void add(Element element)
Description copied from interface: Branch
Adds the given Element to this branch. If the given node already has a parent defined then an IllegalAddException will be thrown.

Specified by:
add in interface Branch
Parameters:
element - is the element to be added

add

public void add(ProcessingInstruction pi)
Description copied from interface: Branch
Adds the given ProcessingInstruction to this branch. If the given node already has a parent defined then an IllegalAddException will be thrown.

Specified by:
add in interface Branch
Parameters:
pi - is the processing instruction to be added

remove

public boolean remove(Comment comment)
Description copied from interface: Branch
Removes the given Comment if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the Node.detach()method should be used instead.

Specified by:
remove in interface Branch
Parameters:
comment - is the comment to be removed
Returns:
true if the comment was removed

remove

public boolean remove(Element element)
Description copied from interface: Branch
Removes the given Element if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the Node.detach()method should be used instead.

Specified by:
remove in interface Branch
Parameters:
element - is the element to be removed
Returns:
true if the element was removed

remove

public boolean remove(ProcessingInstruction pi)
Description copied from interface: Branch
Removes the given ProcessingInstruction if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the Node.detach()method should be used instead.

Specified by:
remove in interface Branch
Parameters:
pi - is the processing instruction to be removed
Returns:
true if the processing instruction was removed

elementByID

public Element elementByID(String elementID)
Description copied from interface: Branch
Returns the element of the given ID attribute value. If this tree is capable of understanding which attribute value should be used for the ID then it should be used, otherwise this method should return null.

Specified by:
elementByID in interface Branch
Parameters:
elementID - DOCUMENT ME!
Returns:
DOCUMENT ME!

appendContent

public void appendContent(Branch branch)
Description copied from interface: Branch
Appends the content of the given branch to this branch instance. This method behaves like the Collection.addAll(java.util.Collection) method.

Specified by:
appendContent in interface Branch
Parameters:
branch - is the branch whose content will be added to me.

node

public Node node(int index)
Description copied from interface: Branch
Returns the Node at the specified index position.

Specified by:
node in interface Branch
Parameters:
index - the index of the node to return.
Returns:
the Node at the specified position.

nodeCount

public int nodeCount()
Description copied from interface: Branch
Returns the number of Node instances that this branch contains.

Specified by:
nodeCount in interface Branch
Returns:
the number of nodes this branch contains

indexOf

public int indexOf(Node node)
Description copied from interface: Branch
Returns the index of the given node if it is a child node of this branch or -1 if the given node is not a child node.

Specified by:
indexOf in interface Branch
Parameters:
node - the content child node to find.
Returns:
the index of the given node starting at 0 or -1 if the node is not a child node of this branch

nodeIterator

public Iterator nodeIterator()
Description copied from interface: Branch
Returns an iterator through the content nodes of this branch

Specified by:
nodeIterator in interface Branch
Returns:
an iterator through the content nodes of this branch

elementID

protected String elementID(Element element)
DOCUMENT ME!

Parameters:
element - DOCUMENT ME!
Returns:
the ID of the given Element

contentList

protected abstract List contentList()
DOCUMENT ME!

Returns:
the internal List used to manage the content

createContentList

protected List createContentList()
A Factory Method pattern which creates a List implementation used to store content

Returns:
DOCUMENT ME!

createContentList

protected List createContentList(int size)
A Factory Method pattern which creates a List implementation used to store content

Parameters:
size - DOCUMENT ME!
Returns:
DOCUMENT ME!

createResultList

protected BackedList createResultList()
A Factory Method pattern which creates a BackedList implementation used to store results of a filtered content query.

Returns:
DOCUMENT ME!

createSingleResultList

protected List createSingleResultList(Object result)
A Factory Method pattern which creates a BackedList implementation which contains a single result

Parameters:
result - DOCUMENT ME!
Returns:
DOCUMENT ME!

createEmptyList

protected List createEmptyList()
A Factory Method pattern which creates an empty a BackedList implementation

Returns:
DOCUMENT ME!

addNode

protected abstract void addNode(Node node)

addNode

protected abstract void addNode(int index,
                                Node node)

removeNode

protected abstract boolean removeNode(Node node)

childAdded

protected abstract void childAdded(Node node)
Called when a new child node has been added to me to allow any parent relationships to be created or events to be fired.

Parameters:
node - DOCUMENT ME!

childRemoved

protected abstract void childRemoved(Node node)
Called when a child node has been removed to allow any parent relationships to be deleted or events to be fired.

Parameters:
node - DOCUMENT ME!

contentRemoved

protected void contentRemoved()
Called when the given List content has been removed so each node should have its parent and document relationships cleared


invalidNodeTypeAddException

protected void invalidNodeTypeAddException(Node node)
Called when an invalid node has been added. Throws an IllegalAddException.

Parameters:
node - DOCUMENT ME!
Throws:
IllegalAddException - DOCUMENT ME!


Copyright © 2001-2005 MetaStuff Ltd.. All Rights Reserved.