From ab5f1222c539a507d8b69a32f5076e76591f6b61 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Mon, 3 Jun 2019 14:47:20 +0200 Subject: [PATCH] Split Single and Multi Tables --- .../fgbks/dmn/beans/TableDataBean.java | 31 +++++++--- .../core/models/VerifierCollectionResult.java | 13 ++++ dmn-verifier-app/src/main/webapp/index.xhtml | 62 ++++++++++++++++++- .../main/webapp/resources/css/stylesheet.css | 6 +- 4 files changed, 103 insertions(+), 9 deletions(-) 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 bc24d74..60e6251 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 f173783..ddda4bd 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 d692b52..a10f255 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 8a5498f..015738a 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 { -- GitLab