Merge "Add proxy support"
[sdc.git] / openecomp-be / tools / zusammen-tools / src / main / java / org / openecomp / core / tools / util / ZipUtils.java
1 package org.openecomp.core.tools.util;
2
3 import com.google.common.io.ByteStreams;
4
5 import java.io.File;
6 import java.io.FileInputStream;
7 import java.io.FileOutputStream;
8 import java.io.IOException;
9 import java.nio.file.Files;
10 import java.nio.file.Path;
11 import java.util.Objects;
12 import java.util.Scanner;
13 import java.util.zip.ZipEntry;
14 import java.util.zip.ZipInputStream;
15 import java.util.zip.ZipOutputStream;
16
17 public class ZipUtils {
18     public static void createZip(String zipFileName, Path dir, String filterItem) throws Exception {
19         File dirObj = dir.toFile();
20         try (
21                 FileOutputStream fileOutputStream = new FileOutputStream(zipFileName);
22                 ZipOutputStream out = new ZipOutputStream(fileOutputStream)) {
23             addDir(dirObj, out, dir.toString(), filterItem);
24         }
25     }
26
27     public static final String cleanStr(String inFilterStr) {
28         if (Objects.isNull(inFilterStr)) {
29             return inFilterStr;
30         }
31         Scanner scan = new Scanner(inFilterStr);
32         while (scan.hasNextLine()) {
33             inFilterStr = scan.nextLine().replaceAll("[^a-zA-Z0-9]", "");
34         }
35         return inFilterStr;
36     }
37
38     static void addDir(File dirObj, ZipOutputStream out, String root, String filterItem) throws IOException {
39         File[] files = dirObj.listFiles();
40         filterItem = cleanStr(filterItem);
41
42         for (int i = 0; i < files.length; i++) {
43             if (files[i].isDirectory()) {
44                 addDir(files[i], out, root, filterItem);
45                 continue;
46             }
47             try (FileInputStream in = new FileInputStream((files[i].getAbsolutePath()))) {
48                 String filePath = files[i].getAbsolutePath().replace(root + File.separator, "");
49                 if (filterItem == null || filePath.contains(filterItem)) {
50                     out.putNextEntry(new ZipEntry(filePath));
51                     try {
52                         ByteStreams.copy(in, out);
53
54                     } finally {
55                         out.closeEntry();
56                     }
57                 }
58
59             }
60         }
61     }
62
63     public static void unzip(Path zipFile, Path outputFolder) throws IOException {
64         if (zipFile == null || outputFolder == null) {
65             return;
66         }
67         if (!Files.exists(outputFolder)) {
68             Files.createDirectories(outputFolder);
69         }
70
71         try (FileInputStream fileInputStream = new FileInputStream(zipFile.toFile());
72              ZipInputStream zis = new ZipInputStream(fileInputStream)) {
73             ZipEntry ze = zis.getNextEntry();
74             while (ze != null) {
75                 String fileName = ze.getName();
76                 File newFile = new File(outputFolder.toString() + File.separator + fileName);
77                 new File(newFile.getParent()).mkdirs();
78                 try (FileOutputStream fos = new FileOutputStream(newFile)) {
79                     ByteStreams.copy(zis, fos);
80                 }
81                 ze = zis.getNextEntry();
82             }
83
84             zis.closeEntry();
85         }
86
87     }
88 }
89