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 TypeMethodDescriptionbooleanThe DefaultDataNode implementation of this method returns false.The DefaultDataNode implementation of this method throws UnsupportedOperationException (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 the ZipEntry objects 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 the ZipEntry objects 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 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:
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
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: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
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
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
ZipEntryobjects at the given level - Throws:
IOException
-