diff --git a/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java b/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java index d9a93e6..1093ab9 100644 --- a/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java +++ b/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java @@ -39,9 +39,11 @@ public class XPathExpressionHelper { public static XPathExpression compile(String xpath) { return COMPILED_EXPRESSIONS.computeIfAbsent(xpath, s -> { try { - logger.debug("Compiling {}", s); + if ( logger.isTraceEnabled() ) + logger.trace("Compiling {}", s); XPathExpression expr = XPATH.compile(s); - logger.debug("Compiled {} = {}", s, expr); + if ( logger.isTraceEnabled() ) + logger.trace("Compiled {} = {}", s, expr); return expr; } catch (XPathExpressionException e) { logger.error("Compilation failure", e); diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java index 0318885..d697922 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java @@ -324,20 +324,20 @@ class ElementSpecCompiler { private String xpath(boolean withText) { String xpathForThis = xpathForNodeName(spec.nodeName(), spec.valuePrefix()); String xpath; - if (parent == null) { + if ( parent == null ) { // This is the top-level element rule List pathComponents = spec.parents().stream(). map( s -> "*[" + xpathForNodeName(s) + "]").collect(Collectors.toList()); pathComponents.add("*[" + xpathForThis + "]"); xpath = "//" + String.join("/", pathComponents); - } - else { + } else { xpath = parent.xpath(false) + "/*[" + xpathForThis + "]"; } - if (spec.position().xpath != null) { + if ( spec.position().xpath != null ) { xpath = "(" + xpath + ")[" + spec.position().xpath + "]"; } - logger.debug(xpath); + if ( logger.isTraceEnabled() ) + logger.trace(xpath); return xpathWithText(xpath, withText); } diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/AbstractOpenAireProfile.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/AbstractOpenAireProfile.java index 3d60041..88e6bf4 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/AbstractOpenAireProfile.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/AbstractOpenAireProfile.java @@ -38,16 +38,20 @@ public abstract class AbstractOpenAireProfile implements XMLApplicationProfile { @Override public ValidationResult validate(String id, Document document) { int maxScore = maxScore(); - double score = 0; - final Map results = new HashMap<>(); + double score = 0; + final Map results = new HashMap<>(); - for (Guideline guideline: guidelines()) { - - Guideline.Result result = guideline.validate(document); - results.put(guideline.getName(), result); + // Validate the document against all guideline-elements. + for (Guideline guidelineElement : guidelines()) + { + String guidelineElementName = guidelineElement.getName(); + if ( logger.isTraceEnabled() ) + logger.trace("Evaluating guideline-element: " + guidelineElementName); + Guideline.Result result = guidelineElement.validate(document); + results.put(guidelineElementName, result); score += (result.status() == Status.SUCCESS ? result.score() : 0); - logger.debug("Score after " + guideline.getName() + " = " + score); + logger.debug("Score after validating \"" + guidelineElementName + "\" = " + score); } double percentScore = (score / maxScore) * 100; diff --git a/src/test/java/eu/dnetlib/validator2/engine/Test.java b/src/test/java/eu/dnetlib/validator2/engine/Test.java index 2d3c17f..4ebf670 100644 --- a/src/test/java/eu/dnetlib/validator2/engine/Test.java +++ b/src/test/java/eu/dnetlib/validator2/engine/Test.java @@ -29,18 +29,17 @@ public class Test { LiteratureGuidelinesV3Profile profile = new LiteratureGuidelinesV3Profile(); logger.info("Max score: " + profile.maxScore()); Map scorePerDoc = new LinkedHashMap<>(); - for (String file: FILES) { + for ( String fileName : FILES ) { try { - logger.info("Processing \"" + file + "\""); - Document doc = DOMBuilder.parse(new FileReader(file), false, true, true); - XMLApplicationProfile.ValidationResult result = profile.validate(file, doc); - scorePerDoc.put(file, result.score()); + logger.info("Processing \"" + fileName + "\""); + Document doc = DOMBuilder.parse(new FileReader(fileName), false, true, true); + XMLApplicationProfile.ValidationResult result = profile.validate(fileName, doc); + scorePerDoc.put(fileName, result.score()); Map results = result.results(); - for (Map.Entry entry : results.entrySet()) { + for ( Map.Entry entry : results.entrySet() ) { logger.info(entry.getKey() + " = " + entry.getValue()); } - } - catch(Exception e) { + } catch (Exception e) { logger.error("", e); } } diff --git a/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java b/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java index dc04e65..16d0b75 100644 --- a/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java +++ b/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java @@ -33,17 +33,16 @@ public class Test_FAIR { FAIR_Data_GuidelinesProfile profile = new FAIR_Data_GuidelinesProfile(); logger.info("Max score: " + profile.maxScore()); Map scorePerDoc = new LinkedHashMap<>(); - int i = 1; - for (String file : FILES) { + for ( String fileName : FILES ) { try { - logger.info("Processing \"" + file + "\""); - Document doc = DOMBuilder.parse(new FileReader(file), false, true, true); - XMLApplicationProfile.ValidationResult result = profile.validate(file, doc); - scorePerDoc.put(file, result.score()); + logger.info("Processing \"" + fileName + "\""); + Document doc = DOMBuilder.parse(new FileReader(fileName), false, true, true); + XMLApplicationProfile.ValidationResult result = profile.validate(fileName, doc); + scorePerDoc.put(fileName, result.score()); Map results = result.results(); if ( logger.isDebugEnabled() ) { - for ( Map.Entry entry : results.entrySet() ) { + for ( Map.Entry entry : results.entrySet() ) { logger.debug(entry.getKey() + " = " + entry.getValue()); } } @@ -52,16 +51,17 @@ public class Test_FAIR { } } -// Individual scores + // Individual scores String printout = scorePerDoc.entrySet().stream(). map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n")); -// Average Score + logger.info(printout); + + // Average Score OptionalDouble optionalFinalScore = scorePerDoc.values().stream().mapToDouble(aDouble -> aDouble).average(); double finalScore = (optionalFinalScore.isPresent() ? optionalFinalScore.getAsDouble() : -1 ); - logger.info(printout); - logger.info("\nValidation Score: " + finalScore); + logger.info("Validation Score: " + finalScore); } } diff --git a/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java b/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java index 1f1c11c..074f7cb 100644 --- a/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java +++ b/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java @@ -31,37 +31,40 @@ public class Test_v4 { AbstractOpenAireProfile profile = new LiteratureGuidelinesV4Profile(); logger.info("Max score: " + profile.maxScore()); Map scorePerDoc = new LinkedHashMap<>(); - for (String file: FILES) { + for ( String fileName : FILES ) { try { - logger.info("Processing \"" + file + "\""); - Document doc = DOMBuilder.parse(new FileReader(file), false, true, true); - XMLApplicationProfile.ValidationResult result = profile.validate(file, doc); - scorePerDoc.put(file, result.score()); + logger.info("Processing \"" + fileName + "\""); + Document doc = DOMBuilder.parse(new FileReader(fileName), false, true, true); + XMLApplicationProfile.ValidationResult result = profile.validate(fileName, doc); + scorePerDoc.put(fileName, result.score()); Map results = result.results(); - for (Map.Entry entry : results.entrySet()) { - if (entry.getKey().toString().contains("Date")) { - logger.info("Warnings: " + results.get(entry.getKey()).warnings().toString()); - logger.info("Errors: " + results.get(entry.getKey()).errors().toString()); - logger.info("Result: " + entry.getKey() + " = " + entry.getValue() + "\n"); + for ( Map.Entry entry : results.entrySet() ) { + String key = entry.getKey(); + Guideline.Result value = entry.getValue(); + logger.debug(key + " = " + value); + if ( key.contains("Date")) { + logger.info("Warnings: " + results.get(key).warnings().toString()); + logger.info("Errors: " + results.get(key).errors().toString()); + logger.info("Result: " + key + " = " + value + "\n"); } - logger.debug(entry.getKey() + " = " + entry.getValue()); } - } - catch(Exception e) { + } catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); } } -// Individual scores + + // Individual scores String printout = scorePerDoc.entrySet().stream(). map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n")); - // Average Score + logger.info(printout); + + // Average Score OptionalDouble optionalFinalScore = scorePerDoc.values().stream().mapToDouble(aDouble -> aDouble).average(); double finalScore = (optionalFinalScore.isPresent() ? optionalFinalScore.getAsDouble() : -1 ); - logger.info(printout); - logger.info("\nValidation Score: " + finalScore); + logger.info("Validation Score: " + finalScore); } } diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index 3eae567..25aed0f 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -34,7 +34,7 @@ - +