From f1e58eea268f10108941b2bdc0f4033193090a4b Mon Sep 17 00:00:00 2001 From: Andreas Romeyke <andreas.romeyke@slub-dresden.de> Date: Fri, 17 Feb 2023 11:59:08 +0100 Subject: [PATCH] - added getValidationDetails() --- .../plugin/SLUBXmlFormatValidationPlugin.java | 12 ++++++++++++ .../plugin/TestSLUBXmlFormatValidationPlugin.java | 9 ++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java index 13ce3b9..fedae34 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java +++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlFormatValidationPlugin.java @@ -75,6 +75,7 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin { private boolean wellformed = false; private final DocumentBuilderFactory dbf = DocumentBuilderFactory.newDefaultInstance(); private List<String> errors = new ArrayList<>(); + private List<String> detail = new ArrayList<>(); private static final HashSet<validationSchema> namespaceSchemaMap = new HashSet<>() { { add(new validationSchema("http://www.loc.gov/standards/alto/ns-v2#", schema, "http://www.loc.gov/standards/alto/alto-v2.0.xsd")); @@ -167,6 +168,8 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File(filePath)); xmlInfoRecord info = getXMLinfo(doc); + detail.add("detect XML type via NS:" + info.nameSpaceUri); + printXMLinfo(doc); if (!info.xmlVersion.equals("1.0")) { reportError("not an expected XML 1.0 document, found " + info.xmlVersion, filePath); @@ -175,6 +178,7 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin { return false; } wellformed=true; + detail.add("checked XML is wellformed"); /* TODO: align corresponding Schema based on systemID */ var schema = assignSchema(doc); if (schema.isEmpty()) { @@ -182,6 +186,9 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin { valid = false; return false; } + detail.add("assigned schema of type: " + schema.get().schemaType); + detail.add("assigned schema url: " + schema.get().schemaURL); + // TODO: SAXParser parser = spf.newSAXParser(); // parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "catalog.xml"); @@ -227,6 +234,11 @@ public class SLUBXmlFormatValidationPlugin implements FormatValidationPlugin { return null; } + @Override + public String getValidationDetails() { + return detail.stream().reduce("", (all, res) -> all.concat("\n") .concat(res) ); + } + /** stand-alone check, main file to call local installed clamd * @param args list of files which should be scanned */ diff --git a/java/org/slub/rosetta/dps/repository/plugin/TestSLUBXmlFormatValidationPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/TestSLUBXmlFormatValidationPlugin.java index 35fc96f..9e49193 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/TestSLUBXmlFormatValidationPlugin.java +++ b/java/org/slub/rosetta/dps/repository/plugin/TestSLUBXmlFormatValidationPlugin.java @@ -9,8 +9,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.stream.Stream; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; + /** * Tests for {@link SLUBXmlFormatValidationPlugin}. * @@ -20,9 +20,7 @@ import static org.junit.Assert.assertTrue; @RunWith(JUnit4.class) public class TestSLUBXmlFormatValidationPlugin { private static SLUBXmlFormatValidationPlugin mock; - - - + private Path[] testPaths; @Before public void setUp() { @@ -43,6 +41,7 @@ public class TestSLUBXmlFormatValidationPlugin { assertFalse("validateFormat(" + path + "), returns valid?", mock.validateFormat(path.toString())); assertFalse("validateFormat(" + path + "), is valid?", mock.validateFormat(path.toString())); assertTrue( "validateFormat(" + path + "), is wellformed?", mock.isWellFormed()); + assertNotNull("getValidationDetails(), " + path + ", not null", mock.getValidationDetails()); } } } -- GitLab