From 3b8a3684cea2d1fb1549571d38b8d0f12a04eade Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Wed, 1 Feb 2023 16:42:29 +0100
Subject: [PATCH] - refactoring, uses Stream to get fixities

---
 PLUGIN-INF/metadata_SLUBStoragePlugin.xml     |  2 +-
 .../plugin/storage/nfs/SLUBStoragePlugin.java | 23 ++++++++++++-------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/PLUGIN-INF/metadata_SLUBStoragePlugin.xml b/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
index 20f3e59..7a52b69 100644
--- a/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
+++ b/PLUGIN-INF/metadata_SLUBStoragePlugin.xml
@@ -70,7 +70,7 @@
 		</fr:x_form>
 	</pl:initParameters>
 	<pl:description>SLUB Storage Plugin</pl:description>
-	<pl:version>2.842</pl:version>
+	<pl:version>2.843</pl:version>
 	<pl:materialType>DIGITAL</pl:materialType>
 	<pl:module>Repository</pl:module>
 	<pl:generalType>TASK</pl:generalType>
diff --git a/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java b/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
index b7a718f..a0b4cb8 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
@@ -22,7 +22,6 @@ package org.slub.rosetta.dps.repository.plugin.storage.nfs;
 
 import com.exlibris.core.infra.common.exceptions.logging.ExLogger;
 import com.exlibris.core.infra.common.util.IOUtil;
-import com.exlibris.core.infra.svc.api.scriptRunner.ExecExternalProcess;
 import com.exlibris.core.sdk.storage.containers.StoredEntityMetaData;
 import com.exlibris.core.sdk.storage.handler.AbstractStorageHandler;
 import com.exlibris.core.sdk.storage.handler.StorageUtil;
@@ -49,13 +48,13 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.security.NoSuchAlgorithmException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.function.Function;
 
 /**
  * SLUBStoragePlugin
@@ -141,6 +140,8 @@ public class SLUBStoragePlugin extends AbstractStorageHandler {
         return "(unknown) Bytes/s";
     }
 
+
+
     /**
      * checkFixity
      * @param fixities
@@ -157,14 +158,20 @@ public class SLUBStoragePlugin extends AbstractStorageHandler {
             log.warn("SLUBStoragePlugin.checkFixity() No fixity list provided");
             return true;
         }
-        boolean result = true;
-        for (Fixity fixity : fixities) {
-            fixity.setResult(Boolean.FALSE);
-            result &= checkSpecificFixity(absolute_storedEntityIdentifier, fixity);
-        }
-        return result;
+        return fixities.parallelStream().map(
+                fixity -> {
+                    try {
+                        return checkSpecificFixity(absolute_storedEntityIdentifier, fixity);
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
+                }
+        ).reduce(
+                true, (all_result, result) -> all_result &= result
+        );
     }
 
+
     /**
      * checkSpecificFixity
      * @param absolute_storedEntityIdentifier absolute file path
-- 
GitLab