Class 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.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

      Constructors 
      Modifier Constructor Description
      protected AbstractItem()
      Constructor.
    • 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