diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/beans/TableDataBean.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/beans/TableDataBean.java index bc24d74970ef19a94b6e7dc7a29f99714a30d668..60e625178ed6774f3654feabd75363962b4666c3 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/beans/TableDataBean.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/beans/TableDataBean.java @@ -1,10 +1,12 @@ package de.unikoblenz.fgbks.dmn.beans; import de.unikoblenz.fgbks.dmn.core.DmnService; +import de.unikoblenz.fgbks.dmn.core.models.VerifierCollectionResult; import de.unikoblenz.fgbks.dmn.core.models.VerifierResult; import java.io.Serializable; import java.util.Collections; import java.util.List; +import java.util.function.Supplier; import javax.annotation.PostConstruct; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; @@ -18,11 +20,11 @@ public class TableDataBean implements Serializable { private DmnService dmnService; - private List<VerifierResult> verifierResultList; + private VerifierCollectionResult verifierResults; @PostConstruct public void init() { - verifierResultList = Collections.emptyList(); + verifierResults = null; if (dmnBean.getDmnXML() != null && !dmnBean.getDmnXML().isEmpty()) { try { dmnService = DmnService.getDmnServiceFromXml(dmnBean.getDmnXML()); @@ -33,16 +35,31 @@ public class TableDataBean implements Serializable { } public List<VerifierResult> getVerifierResultList() { - return verifierResultList; + return accept(() -> verifierResults.getVerifierResults()); } - public List<VerifierResult> calculateVerifierResults(boolean calculateMultiTable) { + public List<VerifierResult> getVerifierResultListSingleTables() { + return accept(() -> verifierResults.getVerifierResultsSingleTables()); + } + + public List<VerifierResult> getVerifierResultListMultiTables() { + return accept(() -> verifierResults.getVerifierResultsMultiTables()); + } + + private List<VerifierResult> accept(Supplier<List<VerifierResult>> supplier) { + if (verifierResults != null) { + return supplier.get(); + } + return Collections.emptyList(); + } + + public VerifierCollectionResult calculateVerifierResults(boolean calculateMultiTable) { init(); if (dmnService == null) { - verifierResultList = Collections.emptyList(); + verifierResults = null; } else { - verifierResultList = dmnService.getAllVerifier(calculateMultiTable).getVerifierResults(); + verifierResults = dmnService.getAllVerifier(calculateMultiTable); } - return verifierResultList; + return verifierResults; } } diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierCollectionResult.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierCollectionResult.java index f1737831619fc4e6cb2fd8ac5d4ace4629b31a99..ddda4bd937d2cfe22acdc58734d04d6eadfbeb7b 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierCollectionResult.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierCollectionResult.java @@ -6,6 +6,7 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Collectors; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -23,6 +24,18 @@ public class VerifierCollectionResult { return new ArrayList<>(verifierResults); } + public List<VerifierResult> getVerifierResultsSingleTables() { + return getVerifierResults().stream() + .filter(r -> !r.isMultiTable()) + .collect(Collectors.toList()); + } + + public List<VerifierResult> getVerifierResultsMultiTables() { + return getVerifierResults().stream() + .filter(VerifierResult::isMultiTable) + .collect(Collectors.toList()); + } + public static Builder getBuilder() { return new VerifierCollectionResult().new Builder(); } diff --git a/dmn-verifier-app/src/main/webapp/index.xhtml b/dmn-verifier-app/src/main/webapp/index.xhtml index d692b52fa101a74aa335e5841f8e75efb0b97b89..a10f255dfd4aec815931220e49c2ec01e7d67b9d 100644 --- a/dmn-verifier-app/src/main/webapp/index.xhtml +++ b/dmn-verifier-app/src/main/webapp/index.xhtml @@ -82,6 +82,7 @@ <p:fileDownload value="#{buttonBean.downloadDmn}"/> </p:commandButton> </h:form> + <!-- Single Table --> <p:ajaxStatus style="display:block;"> <f:facet name="default"> </f:facet> @@ -91,8 +92,67 @@ </f:facet> <f:facet name="complete"> + <h2>Single table results</h2> <p:dataTable var="verifier" - value="#{tableDataBean.verifierResultList}" + value="#{tableDataBean.verifierResultListSingleTables}" + emptyMessage="No records found, check syntax!"> + <p:column style="width:16px"> + <p:rowToggler/> + </p:column> + + <p:column styleClass="col-dataType" headerText="Type"> + <h:outputText value="#{verifier.verifierType}"/> + </p:column> + + <p:column styleClass="col-description" headerText="Description"> + <h:outputText value="#{verifier.verificationDescription}"/> + </p:column> + + <p:column styleClass="col-quantity" headerText="Quantity"> + <h:outputText value="#{verifier.verificationsCount}"/> + </p:column> + + <p:rowExpansion> + <p:dataTable var="results" value="#{verifier.verifications}"> + <p:column styleClass="subcol-message" headerText="Message"> + <h:outputText value="#{results.message}"/> + </p:column> + <p:column styleClass="subcol-rules" headerText="Rules"> + <h:panelGroup rendered="#{not verifier.multiTable}"> + <p:commandButton styleClass="ruleselect-button" + style="width: 95%;" + onclick="addHighlightCss(#{results.rulesAsJson});" + value="Show"/> + </h:panelGroup> + <h:panelGroup rendered="#{verifier.multiTable}"> + <p:dataTable var="rule" value="#{results.rules}"> + <p:column style="padding: 0px"> + <p:commandButton styleClass="ruleselect-button" + style="width: 95%;" + onclick="addHighlightCssSingleRule('#{rule.ruleId}', '#{rule.decisionKey}');" + value="#{rule.tableName.concat(' (').concat(rule.rowNumber).concat(')')}"/> + </p:column> + </p:dataTable> + </h:panelGroup> + </p:column> + </p:dataTable> + </p:rowExpansion> + </p:dataTable> + </f:facet> + </p:ajaxStatus> + + <!-- Multi Table --> + <p:ajaxStatus style="display:block;"> + <f:facet name="default"> + </f:facet> + + <f:facet name="start"> + </f:facet> + + <f:facet name="complete"> + <h2>Multi table results</h2> + <p:dataTable var="verifier" + value="#{tableDataBean.verifierResultListMultiTables}" emptyMessage="No records found, check syntax!"> <p:column style="width:16px"> <p:rowToggler/> diff --git a/dmn-verifier-app/src/main/webapp/resources/css/stylesheet.css b/dmn-verifier-app/src/main/webapp/resources/css/stylesheet.css index 8a5498fa0e32ba2ddc042258fd72f4580104f536..015738a19da8cb7830b4b19697f909a3007583f2 100644 --- a/dmn-verifier-app/src/main/webapp/resources/css/stylesheet.css +++ b/dmn-verifier-app/src/main/webapp/resources/css/stylesheet.css @@ -4,6 +4,10 @@ html, body { margin: 0; } +h2 { + margin: 10px; +} + .col-type { width: 25%; word-wrap: break-word; @@ -29,7 +33,7 @@ html, body { .highlight { background-color: darkred; - color:white; + color: white; } .dmn-button {