diff --git a/pom.xml b/pom.xml
index 1b4a334..556b9c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,44 +13,8 @@
-
-
- commons-io
- commons-io
- 2.11.0
- compile
-
-
- com.google.guava
- guava
- 31.1-jre
- compile
-
-
- org.apache.logging.log4j
- log4j-api
- 2.20.0
- compile
-
-
- org.apache.logging.log4j
- log4j-core
- 2.20.0
- test
-
-
- org.spockframework
- spock-core
- 1.3-groovy-2.5
- test
-
-
- commons-codec
- commons-codec
- 1.15
- test
-
-
+
+
@@ -66,11 +30,61 @@
org.apache.maven.plugins
maven-war-plugin
- 3.3.2
+ 3.4.0
false
+
+
+
+
+
+ commons-io
+ commons-io
+ 2.13.0
+ compile
+
+
+ com.google.guava
+ guava
+ 32.1.1-jre
+ compile
+
+
+
+ org.spockframework
+ spock-core
+ 1.3-groovy-2.5
+ test
+
+
+
+
+
+
+
+ ch.qos.logback
+ logback-core
+ 1.2.12
+
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.36
+
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.12
+
+
+
+
diff --git a/src/main/java/eu/dnetlib/validator2/engine/Helper.java b/src/main/java/eu/dnetlib/validator2/engine/Helper.java
index b060fdb..598ca9f 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/Helper.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/Helper.java
@@ -4,6 +4,7 @@ import eu.dnetlib.validator2.validation.guideline.Builders;
import eu.dnetlib.validator2.validation.guideline.Builders.ElementSpecBuilder;
import eu.dnetlib.validator2.validation.guideline.Cardinality;
import eu.dnetlib.validator2.validation.guideline.RequirementLevel;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -24,6 +25,9 @@ import java.util.zip.ZipInputStream;
public class Helper {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Helper.class);
+
+
private static final String EMPTY = "";
public static boolean isEmpty(String s) {
@@ -116,15 +120,15 @@ public class Helper {
int len = nodes.getLength();
for (int i = 0; i < len; i++) {
Node node = nodes.item(i);
- // System.out.println("Getting node: " + node);
+ //logger.debug("Getting node: " + node);
T t = nodeReader.apply(node);
- // System.out.println("Read node value: " + t);
+ //logger.debug("Read node value: " + t);
if (predicate.test(t)) {
filtered.add(node);
}
}
}
- // System.out.println(filtered.size() + " nodes matched the predicate");
+ //logger.debug(filtered.size() + " nodes matched the predicate");
return new ListOfNodes(filtered);
}
diff --git a/src/main/java/eu/dnetlib/validator2/engine/Reporter.java b/src/main/java/eu/dnetlib/validator2/engine/Reporter.java
index a8ac6e8..0760559 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/Reporter.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/Reporter.java
@@ -1,7 +1,12 @@
package eu.dnetlib.validator2.engine;
+import org.slf4j.LoggerFactory;
+
public class Reporter> {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Reporter.class);
+
+
private final RuleDiagnostics diagnostics;
public Reporter(RuleDiagnostics diagnostics) {
@@ -11,30 +16,24 @@ public class Reporter> {
public void reportSuccessFor(R rule, T t) {
try {
diagnostics.success(rule, t);
- }
- catch(Throwable throwable) {
- System.err.println("Failed to report success of applying " + rule + " to value: " + t);
- throwable.printStackTrace();
+ } catch (Throwable throwable) {
+ logger.error("Failed to report success of applying " + rule + " to value: " + t, throwable);
}
}
public void reportFailureFor(R rule, T t) {
try {
diagnostics.failure(rule, t);
- }
- catch(Throwable throwable) {
- System.err.println("Failed to report failure of applying " + rule + " to value: " + t);
- throwable.printStackTrace();
+ } catch (Throwable throwable) {
+ logger.error("Failed to report failure of applying " + rule + " to value: " + t, throwable);
}
}
public void reportErrorFor(R rule, T t, Throwable throwable) {
try {
diagnostics.error(rule, t, throwable);
- }
- catch(Throwable throwable1) {
- System.err.println("Failed to report error of applying " + rule + " to value: " + t);
- throwable1.printStackTrace();
+ } catch (Throwable throwable1) {
+ logger.error("Failed to report error of applying " + rule + " to value: " + t, throwable);
}
}
}
diff --git a/src/main/java/eu/dnetlib/validator2/engine/builtins/SimpleRule.java b/src/main/java/eu/dnetlib/validator2/engine/builtins/SimpleRule.java
index 39eb98a..db2e97b 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/builtins/SimpleRule.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/builtins/SimpleRule.java
@@ -3,14 +3,13 @@ package eu.dnetlib.validator2.engine.builtins;
import eu.dnetlib.validator2.engine.Rule;
import eu.dnetlib.validator2.engine.RuleContext;
import eu.dnetlib.validator2.engine.RuleEvaluationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.function.Predicate;
public class SimpleRule implements Rule {
- private static final Logger logger = LogManager.getLogger();
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SimpleRule.class);
private final C context;
private final Predicate predicate;
diff --git a/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLRule.java b/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLRule.java
index 22ba61d..d696631 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLRule.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLRule.java
@@ -3,8 +3,7 @@ package eu.dnetlib.validator2.engine.builtins;
import eu.dnetlib.validator2.engine.Rule;
import eu.dnetlib.validator2.engine.RuleEvaluationException;
import eu.dnetlib.validator2.engine.contexts.XMLContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
@@ -16,7 +15,7 @@ import java.util.function.Predicate;
*/
public class XMLRule implements Rule {
- private static final Logger logger = LogManager.getLogger();
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(XMLRule.class);
private final C context;
public final Predicate predicate;
diff --git a/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLValidURLRule.java b/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLValidURLRule.java
index 0ac7a74..d28c116 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLValidURLRule.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/builtins/XMLValidURLRule.java
@@ -10,9 +10,7 @@ import java.util.function.Predicate;
public class XMLValidURLRule extends XMLRule {
protected XMLValidURLRule(XMLContext context) {
- super(context, (NodeList nodes) -> {
- return context.getNodeListActionProperty().test(nodes, (Predicate) Helper.URLResolver::resolve);
- });
+ super(context, (NodeList nodes) -> context.getNodeListActionProperty().test(nodes, (Predicate) Helper.URLResolver::resolve));
}
public static Builder builder() {
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 c51ecb7..d9a93e6 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/builtins/XPathExpressionHelper.java
@@ -4,8 +4,7 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import eu.dnetlib.validator2.engine.RuleEvaluationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -17,7 +16,7 @@ import java.util.concurrent.ExecutionException;
public class XPathExpressionHelper {
- private static final Logger logger = LogManager.getLogger();
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(XPathExpressionHelper.class);
// XPath expression compilation
private static final XPath XPATH = XPathFactory.newInstance().newXPath();
diff --git a/src/main/java/eu/dnetlib/validator2/engine/contexts/CardinalityContext.java b/src/main/java/eu/dnetlib/validator2/engine/contexts/CardinalityContext.java
index fcd5cca..2fa2682 100644
--- a/src/main/java/eu/dnetlib/validator2/engine/contexts/CardinalityContext.java
+++ b/src/main/java/eu/dnetlib/validator2/engine/contexts/CardinalityContext.java
@@ -2,11 +2,16 @@ package eu.dnetlib.validator2.engine.contexts;
import eu.dnetlib.validator2.engine.Helper;
import eu.dnetlib.validator2.engine.RuleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.function.Predicate;
public interface CardinalityContext extends RuleContext {
+ Logger logger = LoggerFactory.getLogger(CardinalityContext.class);
+
+
String GREATER_THAN_PROPERTY_NAME = "gt";
String LESS_THAN_PROPERTY_NAME = "lt";
String UPPER_BOUND_PROPERTY_NAME = LESS_THAN_PROPERTY_NAME;
@@ -20,7 +25,7 @@ public interface CardinalityContext extends RuleContext {
BooleanRuleProperty getIsInclusiveProperty();
default Predicate cardinalityPredicate() {
- // System.out.println("Evaluating cardinality " + getIdProperty().getValue());
+ logger.debug("Evaluating cardinality " + getIdProperty().getValue());
long min = getLowerBoundProperty().getLongValue();
long max = getUpperBoundProperty().getLongValue();
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 1e57ce7..0318885 100644
--- a/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java
+++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/ElementSpecCompiler.java
@@ -9,8 +9,8 @@ import eu.dnetlib.validator2.engine.builtins.StandardXMLContext;
import eu.dnetlib.validator2.engine.builtins.XMLRule;
import eu.dnetlib.validator2.engine.builtins.XPathExpressionHelper;
import eu.dnetlib.validator2.engine.contexts.XMLContext;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -25,7 +25,7 @@ import java.util.stream.Stream;
class ElementSpecCompiler {
- private static final Logger logger = LogManager.getLogger();
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(ElementSpecCompiler.class);
private static final String[] EMPTY = new String[]{};
@@ -288,6 +288,9 @@ class ElementSpecCompiler {
private static class ElementStruct {
+ private static final Logger logger = LoggerFactory.getLogger(ElementStruct.class);
+
+
Supplier runtimeInfo;
final ElementSpec spec;
final String[] parentElementNames;
@@ -334,7 +337,7 @@ class ElementSpecCompiler {
if (spec.position().xpath != null) {
xpath = "(" + xpath + ")[" + spec.position().xpath + "]";
}
- // System.out.println(xpath);
+ logger.debug(xpath);
return xpathWithText(xpath, withText);
}
diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/GuidelineEvaluation.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/GuidelineEvaluation.java
index b651489..6622e8b 100644
--- a/src/main/java/eu/dnetlib/validator2/validation/guideline/GuidelineEvaluation.java
+++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/GuidelineEvaluation.java
@@ -2,6 +2,8 @@ package eu.dnetlib.validator2.validation.guideline;
import eu.dnetlib.validator2.engine.*;
import eu.dnetlib.validator2.engine.builtins.StandardRuleDiagnostics;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
@@ -12,6 +14,9 @@ import java.util.Map;
class GuidelineEvaluation {
+ private static final Logger logger = LoggerFactory.getLogger(GuidelineEvaluation.class);
+
+
// TODO: Report all rule diagnostics to System out/err (we should remove this or allow clients to disable it)
private static final RuleDiagnostics> OUT = Helper.Diagnostics.systemOut();
private static final RuleDiagnostics> ERR = Helper.Diagnostics.systemErr();
@@ -40,7 +45,7 @@ class GuidelineEvaluation {
rules.add(result.rootNodeRule);
rules.addAll(result.nodeRules);
- // System.out.println("Evaluating " + rules);
+ logger.debug("Evaluating " + rules);
for (SyntheticRule rule: rules) {
@@ -58,7 +63,7 @@ class GuidelineEvaluation {
// Report the non-applicability of a rule as a warning
// The check for both status and non-applicable requirement level is redundant
// (non-applicable rules always succeed), yet it is more clear hopefully.
- // System.out.println("Warn for non-applicable: " + rule);
+ logger.warn("Non-applicable: " + rule);
warnings.add(synthesizeFailureMessage(rule));
}
else if (status == Status.FAILURE) {
@@ -70,7 +75,7 @@ class GuidelineEvaluation {
// This is the root rule failing!
// Fail fast here, too (don't waste resources to evaluate other rules).
// We will "enable" it, if it is requested.
- // System.out.println("Fail fast for root failure: " + rule);
+ logger.error("Fail fast for root failure: " + rule);
errors.add(synthesizeFailureMessage(rule));
return StandardResult.forFailure(warnings, errors);
}
@@ -79,7 +84,7 @@ class GuidelineEvaluation {
// (a) is non-mandatory or
// (b) it was successful.
// Thus, here we need only to warn and not to err, allowing the evaluation loop to proceed.
- // System.out.println("Warn for mandatory failure: " + rule);
+ logger.warn("Mandatory failure: " + rule);
warnings.add(synthesizeFailureMessage(rule));
}
}
@@ -87,7 +92,7 @@ class GuidelineEvaluation {
// This is a warning: a non-mandatory rule has failed.
// Note that MA rules are treated as non-mandatory.
// We let the evaluation loop proceed.
- // System.out.println("Warn for optional/recommended failure: " + rule);
+ logger.warn("Optional/Recommended failure: " + rule);
warnings.add(synthesizeFailureMessage(rule));
}
}
diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java
index cab636e..a00716a 100644
--- a/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java
+++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java
@@ -4,13 +4,12 @@ import eu.dnetlib.validator2.engine.Helper;
import eu.dnetlib.validator2.engine.Rule;
import eu.dnetlib.validator2.engine.RuleContext;
import eu.dnetlib.validator2.engine.RuleEvaluationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
public final class SyntheticGuideline extends AbstractGuideline {
- private static final Logger logger = LogManager.getLogger();
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SyntheticGuideline.class);
private CompilationResult compilationResult;
private static final ThreadLocal evaluation = new ThreadLocal<>();
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 782752c..3d60041 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
@@ -10,6 +10,8 @@ import eu.dnetlib.validator2.validation.StandardValidationResult;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.ElementSpec;
import eu.dnetlib.validator2.validation.guideline.Guideline;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -19,6 +21,9 @@ import java.util.Map;
public abstract class AbstractOpenAireProfile implements XMLApplicationProfile {
+ private static final Logger logger = LoggerFactory.getLogger(AbstractOpenAireProfile.class);
+
+
private final String name;
public AbstractOpenAireProfile(String name) {
@@ -42,7 +47,7 @@ public abstract class AbstractOpenAireProfile implements XMLApplicationProfile {
results.put(guideline.getName(), result);
score += (result.status() == Status.SUCCESS ? result.score() : 0);
- // System.out.println("Score after " + guideline.getName() + " = " + score);
+ logger.debug("Score after " + guideline.getName() + " = " + score);
}
double percentScore = (score / maxScore) * 100;
diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java
index 48624af..672cc4f 100644
--- a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java
+++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java
@@ -5,6 +5,8 @@ package eu.dnetlib.validator2.validation.guideline.openaire;
import eu.dnetlib.validator2.engine.Status;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import java.util.*;
@@ -15,6 +17,8 @@ import static eu.dnetlib.validator2.validation.guideline.Cardinality.ONE_TO_N;
public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
+ private static final Logger logger = LoggerFactory.getLogger(FAIR_Data_GuidelinesProfile.class);
+
private static final String[] TITLE_TYPES = {
"AlternativeTitle", "Subtitle", "TranslatedTitle", "Other"
};
@@ -291,82 +295,86 @@ public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
//// TODO this goes to FAIRProfile
-//class MetadataCompleteness extends AbstractGuideline {
-//
-// public MetadataCompleteness() {
-// super("MetadataCompleteness", 40);
-// }
-//
-// @Override
-// public Result validate(String id, Document t) {
-// DataArchiveGuidelinesV2Profile profile = new DataArchiveGuidelinesV2Profile();
-//
-// // <>>ODO: iterate over results and build one Guideline.Result
-// try {
-//// System.out.println("Processing MetadataCompleteness...");
-// XMLApplicationProfile.ValidationResult res = profile.validate(id, t);
-// Map results = res.results();
-// int MaxScoreMetadataCompleteness = (int) ((res.score()*getWeight())/100);
-//
-//// System.out.println("Max score DataValidator(%): " + res.score());
-//// System.out.println("Weight FAIRG: " + getWeight());
-//// System.out.println("Max score MetadataCompleteness: " + MaxScoreMetadataCompleteness);
-//// System.out.println("\n\n\n\n");
-//
-//// for (Map.Entry entry : results.entrySet()) {
-//// System.out.println(entry.getKey() + " = " + entry.getValue());
-//// }
-//// System.out.println(score);
-// return getResult(MaxScoreMetadataCompleteness);
-//
-//// System.out.println(tempp.status() + " - " + tempp.score());
-//// String printout = results.entrySet().stream().
-//// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
-//// System.out.println(printout);
-//
-//// System.out.println("\n\n\n\n");
-// } catch (Exception e) {
-// System.out.println(e.getMessage());
-// System.out.println(e);
-// e.printStackTrace();
-// }
-//
-// return null;
-// }
-//
-// private static Result getResult(int score) {
-// String aa;
-// aa = (score > 0) ? "SUCCESS" : "FAILURE";
-// return new Result() {
-// @Override
-// public int score() {
-// return score;
-// }
-//
-// @Override
-// public Status status() {
-//// return null;
-// return Status.valueOf(aa);
-// }
-//
-// @Override
-// public Iterable warnings() { return null; }
-//
-// @Override
-// public Iterable errors() {
-// return null;
-// }
-//
-// @Override
-// public String internalError() {
-// return null;
-// }
-// };
-// }
-//}
+/*class MetadataCompleteness extends AbstractGuideline {
+
+ private static final Logger logger = LoggerFactory.getLogger(MetadataCompleteness.class);
+
+
+ public MetadataCompleteness() {
+ super("MetadataCompleteness", 40);
+ }
+
+ @Override
+ public Result validate(String id, Document t) {
+ DataArchiveGuidelinesV2Profile profile = new DataArchiveGuidelinesV2Profile();
+
+ // <>>ODO: iterate over results and build one Guideline.Result
+ try {
+// System.out.println("Processing MetadataCompleteness...");
+ XMLApplicationProfile.ValidationResult res = profile.validate(id, t);
+ Map results = res.results();
+ int MaxScoreMetadataCompleteness = (int) ((res.score()*getWeight())/100);
+
+ logger.debug("Max score DataValidator(%): " + res.score());
+ logger.debug("Weight FAIRG: " + getWeight());
+ logger.debug("Max score MetadataCompleteness: " + MaxScoreMetadataCompleteness);
+ logger.debug("\n\n\n\n");
+
+ if ( logger.isDebugEnabled() ) {
+ for ( Map.Entry entry : results.entrySet() ) {
+ logger.debug(entry.getKey() + " = " + entry.getValue());
+ }
+ }
+
+ logger.debug(results.entrySet().stream().
+ map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n")));
+
+ return getResult(MaxScoreMetadataCompleteness);
+
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+ System.out.println(e);
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ private static Result getResult(int score) {
+ String aa;
+ aa = (score > 0) ? "SUCCESS" : "FAILURE";
+ return new Result() {
+ @Override
+ public int score() {
+ return score;
+ }
+
+ @Override
+ public Status status() {
+// return null;
+ return Status.valueOf(aa);
+ }
+
+ @Override
+ public Iterable warnings() { return null; }
+
+ @Override
+ public Iterable errors() {
+ return null;
+ }
+
+ @Override
+ public String internalError() {
+ return null;
+ }
+ };
+ }
+}*/
class F2_01M_SPEC extends AbstractGuideline {
+ private static final Logger logger = LoggerFactory.getLogger(F2_01M_SPEC.class);
+
public F2_01M_SPEC() {
super("Rich metadata is provided to allow discovery", 2*6);
}
@@ -382,9 +390,9 @@ class F2_01M_SPEC extends AbstractGuideline {
// Get actual score and not (%) to incorporate to FAIR score
final int MaxScoreF2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
-// System.out.println("Max score DataValidator(%): " + res_F.score());
-// System.out.println("Weight FAIRG: " + getWeight());
-// System.out.println("Max score F2_01M_SPEC: " + MaxScoreF2_01M_SPEC);
+ logger.debug("Max score DataValidator(%): " + res_F.score());
+ logger.debug("Weight FAIRG: " + getWeight());
+ logger.debug("Max score F2_01M_SPEC: " + MaxScoreF2_01M_SPEC);
List warnings2 = new ArrayList<>();
List errors2 = new ArrayList<>();
@@ -400,8 +408,8 @@ class F2_01M_SPEC extends AbstractGuideline {
if (entry.getValue().toString().contains("SUCCESS")) {
score += 2;
}
-// System.out.println(res_F.results().get(entry.getKey()).warnings().getClass());
-// System.out.println(warnings2.getClass());
+ logger.debug(String.valueOf(res_F.results().get(entry.getKey()).warnings().getClass()));
+ logger.debug(String.valueOf(warnings2.getClass()));
}
@@ -410,9 +418,7 @@ class F2_01M_SPEC extends AbstractGuideline {
return new StandardResult(ress.score(), ress.status(), (List) ress.warnings(), (List) ress.errors(), ress.internalError());
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
return null;
}
}
@@ -451,6 +457,9 @@ class F2_01M_SPEC extends AbstractGuideline {
class F3_01M_SPEC extends AbstractGuideline {
+ private static final Logger logger = LoggerFactory.getLogger(F3_01M_SPEC.class);
+
+
public F3_01M_SPEC() { super("Metadata includes the identifier for the data", 2*2); }
@Override
@@ -488,9 +497,7 @@ class F3_01M_SPEC extends AbstractGuideline {
return new StandardResult(ress.score(), ress.status(), (List) ress.warnings(), (List) ress.errors(), ress.internalError());
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
return null;
}
}
@@ -527,6 +534,8 @@ class F3_01M_SPEC extends AbstractGuideline {
class I2_01M_SPEC extends AbstractGuideline {
+ private static final Logger logger = LoggerFactory.getLogger(I2_01M_SPEC.class);
+
public I2_01M_SPEC() { super("Metadata uses FAIR-compliant vocabularies", 5*2); }
@Override
@@ -535,7 +544,7 @@ class I2_01M_SPEC extends AbstractGuideline {
// TODO: iterate over results and build one Guideline.Result
try {
-// System.out.println("\nMetadata uses FAIR-compliant vocabularies");
+ logger.debug("\nMetadata uses FAIR-compliant vocabularies");
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
Map results = res_F.results();
// int MaxScoreI2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
@@ -564,9 +573,7 @@ class I2_01M_SPEC extends AbstractGuideline {
return new StandardResult(ress.score(), ress.status(), (List) ress.warnings(), (List) ress.errors(), ress.internalError());
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
}
return null;
}
@@ -604,6 +611,9 @@ class I2_01M_SPEC extends AbstractGuideline {
class R1_01M_SPEC extends AbstractGuideline {
+ private static final Logger logger = LoggerFactory.getLogger(R1_01M_SPEC.class);
+
+
public R1_01M_SPEC() { super("Plurality of accurate and relevant attributes are provided to allow reuse", 3*4); }
@Override
@@ -637,9 +647,7 @@ class R1_01M_SPEC extends AbstractGuideline {
return new StandardResult(ress.score(), ress.status(), (List) ress.warnings(), (List) ress.errors(), ress.internalError());
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
}
return null;
}
@@ -677,6 +685,9 @@ class R1_01M_SPEC extends AbstractGuideline {
class R1_2_01M_SPEC extends AbstractGuideline {
+ private static final Logger logger = LoggerFactory.getLogger(R1_2_01M_SPEC.class);
+
+
public R1_2_01M_SPEC() { super("Metadata includes provenance information according to a cross-community language", 2*5); }
@Override
@@ -711,9 +722,7 @@ class R1_2_01M_SPEC extends AbstractGuideline {
return new StandardResult(ress.score(), ress.status(), (List) ress.warnings(), (List) ress.errors(), ress.internalError());
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
}
return null;
}
diff --git a/src/main/java/eu/dnetlib/validator2/validation/utils/ISOLangCodes.java b/src/main/java/eu/dnetlib/validator2/validation/utils/ISOLangCodes.java
index 396da66..145e1b6 100644
--- a/src/main/java/eu/dnetlib/validator2/validation/utils/ISOLangCodes.java
+++ b/src/main/java/eu/dnetlib/validator2/validation/utils/ISOLangCodes.java
@@ -4,6 +4,7 @@ package eu.dnetlib.validator2.validation.utils;
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -20,10 +21,10 @@ public class ISOLangCodes {
private static void loadLangCodes() {
try (InputStream in = MediaTypes.class.getClassLoader().getResourceAsStream("iso639XLangCodes.csv")) {
//TODO:Remove the regex
- List l = Arrays.asList(IOUtils.toString(in, "UTF-8").split("\\s*,\\s*"));
+ List l = Arrays.asList(IOUtils.toString(in, StandardCharsets.UTF_8).split("\\s*,\\s*"));
langs = new HashSet<>(l);
}
- catch (Exception e) {}
+ catch (Exception e) {} // We may get an NPE.
}
diff --git a/src/test/java/eu/dnetlib/validator2/engine/Test.java b/src/test/java/eu/dnetlib/validator2/engine/Test.java
index 805bf97..2d3c17f 100644
--- a/src/test/java/eu/dnetlib/validator2/engine/Test.java
+++ b/src/test/java/eu/dnetlib/validator2/engine/Test.java
@@ -4,6 +4,7 @@ import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.Guideline;
import eu.dnetlib.validator2.validation.guideline.openaire.LiteratureGuidelinesV3Profile;
import groovy.xml.DOMBuilder;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import java.io.FileReader;
@@ -13,6 +14,9 @@ import java.util.stream.Collectors;
public class Test {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Test.class);
+
+
private static final String[] FILES = new String[] {
// "src/test/resources/openaireguidelinesV3/dia.library.tuc.gr/Record_21811.xml",
// "src/test/resources/openaireguidelinesV3/cris.vtt.fi/01.xml",
@@ -23,28 +27,26 @@ public class Test {
public static void main(String[] args) {
// String xmlFile = args[0];
LiteratureGuidelinesV3Profile profile = new LiteratureGuidelinesV3Profile();
- System.out.println("Max score: " + profile.maxScore());
+ logger.info("Max score: " + profile.maxScore());
Map scorePerDoc = new LinkedHashMap<>();
for (String file: FILES) {
try {
- System.out.println("Processing \"" + file + "\"");
+ 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());
Map results = result.results();
for (Map.Entry entry : results.entrySet()) {
- System.out.println(entry.getKey() + " = " + entry.getValue());
+ logger.info(entry.getKey() + " = " + entry.getValue());
}
}
catch(Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
}
}
String printout = scorePerDoc.entrySet().stream().
map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
- System.out.println(printout);
+ logger.info(printout);
}
}
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 b8219fd..2db756a 100644
--- a/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java
+++ b/src/test/java/eu/dnetlib/validator2/engine/Test_FAIR.java
@@ -1,24 +1,23 @@
package eu.dnetlib.validator2.engine;
-//import com.google.gson.Gson;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.Guideline;
-import eu.dnetlib.validator2.validation.guideline.StandardResult;
import eu.dnetlib.validator2.validation.guideline.openaire.FAIR_Data_GuidelinesProfile;
import groovy.xml.DOMBuilder;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import java.io.FileReader;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.OptionalDouble;
-import java.util.StringJoiner;
-import java.util.function.ToDoubleFunction;
import java.util.stream.Collectors;
-import java.util.stream.DoubleStream;
public class Test_FAIR {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Test_FAIR.class);
+
+
private static final String[] FILES = new String[]{
"src/test/resources/openaireguidelinesV3/dia.library.tuc.gr/Record_21811.xml",
"src/test/resources/openaireguidelinesV3/cris.vtt.fi/03.xml",
@@ -32,27 +31,25 @@ public class Test_FAIR {
public static void main(String[] args) {
// String xmlFile = args[0];
FAIR_Data_GuidelinesProfile profile = new FAIR_Data_GuidelinesProfile();
- System.out.println("Max score: " + profile.maxScore());
+ logger.info("Max score: " + profile.maxScore());
Map scorePerDoc = new LinkedHashMap<>();
int i = 1;
for (String file : FILES) {
try {
- System.out.println("Processing \"" + file + "\"");
+ 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());
Map results = result.results();
-// for (Map.Entry entry : results.entrySet()) {
-// System.out.println(entry.getKey() + " = " + entry.getValue());
-// }
-
+ if ( logger.isDebugEnabled() ) {
+ for ( Map.Entry entry : results.entrySet() ) {
+ logger.debug(entry.getKey() + " = " + entry.getValue());
+ }
+ }
} catch (Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
- e.printStackTrace();
+ logger.error("", e);
}
-// System.out.println("\n\n\n\n");
}
// Individual scores
@@ -60,13 +57,11 @@ public class Test_FAIR {
map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
// Average Score
- double FinalScore = scorePerDoc.entrySet().stream().mapToDouble(entry -> entry.getValue()).average().getAsDouble();
-
-
- System.out.println(printout);
- System.out.println("\nValidation Score: "+FinalScore);
-// TotalScore.forEach(System.out::println);
+ OptionalDouble optionalFinalScore = scorePerDoc.values().stream().mapToDouble(aDouble -> aDouble).average();
+ double finalScore = (optionalFinalScore.isPresent() ? optionalFinalScore.getAsDouble() : -1 );
+ logger.info(printout);
+ logger.info("\nValidation 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 a4b4acf..1f1c11c 100644
--- a/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java
+++ b/src/test/java/eu/dnetlib/validator2/engine/Test_v4.java
@@ -2,62 +2,66 @@ package eu.dnetlib.validator2.engine;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.Guideline;
+import eu.dnetlib.validator2.validation.guideline.openaire.AbstractOpenAireProfile;
import eu.dnetlib.validator2.validation.guideline.openaire.LiteratureGuidelinesV4Profile;
import groovy.xml.DOMBuilder;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import java.io.FileReader;
import java.util.LinkedHashMap;
import java.util.Map;
-
+import java.util.OptionalDouble;
import java.util.stream.Collectors;
public class Test_v4 {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(Test_v4.class);
+
+
private static final String[] FILES = new String[] {
"src/test/resources/openaireguidelinesV4/v4_literature_all_invalid_guidelines_record.xml",
- "src/test/resources/openaireguidelinesV4/v4_literature_all_guidelines_record.xml",
+// "src/test/resources/openaireguidelinesV4/v4_literature_all_guidelines_record.xml",
// "src/test/resources/openaireguidelinesV4/oai_mediarep_org_doc_2534.xml",
// "src/test/resources/openaireguidelinesV4/01_gv4.xml"
};
public static void main(String[] args) {
// String xmlFile = args[0];
- LiteratureGuidelinesV4Profile profile = new LiteratureGuidelinesV4Profile();
- System.out.println("Max score: " + profile.maxScore());
+ AbstractOpenAireProfile profile = new LiteratureGuidelinesV4Profile();
+ logger.info("Max score: " + profile.maxScore());
Map scorePerDoc = new LinkedHashMap<>();
for (String file: FILES) {
try {
- System.out.println("Processing \"" + file + "\"");
+ 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());
Map results = result.results();
for (Map.Entry entry : results.entrySet()) {
if (entry.getKey().toString().contains("Date")) {
- System.out.println(results.get(entry.getKey()).warnings().toString());
- System.out.println(results.get(entry.getKey()).errors().toString());
- System.out.println(entry.getKey() + " = " + entry.getValue());
- System.out.println("\n");
+ 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");
}
- System.out.println(entry.getKey() + " = " + entry.getValue());
+ logger.debug(entry.getKey() + " = " + entry.getValue());
}
}
catch(Exception e) {
- System.out.println(e.getMessage());
- System.out.println(e);
+ logger.error(e.getMessage());
e.printStackTrace();
}
}
// Individual scores
String printout = scorePerDoc.entrySet().stream().
map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
+
// Average Score
- double FinalScore = scorePerDoc.entrySet().stream().mapToDouble(entry -> entry.getValue()).average().getAsDouble();
-
- System.out.println(printout);
- System.out.println("\nValidation Score: "+FinalScore);
+ OptionalDouble optionalFinalScore = scorePerDoc.values().stream().mapToDouble(aDouble -> aDouble).average();
+ double finalScore = (optionalFinalScore.isPresent() ? optionalFinalScore.getAsDouble() : -1 );
+ logger.info(printout);
+ logger.info("\nValidation Score: " + finalScore);
}
}
diff --git a/src/test/resources/log4j2.properties b/src/test/resources/log4j2.properties
deleted file mode 100644
index c138c2a..0000000
--- a/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-status = error
-dest = err
-name = PropertiesConfig
-
-property.filename = target/validator_testing.log
-
-
-appender.rolling.type = RollingFile
-appender.rolling.name = RollingFile
-appender.rolling.fileName = ${filename}
-appender.rolling.filePattern = target/validator_testing -%d{MM-dd-yy-HH-mm-ss}-%i.log.gz
-appender.rolling.layout.type = PatternLayout
-appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
-appender.rolling.policies.type = Policies
-appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
-appender.rolling.policies.time.interval = 2
-appender.rolling.policies.time.modulate = true
-appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-appender.rolling.policies.size.size=100MB
-appender.rolling.strategy.type = DefaultRolloverStrategy
-appender.rolling.strategy.max = 5
-
-logger.rolling.name = eu.dnetlib.validator2
-logger.rolling.additivity = false
-logger.rolling.appenderRef.rolling.ref = RollingFile
diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml
new file mode 100644
index 0000000..3eae567
--- /dev/null
+++ b/src/test/resources/logback.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ logs/ValidationEngine.log
+
+
+ logs/ValidationEngine.%i.log.zip
+ 1
+ 20
+
+
+
+ 50MB
+
+
+ UTF-8
+ %d{yyyy-MM-dd HH:mm:ss.SSS z} [%thread] %-5level %logger{36}.%M\(@%line\) - %msg%n
+
+
+
+
+
+ UTF-8
+ %d{yyyy-MM-dd HH:mm:ss.SSS z} [%thread] %highlight(%-5level) %cyan(%logger{36}.%M\(@%line\)) - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file