Package uk.ac.starlink.util

# Class PrimitiveXMLEncodeDecode

java.lang.Object
uk.ac.starlink.util.PrimitiveXMLEncodeDecode

All Implemented Interfaces:
  `XMLEncodeDecode`

public abstract class PrimitiveXMLEncodeDecode extends Object implements XMLEncodeDecode
An abstract base-class for objects that want to encode and decode themselves from an XML stream.

It contains the `XMLEncodeDecode` interface (with an unimplemented encode() method) and a number of support methods for encoding and decoding primitive values.

This implementation also provides default implementations of `ChangeListener` methods that allow an extending class to provide services for registering, responding and issuing `ChangeEvent`s.

Version:
  $Id$
Author:
  Peter W. Draper

## Field Summary

Fields
Modifier and Type
Field
Description
`protected EventListenerList`
`listeners`

## Constructor Summary

Constructors
Constructor
Description
`PrimitiveXMLEncodeDecode()`

## Method Summary

Modifier and Type
Method
Description
`static CDATASection`
`addCDATASection(Element rootElement, String value)`
Create a new CDATA section with the given content and add it as a child of a given element.
`void`
`addChangeListener(ChangeListener l)`
Registers a listener who wants to be informed about changes.
`static Element`
`addChildElement(Element rootElement, String name)`
Create a child element with no content and add it to the given element.
`static Element`
`addChildElement(Element rootElement, String name, boolean value)`
Add an element with boolean value as a child of another element.
`static Element`
`addChildElement(Element rootElement, String name, double value)`
Add an element with double value as a child of another element.
`static Element`
`addChildElement(Element rootElement, String name, int value)`
Add an element with integer value as a child of another element.
`static Element`
`addChildElement(Element rootElement, String name, String value)`
Add an element with String value as a child of another element.
`static boolean`
`booleanFromString(String value)`
Convert a String back to a boolean.
`static String`
`booleanToString(boolean value)`
Convert a boolean to a String.
`void`
`decode(Element rootElement)`
Decode (ie, restore) the internal state of this object from an Element.
`static double`
`doubleFromString(String value)`
Convert a String back to a double.
`static String`
`doubleToString(double value)`
Convert a double to a String.
`abstract void`
`encode(Element rootElement)`
Encode the internal state of this object so that it is rooted in the given Element.
`protected void`
`fireChanged()`
Send ChangeEvent event to all listeners.
`static List<Element>`
`getChildElements(Element element)`
Return all the Elements that are children of another Element.
`static NodeList`
`getChildren(Element rootElement)`
Return a List of all children.
`static String`
`getElementName(Element element)`
Get the name of an element.
`static String`
`getElementValue(Element element)`
Get the "value" of an element (really the content).
`static int`
`intFromString(String value)`
Convert a String back to an integer.
`static String`
`intToString(int value)`
Convert an integer to a String.
`static long`
`longFromString(String value)`
Convert a String back to a long.
`static String`
`longToString(long value)`
Convert a long to a String.
`void`
`removeChangeListener(ChangeListener l)`
De-registers a listener for changes.
`abstract void`
`setFromString(String name, String value)`
Set the value of a object field using string representation of the field name and its value.

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface uk.ac.starlink.util.XMLEncodeDecode

`getTagName`

## Field Details

### listeners

protected EventListenerList listeners

## Constructor Details

### PrimitiveXMLEncodeDecode

public PrimitiveXMLEncodeDecode()

## Method Details

### addChangeListener

public void addChangeListener(ChangeListener l)
Registers a listener who wants to be informed about changes.

Parameters:
  `l` - the ChangeListener listener.

### removeChangeListener

public void removeChangeListener(ChangeListener l)
De-registers a listener for changes.

Parameters:
  `l` - the ChangeListener listener.

### fireChanged

protected void fireChanged()
Send ChangeEvent event to all listeners.

### encode

public abstract void encode(Element rootElement)
Description copied from interface: `XMLEncodeDecode`
Encode the internal state of this object so that it is rooted in the given Element.

Specified by:
  `encode` in interface `XMLEncodeDecode`
Parameters:
  `rootElement` - the Element within which the object should store its configuration.

### decode

public void decode(Element rootElement)
Description copied from interface: `XMLEncodeDecode`
Decode (ie, restore) the internal state of this object from an Element.

Specified by:
  `decode` in interface `XMLEncodeDecode`
Parameters:
  `rootElement` - the element to which a previous object this this type has attached its configuration.

### getChildElements

public static List<Element> getChildElements(Element element)
Return all the Elements that are children of another Element.

### setFromString

public abstract void setFromString(String name, String value)
Set the value of a object field using string representation of the field name and its value. Users of the default decode implementation must re-implement this method.

### addChildElement

public static Element addChildElement(Element rootElement, String name)
Create a child element with no content and add it to the given element.

### addCDATASection

public static CDATASection addCDATASection(Element rootElement, String value)
Create a new CDATA section with the given content and add it as a child of a given element.

### addChildElement

public static Element addChildElement(Element rootElement, String name, String value)
Add an element with String value as a child of another element. The String is stored as CDATA.

### addChildElement

public static Element addChildElement(Element rootElement, String name, boolean value)
Add an element with boolean value as a child of another element.

### addChildElement

public static Element addChildElement(Element rootElement, String name, int value)
Add an element with integer value as a child of another element.

### addChildElement

public static Element addChildElement(Element rootElement, String name, double value)
Add an element with double value as a child of another element.

### getChildren

public static NodeList getChildren(Element rootElement)
Return a List of all children. Use the NodeList interface to step through these.

### getElementName

public static String getElementName(Element element)
Get the name of an element.

### getElementValue

public static String getElementValue(Element element)
Get the "value" of an element (really the content).

### doubleToString

public static String doubleToString(double value)
Convert a double to a String.

### doubleFromString

public static double doubleFromString(String value)
Convert a String back to a double.

### booleanToString

public static String booleanToString(boolean value)
Convert a boolean to a String.

### booleanFromString

public static boolean booleanFromString(String value)
Convert a String back to a boolean.

### intToString

public static String intToString(int value)
Convert an integer to a String.

### intFromString

public static int intFromString(String value)
Convert a String back to an integer.

### longToString

public static String longToString(long value)
Convert a long to a String.

### longFromString

public static long longFromString(String value)
Convert a String back to a long.