From f78f37f88c5d5c2d6f2d02e9c209dab02249d5ce 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

---
 .../SLUBMatroskaFFV1FormatValidationPlugin.java | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
index e1e3cdb..fa41a1a 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBMatroskaFFV1FormatValidationPlugin.java
@@ -248,7 +248,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