uoa-validator-engine2/src/test/java/eu/dnetlib/validator2/engine/Example.java

64 lines
2.7 KiB
Java

package eu.dnetlib.validator2.engine;
import eu.dnetlib.validator2.engine.builtins.XMLCardinalityRule;
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
import eu.dnetlib.validator2.validation.guideline.*;
import eu.dnetlib.validator2.validation.guideline.openaire.LiteratureGuidelinesV3Profile;
import eu.dnetlib.validator2.validation.guideline.openaire.LiteratureGuidelinesV4Profile;
import eu.dnetlib.validator2.validation.task.ValidationTask;
import eu.dnetlib.validator2.validation.task.ValidationTaskOutput;
import org.w3c.dom.Document;
import java.util.Collection;
import java.util.concurrent.Executors;
public class Example {
public static void createAndEvaluateRule(Document xmlDoc) {
XMLCardinalityRule rule = XMLCardinalityRule.
builder().
setId("Test rule").
setXPathExpression("//*[name()='something']").
setRange(0, 5).
setIsInclusive(true).
build();
RuleEngine.applyAndReport(rule, xmlDoc, new Reporter<>(Helper.Diagnostics.systemOut()));
}
public static void validateEstablishedGuideline(Document xmlDoc) {
Guideline.Result result = LiteratureGuidelinesV4Profile.TITLE.validate(xmlDoc);
XMLApplicationProfile profile2 = new LiteratureGuidelinesV3Profile();
result = profile2.guideline("Title").validate(xmlDoc);
}
public static void createAndValidateCustomGuideline(Document xmlDoc) {
SyntheticGuideline guideline = SyntheticGuideline.of("Test guideline", 1, Builders.
forMandatoryElement("dc:title", Cardinality.ONE_TO_N).
withOptionalAttribute("xml:lang").
withOptionalAttribute("titleType",
"AlternativeTitle", "Subtitle", "TranslatedTitle", "Other").
build()
);
Guideline.Result result = guideline.validate(xmlDoc);
}
public static void createAndValidateCustomRulesAsGuideline(Document xmlDoc, Collection<Rule<Document>> rules) {
Guideline<Document> guideline = new AbstractGuideline<Document>("Whatever", 1) {
@Override
public Result validate(String id, Document document) {
boolean result = Predicates.all(rules).test(document);
return result ? StandardResult.forSuccess(1, null) : StandardResult.forFailure(null, null);
}
};
}
public static void createCustomValidationTask(Document xmlDoc, Collection<Rule<Document>> rules) {
ValidationTask<Document, Rule<Document>> task = ValidationTask.Factory.newTask(Executors.newCachedThreadPool(), rules, xmlDoc);
task.run((ValidationTaskOutput output) -> {});
}
}