Package uk.ac.starlink.datanode.nodes

# Class FITSDataNode

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

All Implemented Interfaces:
  `DataNode`

Direct Known Subclasses:
  `FITSFileDataNode`, `FITSStreamDataNode`

public abstract class FITSDataNode extends DefaultDataNode
Abstract DataNode class for representing FITS objects. Subclasses are provided for FITS objects on disk or in a stream.

Author:
  Mark Taylor (Starlink)

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`FITSDataNode.ArrayDataMaker`
Interface used for objects which can supply an ArrayDataInput object on demand (more than once if necessary).

## Constructor Summary

Constructors
Constructor
Description
`FITSDataNode(uk.ac.starlink.util.DataSource datsrc)`
Constructs a FITSDataNode from a data source.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`allowsChildren()`
The `DefaultDataNode` implementation of this method returns `false`.
`protected abstract FITSDataNode.ArrayDataMaker`
`getArrayData(long start, long size)`
Returns an ArrayDataMaker encapsulating the same input stream as the on one which this FITSDataNode is based, but starting at a given offset `start` into the stream and `size` bytes long.
`Iterator`
`getChildIterator()`
The `DefaultDataNode` implementation of this method throws `UnsupportedOperationException` (`DefaultDataNode.allowsChildren()` is false).
`protected nom.tam.util.ArrayDataInput`
`getDataInput()`
Returns an ArrayDataInput object containing the data from this FITS object.
`String`
`getDescription()`
Gets a concise description of this object.
`String`
`getName()`
Gets the name of this object.
`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.
`static boolean`
`isMagic(byte[] buffer)`
Indicates whether a buffer of bytes looks like the start of a FITS file.

### Methods inherited from class uk.ac.starlink.datanode.nodes.DefaultDataNode

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

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

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

## Constructor Details

### FITSDataNode

public FITSDataNode(uk.ac.starlink.util.DataSource datsrc) throws NoSuchDataException
Constructs a FITSDataNode from a data source.

Parameters:
  `datsrc` - the source of the data
Throws:
  `NoSuchDataException`

## Method Details

### getName

public String getName()
Description copied from interface: `DataNode`
Gets the name of this object. This is an intrinsic property of the object.

Specified by:
  `getName` in interface `DataNode`
Overrides:
  `getName` in class `DefaultDataNode`
Returns:
  the name of the object

### getDescription

public String getDescription()
Description copied from interface: `DataNode`
Gets a concise description of this object. The form of the description will depend on the type of node, but it might detail the shape or type of data represented, or otherwise give some information additional to the name. It should not include the return value of the `getName` method, since they may be presented together. It should be on one line, and preferably no longer than around 70 characters. The `null` value may be returned if there is nothing to say.

Specified by:
  `getDescription` in interface `DataNode`
Overrides:
  `getDescription` in class `DefaultDataNode`
Returns:
  a short string describing this object

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

### getArrayData

protected abstract FITSDataNode.ArrayDataMaker getArrayData(long start, long size)
Returns an ArrayDataMaker encapsulating the same input stream as the on one which this FITSDataNode is based, but starting at a given offset `start` into the stream and `size` bytes long.

Parameters:
  `start` - the offset into this FITSDataNode's stream at which the returned source's streams should start
  `size` - the number of bytes contained by the returned source's stream

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

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

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

### getDataInput

protected nom.tam.util.ArrayDataInput getDataInput() throws IOException
Returns an ArrayDataInput object containing the data from this FITS object.

Throws:
  `IOException`

### isMagic

public static boolean isMagic(byte[] buffer)
Indicates whether a buffer of bytes looks like the start of a FITS file.

Parameters:
  `buffer` - the first few bytes of a potential stream
Returns:
  true if `buffer` matches the FITS file magic number