org.exist.memtree
Class NodeImpl

java.lang.Object
  extended by org.exist.memtree.NodeImpl
All Implemented Interfaces:
Comparable, QNameable, Item, NodeValue, Sequence, Node
Direct Known Subclasses:
AttributeImpl, CDATASectionImpl, CommentImpl, DocumentImpl, ElementImpl, NamespaceNode, ProcessingInstructionImpl, ReferenceNode, TextImpl

public class NodeImpl
extends Object
implements Node, NodeValue, QNameable, Comparable


Field Summary
static short NAMESPACE_NODE
           
static short REFERENCE_NODE
           
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Fields inherited from interface org.exist.xquery.value.NodeValue
IN_MEMORY_NODE, PERSISTENT_NODE
 
Fields inherited from interface org.exist.xquery.value.Sequence
EMPTY_SEQUENCE
 
Constructor Summary
NodeImpl(DocumentImpl doc, int nodeNumber)
           
 
Method Summary
 void add(Item item)
          Add an item to the current sequence.
 void addAll(Sequence other)
          Add all items of the other sequence to this item.
 void addContextNode(int contextId, NodeValue node)
           
 boolean after(NodeValue other, boolean isFollowing)
          Returns true if this node comes after another node in document order.
 Node appendChild(Node arg0)
           
 AtomicValue atomize()
           
 boolean before(NodeValue other, boolean isPreceding)
          Returns true if this node comes before another node in document order.
 void clearContext(int contextId)
          For every item in the sequence, clear any context-dependant information that is stored during query processing.
 Node cloneNode(boolean arg0)
           
 short compareDocumentPosition(Node other)
          ? @see org.w3c.dom.Node#compareDocumentPosition(org.w3c.dom.Node)
 int compareTo(Object other)
           
 int conversionPreference(Class javaClass)
          Returns a preference indicator, indicating the preference of a value to be converted into the given Java class.
 AtomicValue convertTo(int requiredType)
          Convert this item into an atomic value, whose type corresponds to the specified target type.
 void copyTo(DBBroker broker, DocumentBuilderReceiver receiver)
           
 void deepCopy()
           
 boolean effectiveBooleanValue()
          Get the effective boolean value of this sequence.
 boolean equals(NodeValue other)
          Returns true if this node has the same identity as another node.
 boolean equals(Object obj)
           
 void expand()
           
 NamedNodeMap getAttributes()
           
 String getBaseURI()
          ? @see org.w3c.dom.Node#getBaseURI()
 int getCardinality()
          Returns the cardinality of this sequence.
 NodeList getChildNodes()
           
 Iterator getCollectionIterator()
          Return an iterator on all collections referenced by documents contained in this sequence..
 DocumentImpl getDocument()
           
 DocumentSet getDocumentSet()
          Returns the set of documents from which the node items in this sequence have been selected.
 Object getFeature(String feature, String version)
          ? @see org.w3c.dom.Node#getFeature(java.lang.String, java.lang.String)
 Node getFirstChild()
           
 int getImplementationType()
          Returns the implementation-type of this node, i.e.
 int getItemCount()
          Returns the number of items contained in the sequence.
 int getItemType()
          Return the primary type to which all items in this sequence belong.
 Node getLastChild()
           
 int getLength()
           
 String getLocalName()
           
 String getNamespaceURI()
           
 Node getNextSibling()
           
 Node getNode()
          Retrieve the actual node.
 String getNodeName()
           
 int getNodeNumber()
           
 short getNodeType()
           
 String getNodeValue()
           
 Document getOwnerDocument()
           
 Node getParentNode()
           
 String getPrefix()
           
 Node getPreviousSibling()
           
 QName getQName()
           
 int getState()
           
 String getStringValue()
          Return the string value of this item (see the definition of string value in XPath).
 String getTextContent()
          ? @see org.w3c.dom.Node#getTextContent()
 int getType()
          Return the type of this item according to the type constants defined in class Type.
 Object getUserData(String key)
          ? @see org.w3c.dom.Node#getUserData(java.lang.String)
 boolean hasAttributes()
           
 boolean hasChanged(int previousState)
           
 boolean hasChildNodes()
           
 boolean hasMany()
          Returns whether the sequence more than one item or not.
 boolean hasOne()
          Returns whether the sequence has just one item or not.
 Node insertBefore(Node arg0, Node arg1)
           
 boolean isCacheable()
           
 boolean isCached()
          Returns true if the sequence is the result of a previous operation and has been cached.
 boolean isDefaultNamespace(String namespaceURI)
          ? @see org.w3c.dom.Node#isDefaultNamespace(java.lang.String)
 boolean isEmpty()
          Returns whether the sequence is empty or not.
 boolean isEqualNode(Node arg)
          ? @see org.w3c.dom.Node#isEqualNode(org.w3c.dom.Node)
 boolean isPersistentSet()
           
 boolean isSameNode(Node other)
          ? @see org.w3c.dom.Node#isSameNode(org.w3c.dom.Node)
 boolean isSupported(String arg0, String arg1)
           
 Item itemAt(int pos)
          Returns the item located at the specified position within this sequence.
 SequenceIterator iterate()
          Returns an iterator over all items in the sequence.
 String lookupNamespaceURI(String prefix)
          ? @see org.w3c.dom.Node#lookupNamespaceURI(java.lang.String)
 String lookupPrefix(String namespaceURI)
          ? @see org.w3c.dom.Node#lookupPrefix(java.lang.String)
 void nodeMoved(NodeId oldNodeId, StoredNode newNode)
          Nodes may implement this method to be informed of storage address and node id changes after updates.
 void normalize()
           
 Node removeChild(Node arg0)
           
 void removeDuplicates()
          Explicitely remove all duplicate nodes from this sequence.
 Node replaceChild(Node arg0, Node arg1)
           
 void setIsCached(boolean cached)
          Indicates that the sequence is the result of a previous operation and has not been recomputed.
 void setNodeValue(String arg0)
           
 void setPrefix(String arg0)
           
 void setSelfAsContext(int contextId)
           
 void setTextContent(String textContent)
          ? @see org.w3c.dom.Node#setTextContent(java.lang.String)
 Object setUserData(String key, Object data, UserDataHandler handler)
          ? @see org.w3c.dom.Node#setUserData(java.lang.String, java.lang.Object, org.w3c.dom.UserDataHandler)
 void streamTo(Serializer serializer, Receiver receiver)
           
 Object toJavaObject(Class target)
          Convert the value into an instance of the specified Java class.
 NodeSet toNodeSet()
          Convert the sequence into a NodeSet.
 void toSAX(DBBroker broker, ContentHandler handler, Properties properties)
           
 Sequence toSequence()
          Convert this item into a sequence, containing only the item.
 SequenceIterator unorderedIterator()
          Returns an iterator over all items in the sequence.
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REFERENCE_NODE

public static final short REFERENCE_NODE
See Also:
Constant Field Values

NAMESPACE_NODE

public static final short NAMESPACE_NODE
See Also:
Constant Field Values
Constructor Detail

NodeImpl

public NodeImpl(DocumentImpl doc,
                int nodeNumber)
Method Detail

getNodeNumber

public int getNodeNumber()

getImplementationType

public int getImplementationType()
Description copied from interface: NodeValue
Returns the implementation-type of this node, i.e. either NodeValue.IN_MEMORY_NODE or NodeValue.PERSISTENT_NODE.

Specified by:
getImplementationType in interface NodeValue

getDocumentSet

public DocumentSet getDocumentSet()
Description copied from interface: Sequence
Returns the set of documents from which the node items in this sequence have been selected. This is for internal use only.

Specified by:
getDocumentSet in interface Sequence

getCollectionIterator

public Iterator getCollectionIterator()
Description copied from interface: Sequence
Return an iterator on all collections referenced by documents contained in this sequence..

Specified by:
getCollectionIterator in interface Sequence

getNode

public Node getNode()
Description copied from interface: NodeValue
Retrieve the actual node. This operation is expensive.

Specified by:
getNode in interface NodeValue
Returns:
The actual node.

getNodeName

public String getNodeName()
Specified by:
getNodeName in interface Node

getQName

public QName getQName()
Specified by:
getQName in interface QNameable

expand

public void expand()
            throws DOMException
Throws:
DOMException

deepCopy

public void deepCopy()
              throws DOMException
Throws:
DOMException

getNodeValue

public String getNodeValue()
                    throws DOMException
Specified by:
getNodeValue in interface Node
Throws:
DOMException

setNodeValue

public void setNodeValue(String arg0)
                  throws DOMException
Specified by:
setNodeValue in interface Node
Throws:
DOMException

getNodeType

public short getNodeType()
Specified by:
getNodeType in interface Node

getParentNode

public Node getParentNode()
Specified by:
getParentNode in interface Node

addContextNode

public void addContextNode(int contextId,
                           NodeValue node)
Specified by:
addContextNode in interface NodeValue

equals

public boolean equals(Object obj)
Overrides:
equals in class Object

equals

public boolean equals(NodeValue other)
               throws XPathException
Description copied from interface: NodeValue
Returns true if this node has the same identity as another node. Used to implement "is" and "isnot" comparisons.

Specified by:
equals in interface NodeValue
Throws:
XPathException

after

public boolean after(NodeValue other,
                     boolean isFollowing)
              throws XPathException
Description copied from interface: NodeValue
Returns true if this node comes after another node in document order.

Specified by:
after in interface NodeValue
Throws:
XPathException

before

public boolean before(NodeValue other,
                      boolean isPreceding)
               throws XPathException
Description copied from interface: NodeValue
Returns true if this node comes before another node in document order.

Specified by:
before in interface NodeValue
Throws:
XPathException

compareTo

public int compareTo(Object other)
Specified by:
compareTo in interface Comparable

getChildNodes

public NodeList getChildNodes()
Specified by:
getChildNodes in interface Node

getFirstChild

public Node getFirstChild()
Specified by:
getFirstChild in interface Node

getLastChild

public Node getLastChild()
Specified by:
getLastChild in interface Node

getPreviousSibling

public Node getPreviousSibling()
Specified by:
getPreviousSibling in interface Node

getNextSibling

public Node getNextSibling()
Specified by:
getNextSibling in interface Node

getAttributes

public NamedNodeMap getAttributes()
Specified by:
getAttributes in interface Node

getOwnerDocument

public Document getOwnerDocument()
Specified by:
getOwnerDocument in interface NodeValue
Specified by:
getOwnerDocument in interface Node

getDocument

public DocumentImpl getDocument()

insertBefore

public Node insertBefore(Node arg0,
                         Node arg1)
                  throws DOMException
Specified by:
insertBefore in interface Node
Throws:
DOMException

replaceChild

public Node replaceChild(Node arg0,
                         Node arg1)
                  throws DOMException
Specified by:
replaceChild in interface Node
Throws:
DOMException

removeChild

public Node removeChild(Node arg0)
                 throws DOMException
Specified by:
removeChild in interface Node
Throws:
DOMException

appendChild

public Node appendChild(Node arg0)
                 throws DOMException
Specified by:
appendChild in interface Node
Throws:
DOMException

hasChildNodes

public boolean hasChildNodes()
Specified by:
hasChildNodes in interface Node

cloneNode

public Node cloneNode(boolean arg0)
Specified by:
cloneNode in interface Node

normalize

public void normalize()
Specified by:
normalize in interface Node

isSupported

public boolean isSupported(String arg0,
                           String arg1)
Specified by:
isSupported in interface Node

getNamespaceURI

public String getNamespaceURI()
Specified by:
getNamespaceURI in interface Node

getPrefix

public String getPrefix()
Specified by:
getPrefix in interface Node

setPrefix

public void setPrefix(String arg0)
               throws DOMException
Specified by:
setPrefix in interface Node
Throws:
DOMException

getLocalName

public String getLocalName()
Specified by:
getLocalName in interface Node

hasAttributes

public boolean hasAttributes()
Specified by:
hasAttributes in interface Node

getType

public int getType()
Description copied from interface: Item
Return the type of this item according to the type constants defined in class Type.

Specified by:
getType in interface Item

getStringValue

public String getStringValue()
Description copied from interface: Item
Return the string value of this item (see the definition of string value in XPath).

Specified by:
getStringValue in interface Item
Specified by:
getStringValue in interface Sequence

toSequence

public Sequence toSequence()
Description copied from interface: Item
Convert this item into a sequence, containing only the item.

Specified by:
toSequence in interface Item

convertTo

public AtomicValue convertTo(int requiredType)
                      throws XPathException
Description copied from interface: Item
Convert this item into an atomic value, whose type corresponds to the specified target type. requiredType should be one of the type constants defined in Type. An XPathException is thrown if the conversion is impossible.

Specified by:
convertTo in interface Item
Specified by:
convertTo in interface Sequence
Parameters:
requiredType - one of the type constants defined in class Type
Throws:
XPathException

atomize

public AtomicValue atomize()
                    throws XPathException
Specified by:
atomize in interface Item
Throws:
XPathException

isEmpty

public boolean isEmpty()
Description copied from interface: Sequence
Returns whether the sequence is empty or not.

Specified by:
isEmpty in interface Sequence
Returns:
true is the sequence is empty

hasOne

public boolean hasOne()
Description copied from interface: Sequence
Returns whether the sequence has just one item or not.

Specified by:
hasOne in interface Sequence
Returns:
true is the sequence has just one item

hasMany

public boolean hasMany()
Description copied from interface: Sequence
Returns whether the sequence more than one item or not.

Specified by:
hasMany in interface Sequence
Returns:
true is the sequence more than one item

add

public void add(Item item)
         throws XPathException
Description copied from interface: Sequence
Add an item to the current sequence. An XPathException may be thrown if the item's type is incompatible with this type of sequence (e.g. if the sequence is a node set). The sequence may or may not allow duplicate values.

Specified by:
add in interface Sequence
Throws:
XPathException

addAll

public void addAll(Sequence other)
            throws XPathException
Description copied from interface: Sequence
Add all items of the other sequence to this item. An XPathException may be thrown if the type of the items in the other sequence is incompatible with the primary type of this sequence.

Specified by:
addAll in interface Sequence
Throws:
XPathException

getItemType

public int getItemType()
Description copied from interface: Sequence
Return the primary type to which all items in this sequence belong. This is Type.NODE for node sets, Type.ITEM for other sequences with mixed items.

Specified by:
getItemType in interface Sequence
Returns:
the primary type of the items in this sequence.

iterate

public SequenceIterator iterate()
                         throws XPathException
Description copied from interface: Sequence
Returns an iterator over all items in the sequence. The items are returned in document order where applicable.

Specified by:
iterate in interface Sequence
Throws:
XPathException - TODO

unorderedIterator

public SequenceIterator unorderedIterator()
Description copied from interface: Sequence
Returns an iterator over all items in the sequence. The returned items may - but need not - to be in document order.

Specified by:
unorderedIterator in interface Sequence

getItemCount

public int getItemCount()
Description copied from interface: Sequence
Returns the number of items contained in the sequence. Call this method only when necessary, since it can be resource consuming.

Specified by:
getItemCount in interface Sequence
Returns:
The number of items in the sequence

getLength

public int getLength()

getCardinality

public int getCardinality()
Description copied from interface: Sequence
Returns the cardinality of this sequence. The returned value is a combination of flags as defined in Cardinality.

Specified by:
getCardinality in interface Sequence
See Also:
Cardinality

itemAt

public Item itemAt(int pos)
Description copied from interface: Sequence
Returns the item located at the specified position within this sequence. Items are counted beginning at 0.

Specified by:
itemAt in interface Sequence

effectiveBooleanValue

public boolean effectiveBooleanValue()
                              throws XPathException
Description copied from interface: Sequence
Get the effective boolean value of this sequence. Will be false if the sequence is empty, true otherwise.

Specified by:
effectiveBooleanValue in interface Sequence
Throws:
XPathException

toNodeSet

public NodeSet toNodeSet()
                  throws XPathException
Description copied from interface: Sequence
Convert the sequence into a NodeSet. If the sequence contains items which are not nodes, an XPathException is thrown.

Specified by:
toNodeSet in interface Sequence
Throws:
XPathException - if the sequence contains items which are not nodes.

toSAX

public void toSAX(DBBroker broker,
                  ContentHandler handler,
                  Properties properties)
           throws SAXException
Specified by:
toSAX in interface Item
Throws:
SAXException

copyTo

public void copyTo(DBBroker broker,
                   DocumentBuilderReceiver receiver)
            throws SAXException
Specified by:
copyTo in interface Item
Throws:
SAXException

streamTo

public void streamTo(Serializer serializer,
                     Receiver receiver)
              throws SAXException
Throws:
SAXException

conversionPreference

public int conversionPreference(Class javaClass)
Description copied from interface: Sequence
Returns a preference indicator, indicating the preference of a value to be converted into the given Java class. Low numbers mean that the value can be easily converted into the given class.

Specified by:
conversionPreference in interface Item
Specified by:
conversionPreference in interface Sequence

toJavaObject

public Object toJavaObject(Class target)
                    throws XPathException
Description copied from interface: Sequence
Convert the value into an instance of the specified Java class.

Specified by:
toJavaObject in interface Item
Specified by:
toJavaObject in interface Sequence
Throws:
XPathException

setSelfAsContext

public void setSelfAsContext(int contextId)
Specified by:
setSelfAsContext in interface Sequence

isCached

public boolean isCached()
Description copied from interface: Sequence
Returns true if the sequence is the result of a previous operation and has been cached.

Specified by:
isCached in interface Sequence

setIsCached

public void setIsCached(boolean cached)
Description copied from interface: Sequence
Indicates that the sequence is the result of a previous operation and has not been recomputed.

Specified by:
setIsCached in interface Sequence

removeDuplicates

public void removeDuplicates()
Description copied from interface: Sequence
Explicitely remove all duplicate nodes from this sequence.

Specified by:
removeDuplicates in interface Sequence

getBaseURI

public String getBaseURI()
? @see org.w3c.dom.Node#getBaseURI()

Specified by:
getBaseURI in interface Node

compareDocumentPosition

public short compareDocumentPosition(Node other)
                              throws DOMException
? @see org.w3c.dom.Node#compareDocumentPosition(org.w3c.dom.Node)

Specified by:
compareDocumentPosition in interface Node
Throws:
DOMException

getTextContent

public String getTextContent()
                      throws DOMException
? @see org.w3c.dom.Node#getTextContent()

Specified by:
getTextContent in interface Node
Throws:
DOMException

setTextContent

public void setTextContent(String textContent)
                    throws DOMException
? @see org.w3c.dom.Node#setTextContent(java.lang.String)

Specified by:
setTextContent in interface Node
Throws:
DOMException

isSameNode

public boolean isSameNode(Node other)
? @see org.w3c.dom.Node#isSameNode(org.w3c.dom.Node)

Specified by:
isSameNode in interface Node

lookupPrefix

public String lookupPrefix(String namespaceURI)
? @see org.w3c.dom.Node#lookupPrefix(java.lang.String)

Specified by:
lookupPrefix in interface Node

isDefaultNamespace

public boolean isDefaultNamespace(String namespaceURI)
? @see org.w3c.dom.Node#isDefaultNamespace(java.lang.String)

Specified by:
isDefaultNamespace in interface Node

lookupNamespaceURI

public String lookupNamespaceURI(String prefix)
? @see org.w3c.dom.Node#lookupNamespaceURI(java.lang.String)

Specified by:
lookupNamespaceURI in interface Node

isEqualNode

public boolean isEqualNode(Node arg)
? @see org.w3c.dom.Node#isEqualNode(org.w3c.dom.Node)

Specified by:
isEqualNode in interface Node

getFeature

public Object getFeature(String feature,
                         String version)
? @see org.w3c.dom.Node#getFeature(java.lang.String, java.lang.String)

Specified by:
getFeature in interface Node

setUserData

public Object setUserData(String key,
                          Object data,
                          UserDataHandler handler)
? @see org.w3c.dom.Node#setUserData(java.lang.String, java.lang.Object, org.w3c.dom.UserDataHandler)

Specified by:
setUserData in interface Node

getUserData

public Object getUserData(String key)
? @see org.w3c.dom.Node#getUserData(java.lang.String)

Specified by:
getUserData in interface Node

isPersistentSet

public boolean isPersistentSet()
Specified by:
isPersistentSet in interface Sequence

nodeMoved

public void nodeMoved(NodeId oldNodeId,
                      StoredNode newNode)
Description copied from interface: Item
Nodes may implement this method to be informed of storage address and node id changes after updates.

Specified by:
nodeMoved in interface Item
Specified by:
nodeMoved in interface Sequence
See Also:
UpdateListener

clearContext

public void clearContext(int contextId)
Description copied from interface: Sequence
For every item in the sequence, clear any context-dependant information that is stored during query processing. This feature is used for node sets, which may store information about their context node.

Specified by:
clearContext in interface Sequence

getState

public int getState()
Specified by:
getState in interface Sequence

isCacheable

public boolean isCacheable()
Specified by:
isCacheable in interface Sequence

hasChanged

public boolean hasChanged(int previousState)
Specified by:
hasChanged in interface Sequence


Copyright (C) Wolfgang Meier. All rights reserved.