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

Merge branch 'feature/verifier-no-in-out-column' into 'develop'

Resolve "Verifier - No Input  || No Output Column -> Delete Decision"

Closes #34

See merge request jonasblatt/ma-jonasblatt-dmn-verifier!120
parents 76f66aec 76a41321
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.domain.vdmn.utils.VDmnFunctions.templateDecision;
import static de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification.WARNING;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionScope.DECISION;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionType.DELETE;
import static de.unikoblenz.fgbks.core.dmn.verification.result.actions.VerificationFix.SHOW_DECISION;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnDecision;
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.MissingColumnVerification;
@DmnVerifier(verifierType = MissingColumnVerification.class)
public class MissingColumnVerifier extends AbstractVerifier {
@Override
protected void doVerification() {
for (VDmnDecision decision : dmnObjectContainer.getVDmnDefinition().getVDmnDecisions()) {
if (decision.getVDmnDecisionTable().getVDmnInputColumns().size() == 0) {
createResult(decision, "input");
} else if (decision.getVDmnDecisionTable().getVDmnInputColumns().size() == 0) {
createResult(decision, "input");
}
}
}
private void createResult(VDmnDecision decision, String outin) {
vreFactory
.addVerificationFix(
VerificationFix.getBuilder()
.withFixName("Delete decision")
.addAction(
Action.getBuilder()
.withActionScope(DECISION)
.withActionType(DELETE)
.addIdValue(decision.getDecisionId())
.build())
.build())
.addVerificationFix(SHOW_DECISION)
.addElement(VerificationResultEntryElement.create(decision))
.addToEntry(WARNING, templateDecision(decision) + "No " + outin + " column present.");
}
}
package de.unikoblenz.fgbks.core.dmn.verification.verifier.types;
import de.unikoblenz.fgbks.base.domain.Description;
import de.unikoblenz.fgbks.base.domain.Name;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.classification.ClassificationType;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.classification.DrdModelingLevelVerification;
import javax.validation.constraints.NotNull;
@Type
public class MissingColumnVerification extends AbstractVerificationType {
private static final MissingColumnVerification instance = new MissingColumnVerification();
private MissingColumnVerification() {
super(
new Name("MissingColumnVerification"),
new Name("Missing Column"),
new Description("Detection decision which has no input column or no output column."));
}
public static MissingColumnVerification getInstance() {
return instance;
}
@Override
public @NotNull ClassificationType getClassification() {
return DrdModelingLevelVerification.getInstance();
}
}
......@@ -64,6 +64,18 @@ Detecting columns which has more than one input data (or output columns from dec
TODO
```
### Missing Column
- Type: [MissingColumnVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/types/MissingColumnVerification.java)
- Verifier: [MissingInputDataVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/MissingColumnVerifier.java)
#### Description
Detection decision which has no input columns or no output columns.
#### Algorithm
```
TODO
```
## Modeling Level Verification
- Classification: [ModelingLevelVerification](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/classification/ModelingLevelVerification.java)
......@@ -72,7 +84,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 the list of predefined values of the column.
Detecting string values which are not defined in the list of predefined values of the column.
#### Algorithm
```
......@@ -84,7 +96,7 @@ TODO
- Verifier: [PredefinedMissingValueVerifier](src/main/java/de/unikoblenz/fgbks/core/dmn/verification/verifier/impl/PredefinedMissingValueVerifier.java)
#### Description
Detecting predefined string values of a column, which itself are not used in the column.
Detecting predefined string values of a column which itself are not used in the column.
#### Algorithm
```
......
......@@ -284,9 +284,11 @@ function performVerificationFixDELETE(verificationEntry, fixAction) {
case 'INPUT_DATA':
deleteInputData(verificationEntry, fixAction);
break;
case 'DECISION':
deleteDecision(verificationEntry, fixAction);
break;
case 'INPUT_ENTRY':
case 'OUTPUT_ENTRY':
case 'DECISION':
default:
alert("ACTION undefined: " + fixAction.actionType + ' -> '
+ fixAction.actionScope);
......@@ -337,6 +339,22 @@ function deleteInputData(verificationEntry, fixAction) {
}
}
/**
*
* @param {VerificationEntry} verificationEntry
* @param {Action} fixAction
*/
function deleteDecision(verificationEntry, fixAction) {
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
let decision = getShapeWithId(
fixAction.actionValues['decisionId']);
if (decision) {
getCurrentModeler().removeShape(decision);
}
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
}
/**
*
* @param {VerificationEntry} verificationEntry
......@@ -374,7 +392,6 @@ function updateInputData(verificationEntry, fixAction) {
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
let inputData = getShapeWithId(fixAction.actionValues['inputDataId']);
if (fixAction.actionValues['decisionId']) {
const modeler = getCurrentModeler();
let decision = getShapeWithId(fixAction.actionValues['decisionId']);
getCurrentModeler().connect(inputData, decision,
{type: "dmn:InformationRequirement"})
......@@ -397,7 +414,6 @@ function updateDecision(verificationEntry, fixAction) {
if (fixAction.actionValues['targetDecisionId']) {
let targetDecision = getShapeWithId(
fixAction.actionValues['targetDecisionId']);
const modeler = getCurrentModeler();
getCurrentModeler().connect(decision, targetDecision,
{type: "dmn:InformationRequirement"})
}
......
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