Class XMPNode

java.lang.Object
org.verapdf.xmp.impl.XMPNode
All Implemented Interfaces:
Comparable

public class XMPNode extends Object implements Comparable
A node in the internally XMP tree, which can be a schema node, a property node, an array node, an array item, a struct node or a qualifier node (without '?'). Possible improvements: 1. The kind Node of node might be better represented by a class-hierarchy of different nodes. 2. The array type should be an enum 3. isImplicitNode should be removed completely and replaced by return values of fi. 4. hasLanguage, hasType should be automatically maintained by XMPNode
Since:
21.02.2006
  • Constructor Details

    • XMPNode

      public XMPNode(String name, String value, PropertyOptions options, String originalPrefix)
      Creates an XMPNode with initial values.
      Parameters:
      name - the name of the node
      value - the value of the node
      options - the options of the node
    • XMPNode

      public XMPNode(String name, PropertyOptions options, String originalPrefix)
      Constructor for the node without value.
      Parameters:
      name - the name of the node
      options - the options of the node
  • Method Details

    • getOriginalPrefix

      public String getOriginalPrefix()
    • clear

      public void clear()
      Resets the node.
    • getParent

      public XMPNode getParent()
      Returns:
      Returns the parent node.
    • getChild

      public XMPNode getChild(int index)
      Parameters:
      index - an index [1..size]
      Returns:
      Returns the child with the requested index.
    • addChild

      public void addChild(XMPNode node) throws XMPException
      Adds a node as child to this node.
      Parameters:
      node - an XMPNode
      Throws:
      XMPException
    • addChild

      public void addChild(int index, XMPNode node) throws XMPException
      Adds a node as child to this node.
      Parameters:
      index - the index of the node before which the new one is inserted. Note: The node children are indexed from [1..size]! An index of size + 1 appends a node.
      node - an XMPNode
      Throws:
      XMPException
    • replaceChild

      public void replaceChild(int index, XMPNode node)
      Replaces a node with another one.
      Parameters:
      index - the index of the node that will be replaced. Note: The node children are indexed from [1..size]!
      node - the replacement XMPNode
    • removeChild

      public void removeChild(int itemIndex)
      Removes a child at the requested index.
      Parameters:
      itemIndex - the index to remove [1..size]
    • removeChild

      public void removeChild(XMPNode node)
      Removes a child node. If its a schema node and doesn't have any children anymore, its deleted.
      Parameters:
      node - the child node to delete.
    • cleanupChildren

      protected void cleanupChildren()
      Removes the children list if this node has no children anymore; checks if the provided node is a schema node and doesn't have any children anymore, its deleted.
    • removeChildren

      public void removeChildren()
      Removes all children from the node.
    • getChildrenLength

      public int getChildrenLength()
      Returns:
      Returns the number of children without neccessarily creating a list.
    • findChildByName

      public XMPNode findChildByName(String expr)
      Parameters:
      expr - child node name to look for
      Returns:
      Returns an XMPNode if node has been found, null otherwise.
    • getQualifier

      public XMPNode getQualifier(int index)
      Parameters:
      index - an index [1..size]
      Returns:
      Returns the qualifier with the requested index.
    • getQualifierLength

      public int getQualifierLength()
      Returns:
      Returns the number of qualifier without neccessarily creating a list.
    • addQualifier

      public void addQualifier(XMPNode qualNode) throws XMPException
      Appends a qualifier to the qualifier list and sets respective options.
      Parameters:
      qualNode - a qualifier node.
      Throws:
      XMPException
    • removeQualifier

      public void removeQualifier(XMPNode qualNode)
      Removes one qualifier node and fixes the options.
      Parameters:
      qualNode - qualifier to remove
    • removeQualifiers

      public void removeQualifiers()
      Removes all qualifiers from the node and sets the options appropriate.
    • findQualifierByName

      public XMPNode findQualifierByName(String expr)
      Parameters:
      expr - qualifier node name to look for
      Returns:
      Returns a qualifier XMPNode if node has been found, null otherwise.
    • hasChildren

      public boolean hasChildren()
      Returns:
      Returns whether the node has children.
    • iterateChildren

      public Iterator iterateChildren()
      Returns:
      Returns an iterator for the children. Note: take care to use it.remove(), as the flag are not adjusted in that case.
    • hasQualifier

      public boolean hasQualifier()
      Returns:
      Returns whether the node has qualifier attached.
    • iterateQualifier

      public Iterator iterateQualifier()
      Returns:
      Returns an iterator for the qualifier. Note: take care to use it.remove(), as the flag are not adjusted in that case.
    • clone

      public Object clone()
      Performs a deep clone of the node and the complete subtree.
      Overrides:
      clone in class Object
      See Also:
    • cloneSubtree

      public void cloneSubtree(XMPNode destination)
      Performs a deep clone of the complete subtree (children and qualifier )into and add it to the destination node.
      Parameters:
      destination - the node to add the cloned subtree
    • dumpNode

      public String dumpNode(boolean recursive)
      Renders this node and the tree unter this node in a human readable form.
      Parameters:
      recursive - Flag is qualifier and child nodes shall be rendered too
      Returns:
      Returns a multiline string containing the dump.
    • compareTo

      public int compareTo(Object xmpNode)
      Specified by:
      compareTo in interface Comparable
      See Also:
    • getName

      public String getName()
      Returns:
      Returns the name.
    • setName

      public void setName(String name)
      Parameters:
      name - The name to set.
    • getValue

      public String getValue()
      Returns:
      Returns the value.
    • setValue

      public void setValue(String value)
      Parameters:
      value - The value to set.
    • getOptions

      public PropertyOptions getOptions()
      Returns:
      Returns the options.
    • setOptions

      public void setOptions(PropertyOptions options)
      Updates the options of the node.
      Parameters:
      options - the options to set.
    • isImplicit

      public boolean isImplicit()
      Returns:
      Returns the implicit flag
    • setImplicit

      public void setImplicit(boolean implicit)
      Parameters:
      implicit - Sets the implicit node flag
    • getHasAliases

      public boolean getHasAliases()
      Returns:
      Returns if the node contains aliases (applies only to schema nodes)
    • setHasAliases

      public void setHasAliases(boolean hasAliases)
      Parameters:
      hasAliases - sets the flag that the node contains aliases
    • isAlias

      public boolean isAlias()
      Returns:
      Returns if the node contains aliases (applies only to schema nodes)
    • setAlias

      public void setAlias(boolean alias)
      Parameters:
      alias - sets the flag that the node is an alias
    • getHasValueChild

      public boolean getHasValueChild()
      Returns:
      the hasValueChild
    • setHasValueChild

      public void setHasValueChild(boolean hasValueChild)
      Parameters:
      hasValueChild - the hasValueChild to set
    • sort

      public void sort()
      Sorts the complete datamodel according to the following rules:
      • Nodes at one level are sorted by name, that is prefix + local name
      • Starting at the root node the children and qualifier are sorted recursively, which the following exceptions.
      • Sorting will not be used for arrays.
      • Within qualifier "xml:lang" and/or "rdf:type" stay at the top in that order, all others are sorted.
    • isLanguageNode

      public boolean isLanguageNode()
      Returns:
      Returns whether this node is a language qualifier.
    • getUnmodifiableChildren

      public List getUnmodifiableChildren()
      Returns:
      Returns a read-only copy of child nodes list.
    • getQualifier

      protected List getQualifier()
      Returns:
      Returns list of qualifier that is lazy initialized.
    • setParent

      protected void setParent(XMPNode parent)
      Sets the parent node, this is solely done by addChild(...) and addQualifier().
      Parameters:
      parent - Sets the parent node.