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 subclassesZipFileDataNodeandZipStreamDataNode.- Author:
- Mark Taylor (Starlink)
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedZipArchiveDataNode(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 booleanallowsChildren()The DefaultDataNode implementation of this method returns false.java.util.IteratorgetChildIterator()The DefaultDataNode implementation of this method throws UnsupportedOperationException (DefaultDataNode.allowsChildren()is false).protected abstract java.util.IteratorgetChildIteratorAtLevel(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.ListgetEntries()Returns a list of all the ZipEntry objects in this zip archive.protected java.util.ListgetEntriesAtLevel(java.lang.String level)Returns all the ZipEntry objects in this archive at a given level in the hierarchy.java.lang.StringgetName()Gets the name of this object.java.lang.StringgetNodeTLA()Returns the string "ZIP".java.lang.StringgetNodeType()Returns a short sentence indicating what kind of node this is.java.lang.StringgetPathSeparator()Returns a default separator string.static booleanisMagic(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 NoSuchDataExceptionConstructs 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.IOExceptionReturns a list of all the ZipEntry objects in this zip archive.- Returns:
- a List of all the
ZipEntryobjects 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.IOExceptionReturns 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
DataNodeobjects 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:DataNodeGets the name of this object. This is an intrinsic property of the object.- Specified by:
getNamein interfaceDataNode- Overrides:
getNamein classDefaultDataNode- Returns:
- the name of the object
-
getPathSeparator
public java.lang.String getPathSeparator()
Description copied from class:DefaultDataNodeReturns a default separator string.- Specified by:
getPathSeparatorin interfaceDataNode- Overrides:
getPathSeparatorin classDefaultDataNode- Returns:
- "."
-
getNodeTLA
public java.lang.String getNodeTLA()
Returns the string "ZIP".- Specified by:
getNodeTLAin interfaceDataNode- Overrides:
getNodeTLAin classDefaultDataNode- Returns:
- "ZIP"
-
getNodeType
public java.lang.String getNodeType()
Description copied from interface:DataNodeReturns 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:
getNodeTypein interfaceDataNode- Overrides:
getNodeTypein classDefaultDataNode- Returns:
- a short description of the type of this
DataNode
-
allowsChildren
public boolean allowsChildren()
Description copied from class:DefaultDataNodeThe DefaultDataNode implementation of this method returns false.- Specified by:
allowsChildrenin interfaceDataNode- Overrides:
allowsChildrenin classDefaultDataNode- Returns:
trueif the node is of a type which can have child nodes,falseotherwise
-
getChildIterator
public java.util.Iterator getChildIterator()
Description copied from class:DefaultDataNodeThe DefaultDataNode implementation of this method throws UnsupportedOperationException (DefaultDataNode.allowsChildren()is false).- Specified by:
getChildIteratorin interfaceDataNode- Overrides:
getChildIteratorin classDefaultDataNode- Returns:
- an
Iteratorover the children. Each object iterated over should be aDataNode. Behaviour is undefined if this method is called on an object for whichallowsChildrenreturnsfalse.
-
getEntriesAtLevel
protected java.util.List getEntriesAtLevel(java.lang.String level) throws java.io.IOExceptionReturns 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
ZipEntryobjects at the given level - Throws:
java.io.IOException
-
-