package gov.nasa.jpl.mbee.mdk.model.actions;
import com.nomagic.magicdraw.actions.MDAction;
import com.nomagic.magicdraw.core.Application;
import com.nomagic.magicdraw.core.GUILog;
import gov.nasa.jpl.mbee.mdk.docgen.validation.Suite;
import gov.nasa.jpl.mbee.mdk.util.Utils;
import gov.nasa.jpl.mbee.mdk.model.DocGenValidationDBSwitch;
import gov.nasa.jpl.mbee.mdk.model.UserScript;
import gov.nasa.jpl.mbee.mdk.validation.ValidationSuite;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RunUserValidationScriptAction extends MDAction {
private static final long serialVersionUID = 1L;
private UserScript scripti;
public static final String DEFAULT_ID = "RunValidationScript";
public RunUserValidationScriptAction(UserScript us) {
super(null, "Run Validation Script", null, null);
scripti = us;
String name = scripti.getStereotypeName();
if (name != null) {
this.setName("Run " + name + " Validation");
}
}
public RunUserValidationScriptAction(UserScript us, boolean useid) {
super(DEFAULT_ID, "Run Validation Script", null, null);
scripti = us;
String name = scripti.getStereotypeName();
if (name != null) {
this.setName("Run " + name + " Validation");
}
}
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent event) {
GUILog log = Application.getInstance().getGUILog();
/*
* String fix = "FixNone"; List<String> fixes = new ArrayList<String>();
* fixes.add("FixSelected"); fixes.add("FixAll"); fixes.add("FixNone");
* fix = Utils.getUserDropdownSelectionForString("Choose Fix Mode",
* "Choose Fix Mode", fixes, fixes); if (fix == null) fix = "FixNone";
* Map<String, Object> inputs = new HashMap<String, Object>();
* inputs.put("FixMode", fix);
*/
Map<String, Object> inputs = new HashMap<>();
Map<?, ?> o = scripti.getScriptOutput(inputs);
if (o != null && o.containsKey("DocGenValidationOutput")) {
Object l = o.get("DocGenValidationOutput");
if (l instanceof List) {
// TODO @donbot remove Application.getProject() call
Utils.displayValidationWindow(Application.getInstance().getProject(), (List<ValidationSuite>) l, "User Validation Script Results");
}
}
else if (o != null && o.containsKey("docgenValidationOutput")) {
Object l = o.get("docgenValidationOutput");
if (l instanceof List) {
DocGenValidationDBSwitch s = new DocGenValidationDBSwitch();
List<ValidationSuite> vs = new ArrayList<ValidationSuite>();
for (Object object : (List<?>) l) {
if (object instanceof Suite) {
vs.add((ValidationSuite) s.doSwitch((Suite) object));
}
}
// TODO @donbot remove Application.getProject() call S
Utils.displayValidationWindow(Application.getInstance().getProject(), vs, "User Validation Script Results");
}
}
else {
log.log("script has no validation output!");
}
}
}