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
DataNode representing a Zip archive.
This abstract class embodies the common functionality required by
its subclasses
ZipFileDataNode and ZipStreamDataNode.- Author:
- Mark Taylor (Starlink)
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedZipArchiveDataNode(uk.ac.starlink.util.DataSource datsrc) Constructs a ZipArchiveDataNode. -
Method Summary
Modifier and TypeMethodDescriptionbooleanTheDefaultDataNodeimplementation of this method returnsfalse.TheDefaultDataNodeimplementation of this method throwsUnsupportedOperationException(DefaultDataNode.allowsChildren()is false).protected abstract IteratorgetChildIteratorAtLevel(String level, DataNode parent) Returns an iterator over the DataNodes at a given level in the hierarchy of this archive.protected abstract ListReturns a list of all theZipEntryobjects in this zip archive.protected ListgetEntriesAtLevel(String level) Returns all the ZipEntry objects in this archive at a given level in the hierarchy.getName()Gets the name of this object.Returns the string "ZIP".Returns a short sentence indicating what kind of node this is.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 Details
-
ZipArchiveDataNode
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 Details
-
getEntries
Returns a list of all theZipEntryobjects in this zip archive.- Returns:
- a List of all the
ZipEntryobjects which make up this zip archive. - Throws:
IOException
-
getChildIteratorAtLevel
protected abstract Iterator getChildIteratorAtLevel(String level, DataNode parent) throws 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 stringlevel.- 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 bylevel - Throws:
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
magicrepresents the magic number of a zip archive
-
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
Description copied from class:DefaultDataNodeReturns a default separator string.- Specified by:
getPathSeparatorin interfaceDataNode- Overrides:
getPathSeparatorin classDefaultDataNode- Returns:
- "."
-
getNodeTLA
Returns the string "ZIP".- Specified by:
getNodeTLAin interfaceDataNode- Overrides:
getNodeTLAin classDefaultDataNode- Returns:
- "ZIP"
-
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:DefaultDataNodeTheDefaultDataNodeimplementation of this method returnsfalse.- Specified by:
allowsChildrenin interfaceDataNode- Overrides:
allowsChildrenin classDefaultDataNode- Returns:
trueif the node is of a type which can have child nodes,falseotherwise
-
getChildIterator
Description copied from class:DefaultDataNodeTheDefaultDataNodeimplementation of this method throwsUnsupportedOperationException(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
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 stringlevel.- Parameters:
level- the required starting substring of the name of all ZipEntries to be returned- Returns:
- a list of all the
ZipEntryobjects at the givenlevel - Throws:
IOException
-