diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java index f733227431c63af264a13f5e93594ffe7b7e355e..a1c4fbc85198eb466b5aacb565d3dfb1d8a7bd1c 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/DmnRuleMap.java @@ -147,8 +147,8 @@ public class DmnRuleMap { for (OutputType ot : outputColumns) { Set<OutputType> equalOuts = new HashSet<>(); for (OutputType otInner : outputColumns) { - if (ot.label != null - && ot.label.equals(otInner.label) + if (ot.expressionName != null + && ot.expressionName.equals(otInner.expressionName) && ot.dataType.equals(otInner.dataType)) { equalOuts.add(otInner); } @@ -181,10 +181,14 @@ public class DmnRuleMap { inputColumns.stream() .filter(i -> i.getDecisionKey().equals(ot.getDecisionKey())) .collect(Collectors.toList())) { - // only, if the label didn't exists in previously created input + // only, if the expressionName didn't exists in previously created input Optional<InputType> existingInputType = newInputTypes.stream() - .filter(i -> i.label.equals(inputType.label) && i.dataType == inputType.dataType) + .filter( + i -> + i.expressionName != null + && i.expressionName.equals(inputType.expressionName) + && i.dataType == inputType.dataType) .findFirst(); if (existingInputType.isPresent()) { inputType @@ -216,7 +220,10 @@ public class DmnRuleMap { // try to find existing col Optional<InputType> orgI = orgInputTypes.stream() - .filter(i -> i.label.equals(inputType.label) && i.dataType == inputType.dataType) + .filter( + i -> + i.expressionName.equals(inputType.expressionName) + && i.dataType == inputType.dataType) .findFirst(); List<Value> vals = inputs.getOrDefault(inputType, new ArrayList<>()); if (orgI.isPresent()) { @@ -234,7 +241,10 @@ public class DmnRuleMap { // try to find existing col Optional<InputType> orgI = orgInputTypes.stream() - .filter(i -> i.label.equals(inputType.label) && i.dataType == inputType.dataType) + .filter( + i -> + i.expressionName.equals(inputType.expressionName) + && i.dataType == inputType.dataType) .findFirst(); List<Value> vals = inputs.getOrDefault(inputType, new ArrayList<>()); if (!orgI.isPresent()) { diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/InputType.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/InputType.java index db069e0855a0069f2823fa06790ff6550f8e7835..6315fee4f5ef391653a7bc0c5c60803aec3f72d5 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/InputType.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/InputType.java @@ -1,5 +1,6 @@ package de.unikoblenz.fgbks.dmn.core.dmnhelper; +import java.util.UUID; import org.camunda.bpm.dmn.engine.DmnDecision; import org.camunda.bpm.dmn.engine.impl.DmnDecisionTableInputImpl; @@ -14,7 +15,9 @@ public class InputType extends Type { d, input.getId(), DataType.getTypeFromString(input.getExpression().getTypeDefinition().getTypeName()), - input.getName()); + input.getExpression().getExpression() == null + ? UUID.randomUUID().toString().substring(0, 9) + : input.getExpression().getExpression()); } public InputType(InputType inputType) { diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java index ca97925656002ea00133643981d731fe41055c8e..968211f13c3fd37449156d06d94e7fa23c04dccf 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/dmnhelper/Type.java @@ -12,7 +12,7 @@ public abstract class Type { protected final DmnDecision decision; protected final String id; protected final DataType dataType; - protected final String label; + protected final String expressionName; protected String overwrittenDecisionKey; protected Set<String> predefinedValues; @@ -35,8 +35,8 @@ public abstract class Type { return dataType; } - public String getLabel() { - return label; + public String getExpressionName() { + return expressionName; } public void setOverwrittenDecisionKey(String overwrittenDecisionKey) { @@ -51,11 +51,11 @@ public abstract class Type { predefinedValues.add(predefinedValue); } - protected Type(DmnDecision decision, String id, DataType dataType, String label) { + protected Type(DmnDecision decision, String id, DataType dataType, String expressionName) { this.decision = decision; this.id = id; this.dataType = dataType; - this.label = label; + this.expressionName = expressionName; this.overwrittenDecisionKey = null; this.predefinedValues = new HashSet<>(); } @@ -64,7 +64,7 @@ public abstract class Type { this.decision = type.decision; this.id = type.id; this.dataType = type.dataType; - this.label = type.label; + this.expressionName = type.expressionName; this.overwrittenDecisionKey = type.overwrittenDecisionKey; this.predefinedValues = new HashSet<>(type.predefinedValues); } @@ -106,7 +106,7 @@ public abstract class Type { } public boolean isEqualExpression(Type type) { - return this.label.equals(type.label); + return this.expressionName.equals(type.expressionName); } @Override diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java index 5429f3b83f399fa0661be73112b6e1e045a70c60..d313a4e89430d5dbf1264f56fe315faaf8b9598e 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/models/VerifierType.java @@ -161,7 +161,7 @@ public enum VerifierType { } public static VerifierCollectionResult getAllResults(List<DmnDecision> dmnDecisionList) { - return getAllResults(dmnDecisionList, false); + return getAllResults(dmnDecisionList, true); } public static VerifierCollectionResult getAllResults( diff --git a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/EquivalentVerifier.java b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/EquivalentVerifier.java index ab4d7e65d575622b45de9932f67087c1a86dced2..ffe51624b596659a8d847ec48c662672eea38034 100644 --- a/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/EquivalentVerifier.java +++ b/dmn-verifier-app/src/main/java/de/unikoblenz/fgbks/dmn/core/verifier/EquivalentVerifier.java @@ -30,7 +30,7 @@ public class EquivalentVerifier extends AbstractVerifier { for (Type t : allTypesFromDecisionKey) { // only check strings for equvalent rules (input + output) if (t.getDataType() == DataType.STRING) { - // ensure label is not null and not empty + // ensure expression is not null and not empty List<Value> values = dmnRuleMap.getValuesFromType(t).stream() .filter( diff --git a/dmn-verifier-app/src/main/resources/sampleMultiTable.dmn b/dmn-verifier-app/src/main/resources/sampleMultiTable.dmn index 68a9335a1fa1a114dbe94362c8c2c902e529f9f2..d4bb431808528885914ef567d7985ae3d8017cc4 100644 --- a/dmn-verifier-app/src/main/resources/sampleMultiTable.dmn +++ b/dmn-verifier-app/src/main/resources/sampleMultiTable.dmn @@ -7,12 +7,12 @@ <decisionTable id="decisionTable_1"> <input id="input_1" label="a"> <inputExpression id="inputExpression_1" typeRef="integer"> - <text></text> + <text>a</text> </inputExpression> </input> <input id="InputClause_0quh9nu" label="b"> <inputExpression id="LiteralExpression_0u964y9" typeRef="integer"> - <text></text> + <text>b</text> </inputExpression> </input> <output id="output_1" name="outX" typeRef="integer" /> diff --git a/dmn-verifier-app/src/main/webapp/index.xhtml b/dmn-verifier-app/src/main/webapp/index.xhtml index 767262e0c9c122ce2c39353c59ebeb8e2abc9b4a..1cb5a6855ee6b8d8afc9c47fe65a4d691c87434e 100644 --- a/dmn-verifier-app/src/main/webapp/index.xhtml +++ b/dmn-verifier-app/src/main/webapp/index.xhtml @@ -20,7 +20,7 @@ <h:form enctype="multipart/form-data" id="upload"> <p:fileUpload value="#{dmnUploadBean.file}" mode="advanced" - label="Choose DMN" + expressionName="Choose DMN" description="Select File (only DMN)" allowTypes="/(\.|\/)(dmn)$/" auto="true"