(chore) Rückgabe der Schematron-Ergebnisse als komplexes Objekt in der API

This commit is contained in:
Andreas Penski (init) 2019-05-24 11:32:08 +02:00
parent b3e9d3a244
commit 2069c0d04e
11 changed files with 354 additions and 59 deletions

View file

@ -0,0 +1,72 @@
package de.kosit.validationtool.impl.model;
import java.io.Serializable;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.oclc.purl.dsdl.svrl.ActivePattern;
import org.oclc.purl.dsdl.svrl.FailedAssert;
import org.oclc.purl.dsdl.svrl.FiredRule;
/**
* Basis-Klasse um spezifische Erweiterungen an der generierten Klasse {@link org.oclc.purl.dsdl.svrl.SchematronOutput}
* umzusetzen.
*
* @author Andreas Penski
*/
public abstract class BaseOutput {
public abstract List<Serializable> getActivePatternAndFiredRuleAndFailedAssert();
/**
* Gibt die Liste der {@link FailedAssert} zurück
*
* @return Liste mit {@link FailedAssert}
*/
public List<FailedAssert> getFailedAsserts() {
return filter(FailedAssert.class);
}
/**
* Gibt die Liste der {@link FailedAssert} zurück
*
* @return Liste mit {@link FailedAssert}
*/
public List<FiredRule> getFiredRules() {
return filter(FiredRule.class);
}
/**
* Ermittelt, ob es bei der Validierung {@link FailedAssert}s gab.
*
* @return true wenn mindestens ein {@link FailedAssert} vorhanden ist
*/
public boolean hasFailedAsserts() {
return getFailedAsserts().size() > 0;
}
/**
* Gibt die Liste der {@link ActivePattern} zurück
*
* @return Liste mit {@link ActivePattern}
*/
public List<ActivePattern> getActivePatterns() {
return filter(ActivePattern.class);
}
private <T> List<T> filter(final Class<T> type) {
return getActivePatternAndFiredRuleAndFailedAssert().stream().filter(type::isInstance).map(type::cast).collect(Collectors.toList());
}
/**
* Sucht nach einem {@link FailedAssert} mit einem definierten Namen.
*
* @param name der Name
* @return Optional mit dem {@link FailedAssert}
*/
public Optional<FailedAssert> findFailedAssert(final String name) {
return getFailedAsserts().stream().filter(e -> e.getId().equals(name)).findAny();
}
}