From cdafb292e2499f203eaae4bf5ecb1105ca1c12d9 Mon Sep 17 00:00:00 2001 From: Andreas Romeyke <andreas.romeyke@slub-dresden.de> Date: Tue, 1 Aug 2023 17:15:18 +0200 Subject: [PATCH] - added truncated getErrors() to workaround Rosetta Issue https://support.proquest.com/500Do0000083LJkIAM, closes https://git.slub-dresden.de/digital-preservation/xml_plugin4rosetta/-/issues/19 --- .../metadata_XmlFormatValidationPlugin.xml | 2 +- .../plugin/XmlFormatValidationPlugin.java | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/PLUGIN-INF/metadata_XmlFormatValidationPlugin.xml b/PLUGIN-INF/metadata_XmlFormatValidationPlugin.xml index c5fb78a..945efe0 100644 --- a/PLUGIN-INF/metadata_XmlFormatValidationPlugin.xml +++ b/PLUGIN-INF/metadata_XmlFormatValidationPlugin.xml @@ -56,7 +56,7 @@ </fr:x_form> </pl:initParameters> <pl:description>SLUB Formatvalidation Plugin for XML</pl:description> - <pl:version>0.01</pl:version> + <pl:version>0.02</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/XmlFormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/XmlFormatValidationPlugin.java index 5a1bfd0..7df1c73 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/XmlFormatValidationPlugin.java +++ b/java/org/slub/rosetta/dps/repository/plugin/XmlFormatValidationPlugin.java @@ -36,6 +36,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -396,7 +397,23 @@ public class XmlFormatValidationPlugin implements FormatValidationPlugin { @Override public List<String> getErrors() { - return resultHandle.getErrors(); + 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: resultHandle.getErrors()) { + 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