package gov.nasa.jpl.mbee.mdk.validation; import com.nomagic.actions.NMAction; import com.nomagic.magicdraw.annotation.Annotation; import com.nomagic.magicdraw.annotation.AnnotationAction; import com.nomagic.magicdraw.openapi.uml.SessionManager; import java.util.Collection; public abstract class GenericRuleViolationAction extends RuleViolationAction implements AnnotationAction, Runnable { private String name; /** * */ private static final long serialVersionUID = 1L; public GenericRuleViolationAction(final String name) { super(name, name, null, null); this.name = name; } public String getName() { return name; } public String getSessionName() { return name; } public String getProgressDescription() { return name; } public void actionPerformed(java.awt.event.ActionEvent e) { onStart(); run(); onStop(); } @Override public boolean canExecute(Collection<Annotation> annotations) { return true; } @Override public void execute(Collection<Annotation> annotations) { onStart(); //System.out.println("annotation size: " + annotations.size()); for (final Annotation a : annotations) { //System.out.println("Actions size: " + a.getActions().size()); for (final NMAction nma : a.getActions()) { //System.out.println("nma id: " + nma.getID()); if (nma.getID().equals(getName()) && nma instanceof Runnable) { //System.out.println("Name: " + getName()); ((Runnable) nma).run(); break; } } } onStop(); } public void onStart() { if (SessionManager.getInstance().isSessionCreated()) { SessionManager.getInstance().closeSession(); } SessionManager.getInstance().createSession(getSessionName()); //ProgressStatusRunner.runWithProgressStatus(progress, getProgressDescription(), false, 0); } public void onStop() { if (SessionManager.getInstance().isSessionCreated()) { SessionManager.getInstance().closeSession(); } } }