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