org.zkoss.idom.impl
Class AbstractItem

java.lang.Object
  extended by org.zkoss.idom.impl.AbstractItem
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, org.w3c.dom.Node, Item
Direct Known Subclasses:
AbstractGroup, AbstractTextual, Attribute, DocType, ProcessingInstruction

public abstract class AbstractItem
extends java.lang.Object
implements Item, org.w3c.dom.Node, java.io.Serializable, java.lang.Cloneable

A semi-implemented item for leaf vertices. A leaf item is a item without any children. For cores having child cores, use Group.

Important methods that the deriving might want to override.

Item.getName
It must be overridden to provide a local name.
Item.setName
Override it if it allows to change the name. Default: throws an exception.
Item.getText
Override it if it has a text representation. Default: returns null.
Item.setText
Override it if it allows to change the text. Default: throws an exception.
Node.getNodeType
It must be overridden to provide the type.
Item.clone
Override it if any other members to handle specially. Note: by definition, we do deep clone only.
Object.toString
Override if you want a representation other than XMLOutputter does.

Author:
tomyeh
See Also:
Item, Serialized Form

Field Summary
 
Fields inherited from interface org.zkoss.idom.Item
FIND_BY_PREFIX, FIND_BY_REGEX, FIND_BY_TAGNAME, FIND_IGNORE_CASE, FIND_RECURSIVE
 
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
 
Constructor Summary
protected AbstractItem()
          Constructor.
 
Method Summary
 org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
           
 java.lang.Object clone()
          Clones this object (a deep cloning not including contents contained in Textual nodes).
 org.w3c.dom.Node cloneNode(boolean deep)
           
 short compareDocumentPosition(org.w3c.dom.Node other)
           
 Item detach()
          Detach this item from its parent.
 boolean equals(java.lang.Object o)
          Overriding this method is prohibited.
 org.w3c.dom.NamedNodeMap getAttributes()
           
 java.lang.String getBaseURI()
           
 org.w3c.dom.NodeList getChildNodes()
           
 Document getDocument()
          Gets the document that owns this item.
 java.lang.Object getFeature(java.lang.String feature, java.lang.String version)
           
 org.w3c.dom.Node getFirstChild()
           
 org.w3c.dom.Node getLastChild()
           
 java.lang.String getLocalName()
           
 Locator getLocator()
          Gets the locator of this item.
 java.lang.String getNamespaceURI()
           
 org.w3c.dom.Node getNextSibling()
           
 java.lang.String getNodeName()
           
 java.lang.String getNodeValue()
           
 org.w3c.dom.Document getOwnerDocument()
           
 Group getParent()
          Gets the parent item.
 org.w3c.dom.Node getParentNode()
           
 java.lang.String getPrefix()
           
 org.w3c.dom.Node getPreviousSibling()
           
 java.lang.String getText()
          Gets the text of this item, or null if it is neither Textual nor Element.
 java.lang.String getTextContent()
           
 java.lang.Object getUserData(java.lang.String key)
           
 boolean hasAttributes()
           
 boolean hasChildNodes()
           
 int hashCode()
          Overriding this method is prohibited.
 org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild)
           
 boolean isDefaultNamespace(java.lang.String namespaceURI)
           
 boolean isEqualNode(org.w3c.dom.Node arg)
           
 boolean isSameNode(org.w3c.dom.Node other)
           
 boolean isSupported(java.lang.String feature, java.lang.String version)
           
 java.lang.String lookupNamespaceURI(java.lang.String prefix)
           
 java.lang.String lookupPrefix(java.lang.String namespaceURI)
           
protected static boolean match(Namespaceable vtx, java.lang.String namespace, java.lang.String name, java.util.regex.Pattern ptn, int mode)
          Tests whether a namespaceable item matches the criteria.
 void normalize()
           
 org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild)
           
 org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild)
           
 void setLocator(Locator loc)
          Sets the locator of this item.
 void setName(java.lang.String name)
          Sets the name of the item.
 void setNodeValue(java.lang.String nodeValue)
           
 void setParent(Group parent)
          Sets the parent item.
 void setPrefix(java.lang.String prefix)
           
 void setText(java.lang.String text)
          Sets the text of this item.
 void setTextContent(java.lang.String textContent)
           
 java.lang.Object setUserData(java.lang.String key, java.lang.Object data, org.w3c.dom.UserDataHandler handler)
           
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.zkoss.idom.Item
getName
 
Methods inherited from interface org.w3c.dom.Node
getNodeType
 

Constructor Detail

AbstractItem

protected AbstractItem()
Constructor.

Method Detail

match

protected static boolean match(Namespaceable vtx,
                               java.lang.String namespace,
                               java.lang.String name,
                               java.util.regex.Pattern ptn,
                               int mode)
Tests whether a namespaceable item matches the criteria. If mode don't contain FIND_BY_REGEX, ptn is ignored.


setName

public void setName(java.lang.String name)
Description copied from interface: Item
Sets the name of the item. For vertices that support namespace (implements Namespaceable), it is the same as setTagName.

Specified by:
setName in interface Item
See Also:
Namespaceable.setTagName(java.lang.String)

getText

public java.lang.String getText()
Description copied from interface: Item
Gets the text of this item, or null if it is neither Textual nor Element. For Element, the text is the concatenation of all its textual children, including Text, CDATA, and Binary.

Besides String-type value, some item, e.g., Binary, allows any type of objects. Caller could test whether a item implements the Binable interface, and use Binable.getValue instead. For binable vertices, getText is actually getValue().toString().

The returned value is neither trimmed nor normalized.

Specified by:
getText in interface Item

setText

public void setText(java.lang.String text)
Description copied from interface: Item
Sets the text of this item.

Specified by:
setText in interface Item

getDocument

public Document getDocument()
Description copied from interface: Item
Gets the document that owns this item. The owning document is the first document in its ancestor. For DOM, the document can only be the root, so the owning documents of vertices in a DOM tree are all the same.

Specified by:
getDocument in interface Item

detach

public Item detach()
Description copied from interface: Item
Detach this item from its parent.

Because each item can belong to at most one parent at a time, it is important to detach it first, before added to another tree -- even if it is the same tree/parent.

It has the similar effect as:
getParent().getChildren().remove(this).

Naming reason: we don't call this method as getChildren() to be compatible with the naming style of Attributable.attributes -- which is limited to org.w3c.dom.Attr.getAttributes. Also, it doesn't have the setter and it is "live", so it 'seem' better to call it getChildren().

Specified by:
detach in interface Item
Returns:
this item

getParent

public final Group getParent()
Description copied from interface: Item
Gets the parent item.

Specified by:
getParent in interface Item

setParent

public void setParent(Group parent)
Description copied from interface: Item
Sets the parent item.

DO NOT call this method. It is used internally. Instead, use detach or thru getChildren().

Specified by:
setParent in interface Item

getLocator

public final Locator getLocator()
Description copied from interface: Item
Gets the locator of this item.

Specified by:
getLocator in interface Item
Returns:
the locator; null if not available (default)

setLocator

public final void setLocator(Locator loc)
Description copied from interface: Item
Sets the locator of this item.

Unlike other methods, it won't change the modification flag.

Specified by:
setLocator in interface Item
Parameters:
loc - the locator; null if not available

getNodeName

public java.lang.String getNodeName()
Specified by:
getNodeName in interface org.w3c.dom.Node

getNodeValue

public java.lang.String getNodeValue()
Specified by:
getNodeValue in interface org.w3c.dom.Node

setNodeValue

public void setNodeValue(java.lang.String nodeValue)
Specified by:
setNodeValue in interface org.w3c.dom.Node

getOwnerDocument

public org.w3c.dom.Document getOwnerDocument()
Specified by:
getOwnerDocument in interface org.w3c.dom.Node

cloneNode

public final org.w3c.dom.Node cloneNode(boolean deep)
Specified by:
cloneNode in interface org.w3c.dom.Node

getParentNode

public final org.w3c.dom.Node getParentNode()
Specified by:
getParentNode in interface org.w3c.dom.Node

getPreviousSibling

public final org.w3c.dom.Node getPreviousSibling()
Specified by:
getPreviousSibling in interface org.w3c.dom.Node

getNextSibling

public final org.w3c.dom.Node getNextSibling()
Specified by:
getNextSibling in interface org.w3c.dom.Node

getChildNodes

public org.w3c.dom.NodeList getChildNodes()
Specified by:
getChildNodes in interface org.w3c.dom.Node

getFirstChild

public org.w3c.dom.Node getFirstChild()
Specified by:
getFirstChild in interface org.w3c.dom.Node

getLastChild

public org.w3c.dom.Node getLastChild()
Specified by:
getLastChild in interface org.w3c.dom.Node

hasChildNodes

public boolean hasChildNodes()
Specified by:
hasChildNodes in interface org.w3c.dom.Node

insertBefore

public org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild,
                                     org.w3c.dom.Node refChild)
Specified by:
insertBefore in interface org.w3c.dom.Node

replaceChild

public org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild,
                                     org.w3c.dom.Node oldChild)
Specified by:
replaceChild in interface org.w3c.dom.Node

removeChild

public org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild)
Specified by:
removeChild in interface org.w3c.dom.Node

appendChild

public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
Specified by:
appendChild in interface org.w3c.dom.Node

normalize

public final void normalize()
Specified by:
normalize in interface org.w3c.dom.Node

isSupported

public final boolean isSupported(java.lang.String feature,
                                 java.lang.String version)
Specified by:
isSupported in interface org.w3c.dom.Node

getNamespaceURI

public java.lang.String getNamespaceURI()
Specified by:
getNamespaceURI in interface org.w3c.dom.Node

getPrefix

public java.lang.String getPrefix()
Specified by:
getPrefix in interface org.w3c.dom.Node

getLocalName

public java.lang.String getLocalName()
Specified by:
getLocalName in interface org.w3c.dom.Node

setPrefix

public void setPrefix(java.lang.String prefix)
Specified by:
setPrefix in interface org.w3c.dom.Node

getAttributes

public org.w3c.dom.NamedNodeMap getAttributes()
Specified by:
getAttributes in interface org.w3c.dom.Node

hasAttributes

public boolean hasAttributes()
Specified by:
hasAttributes in interface org.w3c.dom.Node

getBaseURI

public java.lang.String getBaseURI()
Specified by:
getBaseURI in interface org.w3c.dom.Node

compareDocumentPosition

public short compareDocumentPosition(org.w3c.dom.Node other)
                              throws DOMException
Specified by:
compareDocumentPosition in interface org.w3c.dom.Node
Throws:
DOMException

getTextContent

public java.lang.String getTextContent()
                                throws DOMException
Specified by:
getTextContent in interface org.w3c.dom.Node
Throws:
DOMException

setTextContent

public void setTextContent(java.lang.String textContent)
                    throws DOMException
Specified by:
setTextContent in interface org.w3c.dom.Node
Throws:
DOMException

isSameNode

public boolean isSameNode(org.w3c.dom.Node other)
Specified by:
isSameNode in interface org.w3c.dom.Node

lookupPrefix

public java.lang.String lookupPrefix(java.lang.String namespaceURI)
Specified by:
lookupPrefix in interface org.w3c.dom.Node

isDefaultNamespace

public boolean isDefaultNamespace(java.lang.String namespaceURI)
Specified by:
isDefaultNamespace in interface org.w3c.dom.Node

lookupNamespaceURI

public java.lang.String lookupNamespaceURI(java.lang.String prefix)
Specified by:
lookupNamespaceURI in interface org.w3c.dom.Node

isEqualNode

public boolean isEqualNode(org.w3c.dom.Node arg)
Specified by:
isEqualNode in interface org.w3c.dom.Node

getFeature

public java.lang.Object getFeature(java.lang.String feature,
                                   java.lang.String version)
Specified by:
getFeature in interface org.w3c.dom.Node

setUserData

public java.lang.Object setUserData(java.lang.String key,
                                    java.lang.Object data,
                                    org.w3c.dom.UserDataHandler handler)
Specified by:
setUserData in interface org.w3c.dom.Node

getUserData

public java.lang.Object getUserData(java.lang.String key)
Specified by:
getUserData in interface org.w3c.dom.Node

equals

public final boolean equals(java.lang.Object o)
Overriding this method is prohibited.

Overrides:
equals in class java.lang.Object

hashCode

public final int hashCode()
Overriding this method is prohibited.

Overrides:
hashCode in class java.lang.Object

clone

public java.lang.Object clone()
Clones this object (a deep cloning not including contents contained in Textual nodes). Note: after cloning, the read-only flag always becomes false, and the parent becomes null (i.e., detached).

Specified by:
clone in interface Item
Overrides:
clone in class java.lang.Object


Copyright © 2005-2011 Potix Corporation. All Rights Reserved. SourceForge.net Logo