uk.ac.starlink.datanode.nodes
Class HDSDataNode

java.lang.Object
  extended by uk.ac.starlink.datanode.nodes.DefaultDataNode
      extended by uk.ac.starlink.datanode.nodes.HDSDataNode
All Implemented Interfaces:
DataNode
Direct Known Subclasses:
ARYDataNode, NDFDataNode

public class HDSDataNode
extends DefaultDataNode

A DataNode representing an HDS object.

Version:
$Id$
Author:
Mark Taylor (Starlink)

Field Summary
static int MAX_CHILDREN_PER_ARRAY
          The maximum number of cells of an array of structures to be considered as its children - more could be unwieldy.
 
Constructor Summary
HDSDataNode(File file)
          Constructs an HDSDataNode from the file name of a container file.
HDSDataNode(HDSObject hobj)
          Constructs an HDSDataNode from an HDSObject.
HDSDataNode(String path)
          Constructs an HDSDataNode from an HDS path.
 
Method Summary
 boolean allowsChildren()
          Indicates whether this node allows child nodes or not.
 void configureDetail(DetailViewer dv)
          No custom configuration is performed.
 Iterator getChildIterator()
          Returns the children of this node.
 Object getDataObject(DataType dtype)
          The DefaultDataNode implementation returns any data object which has been registered using DefaultDataNode.registerDataObject(uk.ac.starlink.datanode.nodes.DataType, java.lang.Object).
 String getDescription()
          Gets a concise description of this object.
protected static HDSObject getHDSFromFile(File file)
           
protected static HDSObject getHDSFromPath(String path)
           
 String getName()
          Gets the name of this object.
 String getNodeTLA()
          Returns the string "HDS".
 String getNodeType()
          Returns a short sentence indicating what kind of node this is.
 Object getParentObject()
          Returns an object which is in some sense the parent of the one this node is based on.
 String getPathElement()
          The DefaultDataNode implementation returns the label as a default path element.
 String getPathSeparator()
          Returns a default separator string.
 boolean hasDataObject(DataType dtype)
          The DefaultDataNode implementation returns true for only those data objects which have been registered using DefaultDataNode.registerDataObject(uk.ac.starlink.datanode.nodes.DataType, java.lang.Object).
static boolean isMagic(byte[] magic)
           
 
Methods inherited from class uk.ac.starlink.datanode.nodes.DefaultDataNode
beep, getChildMaker, getCreator, getIcon, getLabel, 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
 

Field Detail

MAX_CHILDREN_PER_ARRAY

public static final int MAX_CHILDREN_PER_ARRAY
The maximum number of cells of an array of structures to be considered as its children - more could be unwieldy. Actually this doesn't need to be either static or final, it just feels like a constant.

See Also:
Constant Field Values
Constructor Detail

HDSDataNode

public HDSDataNode(HDSObject hobj)
            throws NoSuchDataException
Constructs an HDSDataNode from an HDSObject.

Throws:
NoSuchDataException

HDSDataNode

public HDSDataNode(File file)
            throws NoSuchDataException
Constructs an HDSDataNode from the file name of a container file.

Throws:
NoSuchDataException

HDSDataNode

public HDSDataNode(String path)
            throws NoSuchDataException
Constructs an HDSDataNode from an HDS path.

Throws:
NoSuchDataException
Method Detail

getHDSFromPath

protected static HDSObject getHDSFromPath(String path)
                                   throws NoSuchDataException
Throws:
NoSuchDataException

getHDSFromFile

protected static HDSObject getHDSFromFile(File file)
                                   throws NoSuchDataException
Throws:
NoSuchDataException

allowsChildren

public boolean allowsChildren()
Indicates whether this node allows child nodes or not. We consider that an HDSDataNode may allow children in two ways: it may either be a scalar structure, in which case its children will be its components, or it may be an array of structures, in which case its children will be the elements of the array. Here the term structure is used in the HDS sense.

We do not consider the elements of an array to be children if the if there are 'too many' elements (more than MAX_CHILDREN_PER_ARRAY). This is arbitrary, but is intended to prevent display getting too unwieldy.

Another possibility would be to allow the elements of an array of primitives to be considered as elements. Following the (sensible) behaviour of HDSTRACE We don't do this.

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

getChildIterator

public Iterator getChildIterator()
Returns the children of this node. This will either be the components of a scalar structure, or the elements of an array of structures.

Specified by:
getChildIterator in interface DataNode
Overrides:
getChildIterator in class DefaultDataNode
Returns:
an array of DataNodes considered to be the children of this node

getParentObject

public Object getParentObject()
Description copied from interface: DataNode
Returns an object which is in some sense the parent of the one this node is based on. The parent is not a DataNode, it is something which may get fed to a DataNodeFactory to create DataNode. If no such object exists, which may well be the case, null should be returned.

Specified by:
getParentObject in interface DataNode
Overrides:
getParentObject in class DefaultDataNode
Returns:
an object which is the parent of this one, or null

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

getPathElement

public String getPathElement()
Description copied from class: DefaultDataNode
The DefaultDataNode implementation returns the label as a default path element.

Specified by:
getPathElement in interface DataNode
Overrides:
getPathElement in class DefaultDataNode
Returns:
the node's label

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

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

getNodeTLA

public String getNodeTLA()
Returns the string "HDS".

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

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

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

hasDataObject

public boolean hasDataObject(DataType dtype)
Description copied from class: DefaultDataNode
The DefaultDataNode implementation returns true for only those data objects which have been registered using DefaultDataNode.registerDataObject(uk.ac.starlink.datanode.nodes.DataType, java.lang.Object).

Specified by:
hasDataObject in interface DataNode
Overrides:
hasDataObject in class DefaultDataNode
Parameters:
dtype - data object type of interest
Returns:
true iff a subsequent call of getDataObject(type) is likely to be successful

getDataObject

public Object getDataObject(DataType dtype)
                     throws DataObjectException
Description copied from class: DefaultDataNode
The DefaultDataNode implementation returns any data object which has been registered using DefaultDataNode.registerDataObject(uk.ac.starlink.datanode.nodes.DataType, java.lang.Object).

Specified by:
getDataObject in interface DataNode
Overrides:
getDataObject in class DefaultDataNode
Parameters:
dtype - data object type of interest
Returns:
data object of type type
Throws:
DataObjectException

isMagic

public static boolean isMagic(byte[] magic)


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.