From 01cd8e8ea2f81d96e6f985e0f840ec5eb9cd1583 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Tue, 1 Aug 2023 17:22:14 +0200
Subject: [PATCH] - added truncated getErrors() to workaround Rosetta Issue
 https://support.proquest.com/500Do0000083LJkIAM, - closes
 https://git.slub-dresden.de/digital-preservation/mediaconch_plugin4rosetta/-/issues/8

---
 ...a_SLUBMatroskaFFV1FormatValidationPlugin.xml |  2 +-
 .../SLUBMatroskaFFV1FormatValidationPlugin.java | 17 ++++++++++++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/PLUGIN-INF/metadata_SLUBMatroskaFFV1FormatValidationPlugin.xml b/PLUGIN-INF/metadata_SLUBMatroskaFFV1FormatValidationPlugin.xml
index 90bf482..88f5b67 100644
--- a/PLUGIN-INF/metadata_SLUBMatroskaFFV1FormatValidationPlugin.xml
+++ b/PLUGIN-INF/metadata_SLUBMatroskaFFV1FormatValidationPlugin.xml
@@ -49,7 +49,7 @@
   </pl:initParameters>
   <pl:description>SLUB Matroska/FFV1 validation Plugin, using MediaConch to validate
     FFV1/Matroska-files</pl:description>
-  <pl:version>1.0</pl:version>
+  <pl:version>1.1</pl:version>
   <pl:materialType>DIGITAL</pl:materialType>
   <pl:module>Preservation</pl:module>
   <pl:generalType>TASK</pl:generalType>
diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
index c44522a..41ef3f9 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
@@ -199,7 +199,22 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
 
     @Override
     public final List<String> getErrors() {
-        return List.copyOf(this.validationLog);
+        List<String> truncated = new ArrayList<String>();
+        int chars=0;
+        /* workaround for Rosetta Issue https://support.proquest.com/500Do0000083LJkIAM
+         * truncate to ensure not more than 2000 chars used, to
+         */
+        for (String e: validationLog) {
+            if ( (chars+ e.length()) < 1900 ) {
+                truncated.add( e );
+                chars+=e.length()+1; // +1 for line ending
+            } else {
+                truncated.add ("... (the full error is truncated, because Rosetta limits, see Rosetta log for detailed output)");
+                log.info("truncated errors in getError");
+                break;
+            }
+        }
+        return truncated;
     }
 
     @Override
-- 
GitLab