diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/actions/Action.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/actions/Action.java index e87bef499101c9ae5d3567f6a82ff079ae48f8d4..fcb8156c80b2fd9d94ed8adcb65b803ba4a14f1d 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/actions/Action.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/result/actions/Action.java @@ -10,6 +10,8 @@ import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionSco import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionType.SHOW; import de.unikoblenz.fgbks.base.builder.DefaultBuilder; +import de.unikoblenz.fgbks.core.dmn.domain.ids.AbstractId; +import de.unikoblenz.fgbks.core.dmn.domain.ids.JsonIdentifier; import de.unikoblenz.fgbks.core.dmn.verification.result.AbstractResultObject; import java.util.HashMap; import javax.json.bind.annotation.JsonbProperty; @@ -83,6 +85,16 @@ public class Action extends AbstractResultObject { return this; } + public Builder addIdValue(AbstractId id) { + try { + String keyValue = id.getClass().getAnnotation(JsonIdentifier.class).value(); + this.value.values.put(Validate.notNull(keyValue), Validate.notNull(id.getValue())); + } catch (Exception e) { + // nothing + } + return this; + } + @Override protected void validate() { super.validate(); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputColumnVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputColumnVerifier.java index 1fbbef198af9ea7f896d5573d768a5ce33eab344..fd3a7fe6a3b8b585afedbfb506738bc8331d91bd 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputColumnVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputColumnVerifier.java @@ -77,6 +77,7 @@ public class MissingInputColumnVerifier extends AbstractVerifier { .withFixName(new Name("Delete Input Data")) .addAction( Action.getBuilder() + .addIdValue(inputDataNode.getId()) .withActionType(ActionType.DELETE) .withActionScope(ActionScope.INPUT_DATA) .build()) @@ -92,7 +93,7 @@ public class MissingInputColumnVerifier extends AbstractVerifier { Action.getBuilder() .withActionType(ActionType.CREATE) .withActionScope(ActionScope.INPUT_COLUMN) - .addValue("decisionId", decision.getDecisionId().getValue()) + .addIdValue(decision.getDecisionId()) .addValue("name", inputDataNode.getName().get().getValue()) .addValue("typeRef", "string") .build()) @@ -109,7 +110,7 @@ public class MissingInputColumnVerifier extends AbstractVerifier { Action.getBuilder() .withActionType(ActionType.CREATE) .withActionScope(ActionScope.INPUT_COLUMN) - .addValue("decisionId", decision.getDecisionId().getValue()) + .addIdValue(decision.getDecisionId()) .addValue("name", outputColumn.getName().get().getValue()) .addValue("typeRef", outputColumn.getTypeRef().getName()) .build()) diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputDataVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputDataVerifier.java index 45a16a9432e2684ebdf759cb98168be5cca8a473..479e70b5d2e3fbf4853eae9157ffa9604775811c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputDataVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingInputDataVerifier.java @@ -71,6 +71,7 @@ public class MissingInputDataVerifier extends AbstractVerifier { .withFixName(new Name("Add Data Input")) .addAction( Action.getBuilder() + .addIdValue(inputColumn.getVDmnDecision().getDecisionId()) .withActionType(ActionType.CREATE) .withActionScope(ActionScope.INPUT_DATA) .addValue("name", inputColumn.getName().get().getValue()) @@ -83,6 +84,8 @@ public class MissingInputDataVerifier extends AbstractVerifier { .withFixName(new Name("Delete Column")) .addAction( Action.getBuilder() + .addIdValue(inputColumn.getVDmnDecision().getDecisionId()) + .addIdValue(inputColumn.getInputId()) .withActionType(ActionType.DELETE) .withActionScope(ActionScope.INPUT_COLUMN) .build()) diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java index 6f72e8e924b56d3d239fdfa7f47fb5a62f608788..0771541b88ef1b76b4b9c680fd4f6108034b054a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingRuleVerifier.java @@ -68,7 +68,7 @@ public class MissingRuleVerifier extends AbstractVerifier { Action.getBuilder() .withActionScope(ActionScope.RULE) .withActionType(ActionType.CREATE) - .addValue("decisionId", missingRule.getVDmnDecision().getDecisionId().getValue()); + .addIdValue(missingRule.getVDmnDecision().getDecisionId()); for (VDmnInputValue v : missingRule.getVDmnInputValues()) { fixActionBuilder.addValue( v.getVDmnInputColumn().getInputId().getValue(), v.getBoundary().getParsedText()); diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java index a166b441b3888f56d4a7d89f954ce1223798034b..dcb12887e10ff9374c7fc25af192ff24962d3e1c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PartialReductionVerifier.java @@ -160,7 +160,7 @@ public class PartialReductionVerifier extends AbstractVerifier { Action.getBuilder() .withActionScope(ActionScope.RULE) .withActionType(ActionType.CREATE) - .addValue("decisionId", inColumns.get(0).getVDmnDecision().getDecisionId().getValue()); + .addIdValue(inColumns.get(0).getVDmnDecision().getDecisionId()); for (int i = 0; i < inColumns.size(); i++) { fixActionBuilder.addValue( inColumns.get(i).getInputId().getValue(), boundaries.get(i).getParsedText()); @@ -171,22 +171,25 @@ public class PartialReductionVerifier extends AbstractVerifier { outputValues.get(i).getVDmnOutputColumn().getOutputId().getValue(), outputValues.get(i).getText().getValue()); } - Action.Builder fixActionBuilder2 = - Action.getBuilder().withActionScope(ActionScope.RULE).withActionType(ActionType.DELETE); - fixActionBuilder2.addValue( - "decisionId", clusterRules.get(0).getVDmnDecision().getDecisionId().getValue()); - fixActionBuilder2.addValue("ruleId", clusterRules.get(0).getRuleId().getValue()); - Action.Builder fixActionBuilder3 = - Action.getBuilder().withActionScope(ActionScope.RULE).withActionType(ActionType.DELETE); - fixActionBuilder3.addValue( - "decisionId", clusterRules.get(1).getVDmnDecision().getDecisionId().getValue()); - fixActionBuilder3.addValue("ruleId", clusterRules.get(1).getRuleId().getValue()); + vreFactory.addVerificationFix( VerificationFix.getBuilder() .withFixName(new Name("Combine")) .addAction(fixActionBuilder.build()) - .addAction(fixActionBuilder2.build()) - .addAction(fixActionBuilder3.build()) + .addAction( + Action.getBuilder() + .withActionScope(ActionScope.RULE) + .withActionType(ActionType.DELETE) + .addIdValue(clusterRules.get(0).getVDmnDecision().getDecisionId()) + .addIdValue(clusterRules.get(0).getRuleId()) + .build()) + .addAction( + Action.getBuilder() + .withActionScope(ActionScope.RULE) + .withActionType(ActionType.DELETE) + .addIdValue(clusterRules.get(1).getVDmnDecision().getDecisionId()) + .addIdValue(clusterRules.get(1).getRuleId()) + .build()) .build()); } } diff --git a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js index 93879338e20c79918c31a9261c4f2ca90fb71025..e4d72c9277101869d0bdf0bff4654fda25f50f9b 100644 --- a/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js +++ b/dmnverifierfrontend/src/main/resources/META-INF/resources/js/dmnVerifierActions.js @@ -233,8 +233,7 @@ function createRule(verificationEntry, fixAction) { */ function createInputData(verificationEntry, fixAction) { openViewWithId(verificationEntry.elements[0].identifier['definitionId']); - let decision = getShapeWithId( - verificationEntry.elements[0].identifier['decisionId']); + let decision = getShapeWithId(fixAction.actionValues['decisionId']); const modeler = getCurrentModeler(); const shape = modeler._elementFactory.createDrdElement('shape', {type: 'dmn:InputData'}); @@ -254,7 +253,6 @@ function createInputData(verificationEntry, fixAction) { * @param {Action} fixAction */ function createInputColumn(verificationEntry, fixAction) { - // getCurrentModeler().createShape(getCurrentModeler()._elementFactory.createDrdElement('shape', {type:'dmn:InputData'}), {x:0,y:0}, dmnModeler._definitions) openViewWithId(fixAction.actionValues['decisionId']); const modeler = getCurrentModeler(); let col = modeler.addCol({type: 'dmn:InputClause'}); @@ -300,10 +298,10 @@ function performVerificationFixDELETE(verificationEntry, fixAction) { function deleteRule(verificationEntry, fixAction) { openViewWithId(fixAction.actionValues['decisionId']); const modeler = getCurrentModeler(); - for (const [key, value] of Object.entries(fixAction.actionValues)) { - if (key === 'ruleId') { - modeler.removeRow(modeler._sheet._elementRegistry.get(value)); - } + const row = modeler._sheet._elementRegistry.get( + fixAction.actionValues['ruleId']); + if (row) { + modeler.removeRow(row); } } @@ -316,12 +314,10 @@ function deleteRule(verificationEntry, fixAction) { function deleteColumn(verificationEntry, fixAction, columnIdName) { openViewWithId(fixAction.actionValues['decisionId']); const modeler = getCurrentModeler(); - verificationEntry.elements.forEach(function (el) { - let col = getSheetElementWithId(el.identifier[columnIdName]); - if (col) { - modeler.removeCol(col); - } - }); + const col = getSheetElementWithId(fixAction.actionValues[columnIdName]); + if (col) { + modeler.removeCol(col); + } } /** @@ -332,12 +328,10 @@ function deleteColumn(verificationEntry, fixAction, columnIdName) { function deleteInputData(verificationEntry, fixAction) { openViewWithId(verificationEntry.elements[0].identifier['definitionId']); const modeler = getCurrentModeler(); - verificationEntry.elements.forEach(function (el) { - let inputData = getShapeWithId(el.identifier['inputDataId']); - if (inputData) { - modeler.removeShape(inputData); - } - }); + let inputData = getShapeWithId(fixAction.actionValues['inputDataId']); + if (inputData) { + modeler.removeShape(inputData); + } } // get a rule: