package gov.nasa.jpl.mbee.mdk.actions;
import com.nomagic.magicdraw.actions.MDAction;
import com.nomagic.magicdraw.core.Project;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element;
import gov.nasa.jpl.mbee.mdk.constraint.BasicConstraint.Type;
import gov.nasa.jpl.mbee.mdk.docgen.validation.ConstraintValidationRule;
import gov.nasa.jpl.mbee.mdk.ocl.OclEvaluator;
import gov.nasa.jpl.mbee.mdk.util.MDUtils;
import gov.nasa.jpl.mbee.mdk.util.Utils;
import gov.nasa.jpl.mbee.mdk.validation.ValidationSuite;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Collection;
public class ValidateConstraintsAction extends MDAction {
public static final String DEFAULT_ID = "ValidateConstraints";
public static String actionText = "Validate constraints";
private ConstraintValidationRule constraintRule = new ConstraintValidationRule();
private ValidationSuite validationUi = new ValidationSuite("Constraint Validation");
private Collection<ValidationSuite> validationOutput = new ArrayList<>();
public ValidateConstraintsAction() {
super(DEFAULT_ID, actionText, null, null);
validationUi.addValidationRule(constraintRule);
// Need Collection to use the utils.DisplayValidationWindow method
validationOutput.add(validationUi);
}
@Override
public void actionPerformed(ActionEvent e) {
Collection<Element> selectedElements = MDUtils.getSelection(e);
if (selectedElements.isEmpty()) {
return;
}
Project project = Project.getProject(selectedElements.iterator().next());
constraintRule.constraintType = Type.STATIC;
constraintRule.init(project, null);
constraintRule.run(project, null, selectedElements);
Utils.displayValidationWindow(project, validationOutput, "User Validation Script Results");
}
}