# Class TarStreamDataNode

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

All Implemented Interfaces:
  `DataNode`

public class TarStreamDataNode extends DefaultDataNode
DataNode representing a Tar archive.

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`boolean`
`allowsChildren()`
The `DefaultDataNode` implementation of this method returns `false`.
`Iterator`
`getChildIterator()`
The `DefaultDataNode` implementation of this method throws `UnsupportedOperationException` (`DefaultDataNode.allowsChildren()` is false).
`protected List`
`getEntriesAtLevel(String level)`
Returns a list of all the entries in this archive whose name starts with a given string.
`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[] magic)`
Indicates whether the given bytes look like the start of a tar archive.

### Methods inherited from class DefaultDataNode

`beep, configureDetail, getChildMaker, getCreator, getDataObject, getDescription, getIcon, getLabel, 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

### TarStreamDataNode

public TarStreamDataNode(uk.ac.starlink.util.DataSource datsrc) throws NoSuchDataException
Constructs a TarStreamDataNode from a DataSource.

Parameters:
  `datsrc` - the source
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

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

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

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

### getEntriesAtLevel

protected List getEntriesAtLevel(String level) throws IOException
Returns a list of all the entries in this archive whose name starts with a given string.

Parameters:
  `level` - the required prefix
Returns:
  a list of all the `TarArchiveEntry` objects in this archive whose names begin with `level`. They appear in the list in the same order as they appear in the archive
Throws:
  `IOException`

### isMagic

public static boolean isMagic(byte[] magic)
Indicates whether the given bytes look like the start of a tar archive.

Parameters:
  `magic` - a buffer of bytes containing at least the first 264 bytes of a potential tar stream
Returns:
  true if `magic` looks like the start of a tar stream