1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.compress.archivers.zip;
18
19 import java.io.IOException;
20 import java.util.concurrent.ExecutionException;
21
22 import org.apache.commons.compress.parallel.InputStreamSupplier;
23
24 public class ScatterSample {
25
26 final ParallelScatterZipCreator scatterZipCreator = new ParallelScatterZipCreator();
27 final ScatterZipOutputStream dirs;
28
29 ScatterSample(final ScatterSampleTest scatterSampleTest) throws IOException {
30 this.dirs = ScatterZipOutputStream.fileBased(scatterSampleTest.createTempFile("scatter-dirs", "tmp"));
31 }
32
33 public void addEntry(final ZipArchiveEntry zipArchiveEntry, final InputStreamSupplier streamSupplier) throws IOException {
34 if (zipArchiveEntry.isDirectory() && !zipArchiveEntry.isUnixSymlink()) {
35 dirs.addArchiveEntry(ZipArchiveEntryRequest.createZipArchiveEntryRequest(zipArchiveEntry, streamSupplier));
36 } else {
37 scatterZipCreator.addArchiveEntry(zipArchiveEntry, streamSupplier);
38 }
39 }
40
41 public void writeTo(final ZipArchiveOutputStream zipArchiveOutputStream) throws IOException, ExecutionException, InterruptedException {
42 dirs.writeTo(zipArchiveOutputStream);
43 dirs.close();
44 scatterZipCreator.writeTo(zipArchiveOutputStream);
45 }
46 }