# Class XMLMemento

java.lang.Object
org.eclipse.ui.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`

## Field Summary

### Fields inherited from interface IMemento

`TAG_ID`

## Constructor Summary

Constructors
Constructor
Description
`XMLMemento(Document document, Element element)`
Creates a memento for the specified document and element.

## Method Summary

Modifier and Type
Method
Description
`IMemento`
`copyChild(IMemento child)`
Create a copy of the child node and append it to this node.
`IMemento`
`createChild(String type)`
Creates a new child of this memento with the given type.
`IMemento`
`createChild(String type, String id)`
Creates a new child of this memento with the given type and id.
`static XMLMemento`
`createReadRoot(Reader reader)`
Creates a `Document` from the `Reader` and returns a memento on the first `Element` for reading the document.
`static XMLMemento`
`createReadRoot(Reader reader, String baseDir)`
Creates a `Document` from the `Reader` and returns a memento on the first `Element` for reading the document.
`static XMLMemento`
`createWriteRoot(String type)`
Returns a root memento for writing a document.
`String[]`
`getAttributeKeys()`
Returns an array of all the attribute keys of the memento.
`Boolean`
`getBoolean(String key)`
Returns the boolean value of the given key.
`IMemento`
`getChild(String type)`
Returns the first child with the given type id.
`IMemento[]`
`getChildren()`
Returns all children of this node.
`IMemento[]`
`getChildren(String type)`
Returns all children with the given type id.
`Float`
`getFloat(String key)`
Returns the floating point value of the given key.
`String`
`getID()`
Returns the id for this memento.
`Integer`
`getInteger(String key)`
Returns the integer value of the given key.
`String`
`getString(String key)`
Returns the string value of the given key.
`String`
`getTextData()`
Returns the data of the Text node of the memento.
`String`
`getType()`
Returns the type for this memento.
`void`
`putBoolean(String key, boolean value)`
Sets the value of the given key to the given boolean value.
`void`
`putFloat(String key, float f)`
Sets the value of the given key to the given floating point number.
`void`
`putInteger(String key, int n)`
Sets the value of the given key to the given integer.
`void`
`putMemento(IMemento memento)`
Copy the attributes and children from `memento` to the receiver.
`void`
`putString(String key, String value)`
Sets the value of the given key to the given string.
`void`
`putTextData(String data)`
Sets the memento's Text node to contain the given data.
`void`
`save(Writer writer)`
Saves this memento's document current values to the specified writer.
`String`
`toString()`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### 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 Details

### 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` - when the element could not be created for the passed type

### createChild

public IMemento createChild(String type) throws DOMException
Creates a new child of this memento with the given type.

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

Specified by:
  `createChild` in interface `IMemento`
Parameters:
  `type` - the type
Returns:
  a new child memento
Throws:
  `DOMException` - if the child cannot be created
See Also:
  - `getChild(String)`
  - `getChildren()`

### 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` - the child to copy
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

### getType

public String getType()
Description copied from interface: `IMemento`
Returns the type for this memento.

Specified by:
  `getType` in interface `IMemento`
Returns:
  the memento type
Since:
  3.4
See Also:
  - `IMemento.createChild(java.lang.String)`
  - `IMemento.createChild(java.lang.String,java.lang.String)`

### getID

public String getID()
Description copied from interface: `IMemento`
Returns the id for this memento.

Specified by:
  `getID` in interface `IMemento`
Returns:
  the memento id, or `null` if none
See Also:
  - `IMemento.createChild(java.lang.String,java.lang.String)`

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

### toString

public String toString()

Overrides:
  `toString` in class `Object`