View Javadoc
1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one or more
3    *  contributor license agreements.  See the NOTICE file distributed with
4    *  this work for additional information regarding copyright ownership.
5    *  The ASF licenses this file to You under the Apache License, Version 2.0
6    *  (the "License"); you may not use this file except in compliance with
7    *  the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
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  }