Class ChangeSetPerformer


  • public class ChangeSetPerformer
    extends java.lang.Object
    Performs ChangeSet operations on a stream. This class is thread safe and can be used multiple times. It operates on a copy of the ChangeSet. If the ChangeSet changes, a new Performer must be created.
    • Field Detail

      • changes

        private final java.util.Set<Change> changes
    • Constructor Detail

      • ChangeSetPerformer

        public ChangeSetPerformer​(ChangeSet changeSet)
        Constructs a ChangeSetPerformer with the changes from this ChangeSet
        Parameters:
        changeSet - the ChangeSet which operations are used for performing
    • Method Detail

      • perform

        public ChangeSetResults perform​(ArchiveInputStream in,
                                        ArchiveOutputStream out)
                                 throws java.io.IOException
        Performs all changes collected in this ChangeSet on the input stream and streams the result to the output stream. Perform may be called more than once. This method finishes the stream, no other entries should be added after that.
        Parameters:
        in - the InputStream to perform the changes on
        out - the resulting OutputStream with all modifications
        Returns:
        the results of this operation
        Throws:
        java.io.IOException - if an read/write error occurs
      • perform

        public ChangeSetResults perform​(ZipFile in,
                                        ArchiveOutputStream out)
                                 throws java.io.IOException
        Performs all changes collected in this ChangeSet on the ZipFile and streams the result to the output stream. Perform may be called more than once. This method finishes the stream, no other entries should be added after that.
        Parameters:
        in - the ZipFile to perform the changes on
        out - the resulting OutputStream with all modifications
        Returns:
        the results of this operation
        Throws:
        java.io.IOException - if an read/write error occurs
        Since:
        1.5
      • perform

        private ChangeSetResults perform​(ChangeSetPerformer.ArchiveEntryIterator entryIterator,
                                         ArchiveOutputStream out)
                                  throws java.io.IOException
        Performs all changes collected in this ChangeSet on the input entries and streams the result to the output stream. This method finishes the stream, no other entries should be added after that.
        Parameters:
        entryIterator - the entries to perform the changes on
        out - the resulting OutputStream with all modifications
        Returns:
        the results of this operation
        Throws:
        java.io.IOException - if an read/write error occurs
      • isDeletedLater

        private boolean isDeletedLater​(java.util.Set<Change> workingSet,
                                       ArchiveEntry entry)
        Checks if an ArchiveEntry is deleted later in the ChangeSet. This is necessary if an file is added with this ChangeSet, but later became deleted in the same set.
        Parameters:
        entry - the entry to check
        Returns:
        true, if this entry has an deletion change later, false otherwise
      • copyStream

        private void copyStream​(java.io.InputStream in,
                                ArchiveOutputStream out,
                                ArchiveEntry entry)
                         throws java.io.IOException
        Copies the ArchiveEntry to the Output stream
        Parameters:
        in - the stream to read the data from
        out - the stream to write the data to
        entry - the entry to write
        Throws:
        java.io.IOException - if data cannot be read or written