Class XMLMemento

  • All Implemented Interfaces:
    IMemento

    public final class XMLMemento
    extends Object
    implements IMemento
    This class represents the default implementation of the IMemento interface.

    This class is not intended to be extended by clients.

    See Also:
    IMemento
    • Constructor Detail

      • XMLMemento

        public XMLMemento​(Document document,
                          Element element)
        Creates a memento for the specified document and element.

        Clients should use createReadRoot and createWriteRoot to create the initial memento on a document.

        Parameters:
        document - the document for the memento
        element - the element node for the memento
    • Method Detail

      • createReadRoot

        public static XMLMemento createReadRoot​(Reader reader)
                                         throws WorkbenchException
        Creates a Document from the Reader and returns a memento on the first Element for reading the document.

        Same as calling createReadRoot(reader, null)

        Parameters:
        reader - the Reader used to create the memento's document
        Returns:
        a memento on the first Element for reading the document
        Throws:
        WorkbenchException - if IO problems, invalid format, or no element.
      • createReadRoot

        public static XMLMemento createReadRoot​(Reader reader,
                                                String baseDir)
                                         throws WorkbenchException
        Creates a Document from the Reader and returns a memento on the first Element for reading the document.
        Parameters:
        reader - the Reader used to create the memento's document
        baseDir - the directory used to resolve relative file names in the XML document. This directory must exist and include the trailing separator. The directory format, including the separators, must be valid for the platform. Can be null if not needed.
        Returns:
        a memento on the first Element for reading the document
        Throws:
        WorkbenchException - if IO problems, invalid format, or no element.
      • createWriteRoot

        public static XMLMemento createWriteRoot​(String type)
                                          throws DOMException
        Returns a root memento for writing a document.
        Parameters:
        type - the element node type to create on the document
        Returns:
        the root memento for writing a document
        Throws:
        DOMException
      • createChild

        public IMemento createChild​(String type,
                                    String id)
                             throws DOMException
        Creates a new child of this memento with the given type and id. The id is stored in the child memento (using a special reserved key, TAG_ID) and can be retrieved using getId.

        The getChild and getChildren methods are used to retrieve children of a given type.

        Specified by:
        createChild in interface IMemento
        Parameters:
        type - the type
        id - the child id
        Returns:
        a new child memento with the given type and id
        Throws:
        DOMException - if the child cannot be created
        See Also:
        getID()
      • copyChild

        public IMemento copyChild​(IMemento child)
                           throws DOMException
        Create a copy of the child node and append it to this node.
        Parameters:
        child -
        Returns:
        An IMenento for the new child node.
        Throws:
        DOMException - if the child cannot be created
      • getChild

        public IMemento getChild​(String type)
        Description copied from interface: IMemento
        Returns the first child with the given type id.
        Specified by:
        getChild in interface IMemento
        Parameters:
        type - the type id
        Returns:
        the first child with the given type. May return null .
      • getChildren

        public IMemento[] getChildren()
        Description copied from interface: IMemento
        Returns all children of this node.
        Specified by:
        getChildren in interface IMemento
        Returns:
        an array of children of this node. This will not be null. If there are no children, an array of length zero will be returned.
      • getChildren

        public IMemento[] getChildren​(String type)
        Description copied from interface: IMemento
        Returns all children with the given type id.
        Specified by:
        getChildren in interface IMemento
        Parameters:
        type - the type id
        Returns:
        an array of children with the given type. This will not be null. If there are no keys, an array of length zero will be returned.
      • getFloat

        public Float getFloat​(String key)
        Description copied from interface: IMemento
        Returns the floating point value of the given key.
        Specified by:
        getFloat in interface IMemento
        Parameters:
        key - the key
        Returns:
        the value, or null if the key was not found or was found but was not a floating point number
      • getInteger

        public Integer getInteger​(String key)
        Description copied from interface: IMemento
        Returns the integer value of the given key.
        Specified by:
        getInteger in interface IMemento
        Parameters:
        key - the key
        Returns:
        the value, or null if the key was not found or was found but was not an integer
      • getString

        public String getString​(String key)
        Description copied from interface: IMemento
        Returns the string value of the given key.
        Specified by:
        getString in interface IMemento
        Parameters:
        key - the key
        Returns:
        the value, or null if the key was not found
      • getBoolean

        public Boolean getBoolean​(String key)
        Description copied from interface: IMemento
        Returns the boolean value of the given key.
        Specified by:
        getBoolean in interface IMemento
        Parameters:
        key - the key
        Returns:
        the value, or null if the key was not found
        Since:
        3.4
      • getTextData

        public String getTextData()
                           throws DOMException
        Returns the data of the Text node of the memento. Each memento is allowed only one Text node.
        Specified by:
        getTextData in interface IMemento
        Returns:
        the data of the Text node of the memento, or null if the memento has no Text node.
        Throws:
        DOMException - if the text node is too big
        Since:
        2.0
      • getAttributeKeys

        public String[] getAttributeKeys()
        Description copied from interface: IMemento
        Returns an array of all the attribute keys of the memento. This will not be null. If there are no keys, an array of length zero will be returned.
        Specified by:
        getAttributeKeys in interface IMemento
        Returns:
        an array with all the attribute keys of the memento
        Since:
        3.4
      • putFloat

        public void putFloat​(String key,
                             float f)
                      throws DOMException
        Sets the value of the given key to the given floating point number.
        Specified by:
        putFloat in interface IMemento
        Parameters:
        key - the key
        f - the value
        Throws:
        DOMException - if the attribute cannot be set
      • putInteger

        public void putInteger​(String key,
                               int n)
                        throws DOMException
        Sets the value of the given key to the given integer.
        Specified by:
        putInteger in interface IMemento
        Parameters:
        key - the key
        n - the value
        Throws:
        DOMException - if the attribute cannot be set
      • putMemento

        public void putMemento​(IMemento memento)
                        throws DOMException
        Copy the attributes and children from memento to the receiver.
        Specified by:
        putMemento in interface IMemento
        Parameters:
        memento - the IMemento to be copied.
        Throws:
        DOMException - if the attributes or children cannot be copied to this node.
      • putString

        public void putString​(String key,
                              String value)
                       throws DOMException
        Sets the value of the given key to the given string.
        Specified by:
        putString in interface IMemento
        Parameters:
        key - the key
        value - the value
        Throws:
        DOMException - if the attribute cannot be set
      • putBoolean

        public void putBoolean​(String key,
                               boolean value)
                        throws DOMException
        Sets the value of the given key to the given boolean value.
        Specified by:
        putBoolean in interface IMemento
        Parameters:
        key - the key
        value - the value
        Throws:
        DOMException - if the attribute cannot be set
        Since:
        3.4
      • putTextData

        public void putTextData​(String data)
                         throws DOMException
        Sets the memento's Text node to contain the given data. Creates the Text node if none exists. If a Text node does exist, it's current contents are replaced. Each memento is allowed only one text node.
        Specified by:
        putTextData in interface IMemento
        Parameters:
        data - the data to be placed on the Text node
        Throws:
        DOMException - if the text node cannot be created under this node.
        Since:
        2.0
      • save

        public void save​(Writer writer)
                  throws IOException
        Saves this memento's document current values to the specified writer.
        Parameters:
        writer - the writer used to save the memento's document
        Throws:
        IOException - if there is a problem serializing the document to the stream.