Class ZipArchiveDataNode

    • 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 result
        parent - 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 interface DataNode
        Overrides:
        getName in class DefaultDataNode
        Returns:
        the name of the object
      • 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 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 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 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 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