diff options
Diffstat (limited to 'openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java')
-rw-r--r-- | openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java index 6447f85ea7..2f6693d133 100644 --- a/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java +++ b/openecomp-be/tools/zusammen-tools/src/main/java/org/openecomp/core/tools/util/ZipUtils.java @@ -10,12 +10,14 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Objects; import java.util.Scanner; +import java.util.Set; +import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtils { - public static void createZip(String zipFileName, Path dir, String filterItem) throws Exception { + public static void createZip(String zipFileName, Path dir, Set<String> filterItem) throws Exception { File dirObj = dir.toFile(); try ( FileOutputStream fileOutputStream = new FileOutputStream(zipFileName); @@ -24,29 +26,34 @@ public class ZipUtils { } } - public static final String cleanStr(String inFilterStr) { - if (Objects.isNull(inFilterStr)) { - return inFilterStr; - } - Scanner scan = new Scanner(inFilterStr); - while (scan.hasNextLine()) { - inFilterStr = scan.nextLine().replaceAll("[^a-zA-Z0-9]", ""); - } - return inFilterStr; + public static final Set<String> cleanStr(Set<String> inFilterStrs) { + return inFilterStrs.stream().map(inFilterStr -> { + if (Objects.isNull(inFilterStr)) { + return inFilterStr; + } + Scanner scan = new Scanner(inFilterStr); + while (scan.hasNextLine()) { + inFilterStr = scan.nextLine().replaceAll("[^a-zA-Z0-9]", ""); + } + return inFilterStr; + } + ).collect(Collectors.toSet()); } - static void addDir(File dirObj, ZipOutputStream out, String root, String filterItem) throws IOException { + static void addDir(File dirObj, ZipOutputStream out, String root, Set<String> filterItem) throws IOException { File[] files = dirObj.listFiles(); filterItem = cleanStr(filterItem); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { addDir(files[i], out, root, filterItem); + String filePath = files[i].getAbsolutePath().replace(root + File.separator, "") + "/"; + out.putNextEntry(new ZipEntry(filePath)); continue; } try (FileInputStream in = new FileInputStream((files[i].getAbsolutePath()))) { String filePath = files[i].getAbsolutePath().replace(root + File.separator, ""); - if (filterItem == null || filePath.contains(filterItem)) { + if (filterItem.isEmpty() || filterItem.stream().anyMatch(s -> filePath.contains(s))) { out.putNextEntry(new ZipEntry(filePath)); try { ByteStreams.copy(in, out); @@ -74,9 +81,16 @@ public class ZipUtils { while (ze != null) { String fileName = ze.getName(); File newFile = new File(outputFolder.toString() + File.separator + fileName); - new File(newFile.getParent()).mkdirs(); - try (FileOutputStream fos = new FileOutputStream(newFile)) { - ByteStreams.copy(zis, fos); + if (ze.isDirectory()) { + Path path = newFile.toPath(); + if (!Files.exists(path)) { + Files.createDirectories(path); + } + } else { + new File(newFile.getParent()).mkdirs(); + try (FileOutputStream fos = new FileOutputStream(newFile)) { + ByteStreams.copy(zis, fos); + } } ze = zis.getNextEntry(); } |