Package uk.ac.starlink.datanode.nodes
Class ZipArchiveDataNode
- java.lang.Object
-
- uk.ac.starlink.datanode.nodes.DefaultDataNode
-
- uk.ac.starlink.datanode.nodes.ZipArchiveDataNode
-
- All Implemented Interfaces:
DataNode
- Direct Known Subclasses:
ZipFileDataNode
,ZipStreamDataNode
public abstract class ZipArchiveDataNode extends DefaultDataNode
DataNode representing a Zip archive. This abstract class embodies the common functionality required by its subclassesZipFileDataNode
andZipStreamDataNode
.- Author:
- Mark Taylor (Starlink)
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ZipArchiveDataNode(uk.ac.starlink.util.DataSource datsrc)
Constructs a ZipArchiveDataNode.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
allowsChildren()
The DefaultDataNode implementation of this method returns false.java.util.Iterator
getChildIterator()
The DefaultDataNode implementation of this method throws UnsupportedOperationException (DefaultDataNode.allowsChildren()
is false).protected abstract java.util.Iterator
getChildIteratorAtLevel(java.lang.String level, DataNode parent)
Returns an iterator over the DataNodes at a given level in the hierarchy of this archive.protected abstract java.util.List
getEntries()
Returns a list of all the ZipEntry objects in this zip archive.protected java.util.List
getEntriesAtLevel(java.lang.String level)
Returns all the ZipEntry objects in this archive at a given level in the hierarchy.java.lang.String
getName()
Gets the name of this object.java.lang.String
getNodeTLA()
Returns the string "ZIP".java.lang.String
getNodeType()
Returns a short sentence indicating what kind of node this is.java.lang.String
getPathSeparator()
Returns a default separator string.static boolean
isMagic(byte[] magic)
Tests whether the presented byte array looks like the start of a Zip archive.-
Methods inherited from class uk.ac.starlink.datanode.nodes.DefaultDataNode
beep, configureDetail, getChildMaker, getCreator, getDataObject, getDescription, getIcon, getLabel, getParentObject, getPathElement, hasDataObject, makeChild, makeErrorChild, registerDataObject, setChildMaker, setCreator, setDescription, setIconID, setLabel, setName, setParentObject, toString
-
-
-
-
Constructor Detail
-
ZipArchiveDataNode
protected ZipArchiveDataNode(uk.ac.starlink.util.DataSource datsrc) throws NoSuchDataException
Constructs a ZipArchiveDataNode.- Parameters:
datsrc
- a data source corresponding to the archive; this is used for checking the magic number to see whether it looks like a zip archive or not- Throws:
NoSuchDataException
-
-
Method Detail
-
getEntries
protected abstract java.util.List getEntries() throws java.io.IOException
Returns a list of all the ZipEntry objects in this zip archive.- Returns:
- a List of all the
ZipEntry
objects which make up this zip archive. - Throws:
java.io.IOException
-
getChildIteratorAtLevel
protected abstract java.util.Iterator getChildIteratorAtLevel(java.lang.String level, DataNode parent) throws java.io.IOException
Returns an iterator over the DataNodes at a given level in the hierarchy of this archive. The iterator creates DataNodes for each ZipEntry in this archive whose name begins with the supplied string level.- Parameters:
level
- the required starting substring of the name of all ZipEntries to be represented in the resultparent
- the DataNode whose children the resulting nodes will be- Returns:
- an Iterator over
DataNode
objects corresponding to the ZipEntry objects specified by level - Throws:
java.io.IOException
-
isMagic
public static boolean isMagic(byte[] magic)
Tests whether the presented byte array looks like the start of a Zip archive.- Parameters:
magic
- a byte array containing the first few bytes of a source which might be a zip- Returns:
- true iff magic represents the magic number of a zip archive
-
getName
public java.lang.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 interfaceDataNode
- Overrides:
getName
in classDefaultDataNode
- Returns:
- the name of the object
-
getPathSeparator
public java.lang.String getPathSeparator()
Description copied from class:DefaultDataNode
Returns a default separator string.- Specified by:
getPathSeparator
in interfaceDataNode
- Overrides:
getPathSeparator
in classDefaultDataNode
- Returns:
- "."
-
getNodeTLA
public java.lang.String getNodeTLA()
Returns the string "ZIP".- Specified by:
getNodeTLA
in interfaceDataNode
- Overrides:
getNodeTLA
in classDefaultDataNode
- Returns:
- "ZIP"
-
getNodeType
public java.lang.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 interfaceDataNode
- Overrides:
getNodeType
in classDefaultDataNode
- 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 interfaceDataNode
- Overrides:
allowsChildren
in classDefaultDataNode
- Returns:
true
if the node is of a type which can have child nodes,false
otherwise
-
getChildIterator
public java.util.Iterator getChildIterator()
Description copied from class:DefaultDataNode
The DefaultDataNode implementation of this method throws UnsupportedOperationException (DefaultDataNode.allowsChildren()
is false).- Specified by:
getChildIterator
in interfaceDataNode
- Overrides:
getChildIterator
in classDefaultDataNode
- Returns:
- an
Iterator
over the children. Each object iterated over should be aDataNode
. Behaviour is undefined if this method is called on an object for whichallowsChildren
returnsfalse
.
-
getEntriesAtLevel
protected java.util.List getEntriesAtLevel(java.lang.String level) throws java.io.IOException
Returns all the ZipEntry objects in this archive at a given level in the hierarchy. The selected entries are all those whose name starts with the supplied string level.- Parameters:
level
- the required starting substring of the name of all ZipEntries to be returned- Returns:
- a list of all the
ZipEntry
objects at the given level - Throws:
java.io.IOException
-
-