Skip to content
Snippets Groups Projects
Commit a5315d1c authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Merge branch 'feature/fixactions' into 'develop'

Resolve Renaming empty columns

Closes #32

See merge request jonasblatt/ma-jonasblatt-dmn-verifier!111
parents 3adf53fe d9d2676b
No related branches found
No related tags found
No related merge requests found
......@@ -19,12 +19,14 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputColumn;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnInputData;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnNode;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnOutputColumn;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.utils.VDmnFunctions;
import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntryElement;
import de.unikoblenz.fgbks.core.dmn.verification.result.actions.Action;
import de.unikoblenz.fgbks.core.dmn.verification.result.actions.VerificationFix;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.AbstractVerifier;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.MissingInputDataVerification;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
......@@ -44,6 +46,7 @@ public class MissingInputDataVerifier extends AbstractVerifier {
}
private void checkExistingInputData(VDmnInputColumn inputColumn, List<VDmnNode> inputNodes) {
List<VDmnOutputColumn> potentialNoNameOutputs = new ArrayList<>();
// if the inputColumn has no name, add the column
if (inputColumn.getName().isPresent()) {
Name inputColumnName = inputColumn.getName().get();
......@@ -64,6 +67,12 @@ public class MissingInputDataVerifier extends AbstractVerifier {
&& outputColumn.getName().get().equals(inputColumnName)) {
return;
}
if (!outputColumn.getName().isPresent()
&& (outputColumn.getTypeRef().equals(inputColumn.getTypeRef())
|| outputColumn.getValues().stream()
.allMatch(v -> v.getText().getValue().isEmpty()))) {
potentialNoNameOutputs.add(outputColumn);
}
}
}
}
......@@ -72,6 +81,28 @@ public class MissingInputDataVerifier extends AbstractVerifier {
vreFactory
.addElement(VerificationResultEntryElement.create(inputColumn))
.addVerificationFix(SHOW_INPUT_COLUMNS);
// Actions for renaming output Column
potentialNoNameOutputs.forEach(
o ->
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName(
new Name(
"Name \""
+ inputColumn.getName().get().getValue()
+ "\" the output column in decision \""
+ VDmnFunctions.getDecisionStringName(o.getVDmnDecision())
+ "\""))
.addAction(
Action.getBuilder()
.withActionType(UPDATE)
.withActionScope(OUTPUT_COLUMN)
.addIdValue(o.getVDmnDecision().getDecisionId())
.addIdValue(o.getOutputId())
.addValue("name", inputColumn.getName().get().getValue())
.addValue("typeRef", inputColumn.getTypeRef().getName())
.build())
.build()));
// Action for creating input Data
if (inputColumn.getName().isPresent()) {
vreFactory.addVerificationFix(
......@@ -92,6 +123,8 @@ public class MissingInputDataVerifier extends AbstractVerifier {
// Actions for creating output columns in connected decisions
searchPossibleConnectedDecisions(inputColumn);
}
// Actions for renaming column
searchPossibleNames(inputColumn);
vreFactory
// Action for deleting column
.addVerificationFix(
......@@ -184,4 +217,58 @@ public class MissingInputDataVerifier extends AbstractVerifier {
}
}
}
private void searchPossibleNames(VDmnInputColumn inputColumn) {
List<Name> otherInputNames =
inputColumn.getVDmnDecisionTable().getVDmnInputColumns().stream()
.filter(c -> c.getName().isPresent())
.map(c -> c.getName().get())
.collect(Collectors.toList());
if (!inputColumn.getName().isPresent()) {
for (VDmnNode node : inputColumn.getVDmnDecision().getVDmnInformationRequirements()) {
if (node.isInputData()) {
if (!otherInputNames.contains(node.getName().get())) {
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName("Name column \"" + node.getName().get().getValue() + "\"")
.addAction(
Action.getBuilder()
.withActionType(UPDATE)
.withActionScope(INPUT_COLUMN)
.addIdValue(inputColumn.getVDmnDecision().getDecisionId())
.addIdValue(inputColumn.getInputId())
.addValue("name", node.getName().get().getValue())
.build())
.build());
}
} else {
for (VDmnOutputColumn outputColumn :
((VDmnDecision) node).getVDmnDecisionTable().getVDmnOutputColumns()) {
if (outputColumn.getName().isPresent()) {
if (!otherInputNames.contains(outputColumn.getName().get())) {
if (outputColumn.getTypeRef().equals(inputColumn.getTypeRef())
|| inputColumn.getValues().stream()
.allMatch(c -> c.getText().getValue().isEmpty())) {
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName(
"Name column \"" + outputColumn.getName().get().getValue() + "\"")
.addAction(
Action.getBuilder()
.withActionType(UPDATE)
.withActionScope(INPUT_COLUMN)
.addIdValue(inputColumn.getVDmnDecision().getDecisionId())
.addIdValue(inputColumn.getInputId())
.addValue("name", outputColumn.getName().get().getValue())
.addValue("typeRef", outputColumn.getTypeRef().getName())
.build())
.build());
}
}
}
}
}
}
}
}
}
......@@ -424,6 +424,14 @@ function updateColumn(verificationEntry, fixAction, idName) {
column.businessObject.inputExpression.text = fixAction.actionValues['name'];
}
}
if (fixAction.actionValues['typeRef']) {
if (idName === 'outputId') {
column.businessObject.typeRef = fixAction.actionValues['typeRef'].toLowerCase();
} else {
column.businessObject.inputExpression.typeRef = fixAction.actionValues['typeRef'].toLowerCase();
}
}
if (fixAction.actionValues['addPredVal']
|| fixAction.actionValues['delPredVal']) {
let inputVals = [];
......@@ -456,6 +464,7 @@ function updateColumn(verificationEntry, fixAction, idName) {
getCurrentModeler().editAllowedValues(column.businessObject, inputVals);
}
}
openViewWithId(fixAction.actionValues['decisionId']);
}
// get a rule:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment