org.apache.commons.compress.changes
Class ChangeSetPerformer

java.lang.Object
  extended by org.apache.commons.compress.changes.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 Summary
private  java.util.Set changes
           
 
Constructor Summary
ChangeSetPerformer(ChangeSet changeSet)
          Constructs a ChangeSetPerformer with the changes from this ChangeSet
 
Method Summary
private  void copyStream(java.io.InputStream in, ArchiveOutputStream out, ArchiveEntry entry)
          Copies the ArchiveEntry to the Output stream
private  boolean isDeletedLater(java.util.Set workingSet, ArchiveEntry entry)
          Checks if an ArchiveEntry is deleted later in the ChangeSet.
 ChangeSetResults perform(ArchiveInputStream in, ArchiveOutputStream out)
          Performs all changes collected in this ChangeSet on the input stream and streams the result to the output stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

changes

private final java.util.Set 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

isDeletedLater

private boolean isDeletedLater(java.util.Set 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