# Class DocumentDataNode

java.lang.Object
uk.ac.starlink.datanode.nodes.DefaultDataNode
uk.ac.starlink.datanode.nodes.DocumentDataNode

All Implemented Interfaces:
  `DataNode`

Direct Known Subclasses:
  `VOTableDataNode`

public class DocumentDataNode extends DefaultDataNode
DataNode implementation which describes a top-level XML document. DOM building is deferred.

Author:
  Mark Taylor (Starlink)

## Constructor Summary

Constructors
Constructor
Description
`DocumentDataNode(Source xsrc)`
`DocumentDataNode(XMLDocument xdoc)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`allowsChildren()`
The `DefaultDataNode` implementation of this method returns `false`.
`protected void`
`checkTopElement(String localName, String namespaceURI)`
`protected void`
`checkTopLocalName(String localName)`
`void`
`configureDetail(DetailViewer dv)`
No custom configuration is performed.
`Iterator`
`getChildIterator()`
The `DefaultDataNode` implementation of this method throws `UnsupportedOperationException` (`DefaultDataNode.allowsChildren()` is false).
`protected Iterator`
`getChildIterator(Node parentNode)`
`protected DOMSource`
`getDocument()`
Returns a DOMSource corresponding to the XMLDocument underlying this data node.
`String`
`getNodeTLA()`
The `DefaultDataNode` implementation returns the string "...".
`String`
`getNodeType()`
Returns a short sentence indicating what kind of node this is.
`String`
`getPathSeparator()`
Returns a default separator string.

### Methods inherited from class DefaultDataNode

`beep, getChildMaker, getCreator, getDataObject, getDescription, getIcon, getLabel, getName, getParentObject, getPathElement, hasDataObject, makeChild, makeErrorChild, registerDataObject, setChildMaker, setCreator, setDescription, setIconID, setLabel, setName, setParentObject, toString`

### Methods inherited from class Object

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

## Constructor Details

### DocumentDataNode

public DocumentDataNode(XMLDocument xdoc)

### DocumentDataNode

public DocumentDataNode(Source xsrc) throws NoSuchDataException

Throws:
  `NoSuchDataException`

## Method Details

### allowsChildren

public boolean allowsChildren()
Description copied from class: `DefaultDataNode`
The `DefaultDataNode` implementation of this method returns `false`.

Specified by:
  `allowsChildren` in interface `DataNode`
Overrides:
  `allowsChildren` in class `DefaultDataNode`
Returns:
  `true` if the node is of a type which can have child nodes, `false` otherwise

### getNodeTLA

public String getNodeTLA()
Description copied from class: `DefaultDataNode`
The `DefaultDataNode` implementation returns the string "...".

Specified by:
  `getNodeTLA` in interface `DataNode`
Overrides:
  `getNodeTLA` in class `DefaultDataNode`
Returns:
  "..."

### getNodeType

public String getNodeType()
Description copied from interface: `DataNode`
Returns a short sentence indicating what kind of node this is. The return value should be just a few words. As a rough guideline it should indicate what the implementing class is.

Specified by:
  `getNodeType` in interface `DataNode`
Overrides:
  `getNodeType` in class `DefaultDataNode`
Returns:
  a short description of the type of this `DataNode`

### getPathSeparator

public String getPathSeparator()
Description copied from class: `DefaultDataNode`
Returns a default separator string.

Specified by:
  `getPathSeparator` in interface `DataNode`
Overrides:
  `getPathSeparator` in class `DefaultDataNode`
Returns:
  "."

### checkTopElement

protected void checkTopElement(String localName, String namespaceURI) throws NoSuchDataException

Throws:
  `NoSuchDataException`

### checkTopLocalName

protected void checkTopLocalName(String localName) throws NoSuchDataException

Throws:
  `NoSuchDataException`

### getChildIterator

protected Iterator getChildIterator(Node parentNode)

### getChildIterator

public Iterator getChildIterator()
Description copied from class: `DefaultDataNode`
The `DefaultDataNode` implementation of this method throws `UnsupportedOperationException` (`DefaultDataNode.allowsChildren()` is false).

Specified by:
  `getChildIterator` in interface `DataNode`
Overrides:
  `getChildIterator` in class `DefaultDataNode`
Returns:
  an `Iterator` over the children. Each object iterated over should be a `DataNode`. Behaviour is undefined if this method is called on an object for which `allowsChildren` returns `false`.

### configureDetail

public void configureDetail(DetailViewer dv)
Description copied from class: `DefaultDataNode`
No custom configuration is performed.

Specified by:
  `configureDetail` in interface `DataNode`
Overrides:
  `configureDetail` in class `DefaultDataNode`
Parameters:
  `dv` - the detail viewer which this node is given an opportunity to configure

### getDocument

protected DOMSource getDocument() throws IOException, SAXException
Returns a DOMSource corresponding to the XMLDocument underlying this data node. Its node will be a Document node. If the DOM is not already available a parse will be performed to construct it.

Throws:
  `IOException`
  `SAXException`