1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.decima.xml.assessment.schematron;
28
29 import gov.nist.secauto.decima.core.assessment.Assessment;
30 import gov.nist.secauto.decima.core.assessment.AssessmentException;
31 import gov.nist.secauto.decima.core.assessment.result.AssessmentResultBuilder;
32 import gov.nist.secauto.decima.core.assessment.result.TestStatus;
33 import gov.nist.secauto.decima.xml.document.XMLDocument;
34
35 import org.jdom2.Element;
36
37 import java.util.Arrays;
38 import java.util.List;
39
40 public class ResultGeneratingSVRLHandler
41 extends AbstractIdAwareSVRLHandler {
42
43 public ResultGeneratingSVRLHandler(Assessment<? extends XMLDocument> assessment, XMLDocument sourceDocument,
44 AssessmentResultBuilder assessmentResultBuilder, IdAwareSchematronHandler handler) throws AssessmentException {
45 super(assessment, sourceDocument, assessmentResultBuilder, handler);
46 }
47
48 protected static List<String> handleValues(String text) {
49 String[] values = text.split("\\|");
50 return Arrays.asList(values);
51 }
52
53 @Override
54 public void handleSuccessfulReport(Element successfulReport) {
55 String assertionId = successfulReport.getAttributeValue("id");
56 TestStatus testStatus = TestStatus.INFORMATIONAL;
57 String xpath = successfulReport.getAttributeValue("location");
58 String valueText = successfulReport.getChildText("text", successfulReport.getNamespace());
59 String derivedRequirementId = assertionId;
60 List<String> values = handleValues(valueText);
61 handleAssertionResult(derivedRequirementId, assertionId, testStatus, xpath, values);
62 }
63
64 @Override
65 public void handleFailedAssert(Element failedAssert) {
66 String assertionId = failedAssert.getAttributeValue("id");
67 TestStatus testStatus = TestStatus.FAIL;
68 String xpath = failedAssert.getAttributeValue("location");
69 String valueText = failedAssert.getChildText("text", failedAssert.getNamespace());
70 String derivedRequirementId = assertionId;
71 List<String> values = handleValues(valueText);
72 handleAssertionResult(derivedRequirementId, assertionId, testStatus, xpath, values);
73 }
74 }