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

#9 Add action for subsumption rules

(delete subsumed rules only for same output)
parent b1e40bf7
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,10 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnValue;
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.ActionScope;
import de.unikoblenz.fgbks.core.dmn.verification.result.actions.ActionType;
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.SubsumptionVerification;
......@@ -53,14 +57,34 @@ public class SubsumptionVerifier extends AbstractVerifier {
// add to rules to result
boolean differentConclusions = VDmnFunctions.differentConclusions(currentRules);
currentRules.forEach(
rule ->
vreFactory.addElement(
VerificationResultEntryElement.create(inColumns.get(0).getVDmnDecisionTable())
.withIdentifier(rule.getRuleId())));
vreFactory.addVerificationFix(SHOW_RULES);
vreFactory.addToEntry(
VerificationClassification.WARNING,
getMessageText(currentRules, currentRootSubsumptionElements, differentConclusions));
rule -> vreFactory.addElement(VerificationResultEntryElement.create(rule)));
if (!differentConclusions) {
VerificationFix.Builder verificationFixBuilder =
VerificationFix.getBuilder().withFixName("Delete subsumed Rules");
Action.Builder actionBuilder =
Action.getBuilder()
.withActionScope(ActionScope.RULE)
.withActionType(ActionType.DELETE);
for (VDmnRule rule : currentRules) {
if (!currentRootSubsumptionElements.contains(rule)) {
verificationFixBuilder.addAction(
Action.getBuilder()
.withActionScope(ActionScope.RULE)
.withActionType(ActionType.DELETE)
.addIdValue(rule.getVDmnDecision().getDecisionId())
.addIdValue(rule.getRuleId())
.build());
}
}
vreFactory.addVerificationFix(verificationFixBuilder.build());
}
// Action Show
vreFactory
.addVerificationFix(SHOW_RULES)
// Add to result
.addToEntry(
VerificationClassification.WARNING,
getMessageText(currentRules, currentRootSubsumptionElements, differentConclusions));
}
} else {
// get all input values from the current column, and filter with the prev. iteration
......
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