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

#9 Add actions for predefined missing value

(delete to predefined values / add rule)
parent 3d203177
No related branches found
No related tags found
No related merge requests found
package de.unikoblenz.fgbks.core.dmn.verification.verifier.impl;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionScope.INPUT_COLUMN;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionScope.OUTPUT_COLUMN;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionScope.RULE;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionType.CREATE;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionType.UPDATE;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.VerificationFix.SHOW_INPUT_COLUMNS;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.VerificationFix.SHOW_OUTPUT_COLUMNS;
......@@ -13,6 +18,8 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.utils.VDmnFunctions;
import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification;
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.PredefinedMissingValueVerification;
......@@ -82,9 +89,42 @@ public class PredefinedMissingValueVerifier extends AbstractVerifier {
}
private void addToResult(VDmnColumn stringColumn, Set<String> missingStringValues) {
vreFactory.addElement(VerificationResultEntryElement.create(stringColumn));
vreFactory.addVerificationFix(
stringColumn.isInputColumn() ? SHOW_INPUT_COLUMNS : SHOW_OUTPUT_COLUMNS);
// Add fixes for missing values: add rules
for (String value : missingStringValues) {
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName("New rule with \"" + value + "\"")
.addAction(
Action.getBuilder()
.withActionScope(RULE)
.withActionType(CREATE)
.addIdValue(stringColumn.getVDmnDecision().getDecisionId())
.addValue(stringColumn.getColumnId().getValue(), "\"" + value + "\"")
.build())
.build());
}
// Add fixes for missing values: delete predefined value
for (String value : missingStringValues) {
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName("Delete predefined value \"" + value + "\"")
.addAction(
Action.getBuilder()
.withActionScope(stringColumn.isInputColumn() ? INPUT_COLUMN : OUTPUT_COLUMN)
.withActionType(UPDATE)
.addIdValue(stringColumn.getVDmnDecision().getDecisionId())
.addIdValue(stringColumn.getColumnId())
.addValue("delPredVal", value)
.build())
.build());
}
vreFactory
.addElement(VerificationResultEntryElement.create(stringColumn))
.addVerificationFix(
stringColumn.isInputColumn() ? SHOW_INPUT_COLUMNS : SHOW_OUTPUT_COLUMNS);
StringBuilder sb = new StringBuilder();
sb.append(VDmnFunctions.templateDecisionColumn(stringColumn));
sb.append(missingStringValues.size() > 1 ? "These string values are" : "This string value is");
......
......@@ -17,7 +17,7 @@ public class PredefinedExistingValueVerification extends AbstractVerificationTyp
new Name("Predefined Existing Values"),
new Description(
"Detecting string values, "
+ "which are not defined in list of predefined values of the column."));
+ "which are not defined in the list of predefined values of the column."));
}
public static PredefinedExistingValueVerification getInstance() {
......
......@@ -72,7 +72,7 @@ TODO
- Verifier: [PredefinedExistingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedExistingValueVerifier.java)
#### Description
Detecting string values, which are not defined in list of predefined values of the column.
Detecting string values, which are not defined in the list of predefined values of the column.
#### Algorithm
```
......
......@@ -197,7 +197,6 @@ function performVerificationFixCREATE(verificationEntry, fixAction) {
case 'INPUT_ENTRY':
case 'OUTPUT_ENTRY':
case 'OUTPUT_COLUMN':
case 'DECISION_TABLE':
case 'DECISION':
default:
alert("ACTION undefined: " + fixAction.actionType + ' -> '
......@@ -400,9 +399,6 @@ function updateDecision(verificationEntry, fixAction) {
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
}
// ACTION CREATE PREDEFINED VALUE
// )
/**
*
* @param {VerificationEntry} verificationEntry
......@@ -420,19 +416,32 @@ function updateColumn(verificationEntry, fixAction, idName) {
column.businessObject.inputExpression.text = fixAction.actionValues['name'];
}
}
if (fixAction.actionValues['addPredVal']) {
if (fixAction.actionValues['addPredVal']
|| fixAction.actionValues['delPredVal']) {
let inputVals = [];
if (column.businessObject.inputValues) {
inputVals = column.businessObject.inputValues.text.split(",");
}
let value = fixAction.actionValues['addPredVal'];
let value;
if (fixAction.actionValues['addPredVal']) {
value = fixAction.actionValues['addPredVal'];
} else if (fixAction.actionValues['delPredVal']) {
value = fixAction.actionValues['delPredVal'];
}
if (!value.startsWith('"')) {
value = '"' + value;
}
if (!value.endsWith('"')) {
value = value + '"';
}
inputVals.push(value);
if (fixAction.actionValues['addPredVal']) {
inputVals.push(value);
} else if (fixAction.actionValues['delPredVal']) {
var index = inputVals.indexOf(value);
if (index > -1) {
inputVals.splice(index, 1);
}
}
getCurrentModeler().editAllowedValues(column.businessObject, inputVals);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment