From fee73f53383c8d8ba82a0e9a627ad22d5a724713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Guimar=C3=A3es?= Date: Fri, 15 Nov 2024 11:33:05 +0000 Subject: [PATCH] Add options to Write strategy for configure the creation of SipId folder inside ZIP --- .../eark/out/writers/strategy/FolderWriteStrategy.java | 6 ++++++ .../impl/eark/out/writers/strategy/WriteStrategy.java | 3 +++ .../impl/eark/out/writers/strategy/ZipWriteStrategy.java | 8 +++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/FolderWriteStrategy.java b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/FolderWriteStrategy.java index bdf9b5a7..da6826d1 100644 --- a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/FolderWriteStrategy.java +++ b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/FolderWriteStrategy.java @@ -48,6 +48,12 @@ public Path write(Map entries, SIP sip, String fileNameWit return dirPath; } + @Override + public Path write(Map entries, SIP sip, String fileNameWithoutExtension, String fallbackName, + boolean createSipIdFolder, boolean deleteExisting) throws IPException, InterruptedException { + throw new UnsupportedOperationException("Method not implemented"); + } + private void writeToPath(final Map entries, final Path path, String checksumAlgorithm) throws IPException, InterruptedException { try { diff --git a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/WriteStrategy.java b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/WriteStrategy.java index 969ef3c2..2f36c650 100644 --- a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/WriteStrategy.java +++ b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/WriteStrategy.java @@ -17,5 +17,8 @@ public interface WriteStrategy { Path write(Map entries, SIP sip, String fileNameWithoutExtension, String fallbackName, boolean deleteExisting) throws IPException, InterruptedException; + Path write(Map entries, SIP sip, String fileNameWithoutExtension, String fallbackName, + boolean createSipIdFolder, boolean deleteExisting) throws IPException, InterruptedException; + Path getDestinationPath(); } diff --git a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/ZipWriteStrategy.java b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/ZipWriteStrategy.java index 59062668..396da122 100644 --- a/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/ZipWriteStrategy.java +++ b/src/main/java/org/roda_project/commons_ip2/model/impl/eark/out/writers/strategy/ZipWriteStrategy.java @@ -28,10 +28,16 @@ public void setup(Path destinationPath) { @Override public Path write(Map entries, SIP sip, String fileNameWithoutExtension, String fallbackName, boolean deleteExisting) throws IPException, InterruptedException { + return write(entries, sip, fileNameWithoutExtension, fallbackName, true, deleteExisting); + } + + @Override + public Path write(Map entries, SIP sip, String fileNameWithoutExtension, String fallbackName, + boolean createSipIdFolder, boolean deleteExisting) throws IPException, InterruptedException { Path zipPath = getZipPath(destinationPath, fileNameWithoutExtension, fallbackName); try { - ZIPUtils.zip(entries, Files.newOutputStream(zipPath), sip, true, true); + ZIPUtils.zip(entries, Files.newOutputStream(zipPath), sip, createSipIdFolder, true); } catch (ClosedByInterruptException e) { throw new InterruptedException(); } catch (IOException e) {