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

Add actions for Missing Input Data

parent 0f4ff52a
No related branches found
No related tags found
No related merge requests found
...@@ -11,6 +11,10 @@ import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VDmnNode; ...@@ -11,6 +11,10 @@ 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.VDmnOutputColumn;
import de.unikoblenz.fgbks.core.dmn.verification.result.VerificationResultEntry.VerificationClassification; 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.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.AbstractVerifier;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier; import de.unikoblenz.fgbks.core.dmn.verification.verifier.DmnVerifier;
import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.MissingInputDataVerification; import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.MissingInputDataVerification;
...@@ -58,11 +62,34 @@ public class MissingInputDataVerifier extends AbstractVerifier { ...@@ -58,11 +62,34 @@ public class MissingInputDataVerifier extends AbstractVerifier {
// no input data found yet -> add column to results // no input data found yet -> add column to results
vreFactory vreFactory
.addElement(VerificationResultEntryElement.create(inputColumn)) .addElement(VerificationResultEntryElement.create(inputColumn))
.addVerificationFix(SHOW_INPUT_COLUMNS) .addVerificationFix(SHOW_INPUT_COLUMNS);
.addToEntry( // Action for creating input Data
VerificationClassification.WARNING, if (inputColumn.getName().isPresent()) {
templateDecision(inputColumn.getDmnDecision()) vreFactory.addVerificationFix(
+ "Input column \"%s\" has no input data node.", VerificationFix.getBuilder()
getColumnStringName(inputColumn)); .withFixName(new Name("Add Data Input"))
.addAction(
Action.getBuilder()
.withActionType(ActionType.CREATE)
.withActionScope(ActionScope.INPUT_DATA)
.addValue("name", inputColumn.getName().get().getValue())
.build())
.build());
}
// Action for deleting column
vreFactory.addVerificationFix(
VerificationFix.getBuilder()
.withFixName(new Name("Delete Column"))
.addAction(
Action.getBuilder()
.withActionType(ActionType.DELETE)
.withActionScope(ActionScope.INPUT_COLUMN)
.build())
.build());
vreFactory.addToEntry(
VerificationClassification.WARNING,
templateDecision(inputColumn.getDmnDecision())
+ "Input column \"%s\" has no input data node.",
getColumnStringName(inputColumn));
} }
} }
...@@ -5,6 +5,10 @@ function getCurrentModeler() { ...@@ -5,6 +5,10 @@ function getCurrentModeler() {
return dmnModeler.getActiveViewer().get("modeling"); return dmnModeler.getActiveViewer().get("modeling");
} }
function getShapeWithId(id) {
return getCurrentModeler()._canvas._elementRegistry.get(id);
}
/** /**
* *
* @param {VerificationEntry} verificationEntry * @param {VerificationEntry} verificationEntry
...@@ -159,19 +163,60 @@ function performVerificationFixCREATE(verificationEntry, fixAction) { ...@@ -159,19 +163,60 @@ function performVerificationFixCREATE(verificationEntry, fixAction) {
case 'RULE': case 'RULE':
createRule(verificationEntry, fixAction); createRule(verificationEntry, fixAction);
break; break;
case 'INPUT_DATA':
createInputData(verificationEntry, fixAction);
break;
case 'INPUT_ENTRY': case 'INPUT_ENTRY':
case 'OUTPUT_ENTRY': case 'OUTPUT_ENTRY':
case 'INPUT_DATA':
case 'INPUT_COLUMN': case 'INPUT_COLUMN':
case 'OUTPUT_COLUMN': case 'OUTPUT_COLUMN':
case 'DECISION_TABLE': case 'DECISION_TABLE':
case 'DECISION': case 'DECISION':
default: default:
alert("ACTION undefined: " + fix.actions[i].actionType + ' -> ' alert("ACTION undefined: " + fixAction.actionType + ' -> '
+ fix.actions[i].actionScope); + fixAction.actionScope);
} }
} }
/**
*
* @param {VerificationEntry} verificationEntry
* @param {Action} fixAction
*/
function createRule(verificationEntry, fixAction) {
openViewWithId(verificationEntry.elements[0].identifier['decisionId']);
const modeler = getCurrentModeler();
const rule = modeler.addRow({type: "dmn:DecisionRule"});
const {cells} = rule;
for (const [key, value] of Object.entries(fixAction.actionValues)) {
let cell = getCellByColId(key, cells);
if (cell) {
modeler.editCell(getCellByColId(key, cells), value);
}
}
}
/**
*
* @param {VerificationEntry} verificationEntry
* @param {Action} fixAction
*/
function createInputData(verificationEntry, fixAction) {
// getCurrentModeler().createShape(getCurrentModeler()._elementFactory.createDrdElement('shape', {type:'dmn:InputData'}), {x:0,y:0}, dmnModeler._definitions)
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
let decision = getShapeWithId(
verificationEntry.elements[0].identifier['decisionId']);
const modeler = getCurrentModeler();
const shape = modeler._elementFactory.createDrdElement('shape',
{type: 'dmn:InputData'});
let inputData = modeler.appendShape(decision, shape,
{x: decision.x - 150, y: decision.y + 40},
getShapeWithId(verificationEntry.elements[0].identifier['definitionId']),
{attach: false, connection: {type: "dmn:InformationRequirement"}});
inputData.businessObject.name = fixAction.actionValues['name'];
openViewWithId(verificationEntry.elements[0].identifier['definitionId']);
}
/** /**
* *
* @param {VerificationEntry} verificationEntry * @param {VerificationEntry} verificationEntry
...@@ -190,26 +235,8 @@ function performVerificationFixDELETE(verificationEntry, fixAction) { ...@@ -190,26 +235,8 @@ function performVerificationFixDELETE(verificationEntry, fixAction) {
case 'DECISION_TABLE': case 'DECISION_TABLE':
case 'DECISION': case 'DECISION':
default: default:
alert("ACTION undefined: " + fix.actions[i].actionType + ' -> ' alert("ACTION undefined: " + fixAction.actionType + ' -> '
+ fix.actions[i].actionScope); + fixAction.actionScope);
}
}
/**
*
* @param {VerificationEntry} verificationEntry
* @param {Action} fixAction
*/
function createRule(verificationEntry, fixAction) {
openViewWithId(verificationEntry.elements[0].identifier['decisionId']);
const modeler = getCurrentModeler();
const rule = modeler.addRow({type: "dmn:DecisionRule"});
const {cells} = rule;
for (const [key, value] of Object.entries(fixAction.actionValues)) {
let cell = getCellByColId(key, cells);
if (cell) {
modeler.editCell(getCellByColId(key, cells), value);
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment