package gov.nasa.jpl.mbee.mdk.systems_reasoner.actions; import com.nomagic.magicdraw.core.Application; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Classifier; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Generalization; import gov.nasa.jpl.mbee.mdk.validation.GenericRuleViolationAction; public class SpecializeClassifierAction extends GenericRuleViolationAction { /** * */ private static final long serialVersionUID = 1L; private static final String DEFAULT_NAME = "Specialize Classifier"; private Classifier specific, general; public SpecializeClassifierAction(final Classifier specific, final Classifier general) { super(DEFAULT_NAME); this.specific = specific; this.general = general; } public static final Generalization specialize(final Classifier specific, final Classifier general) { final Generalization generalization = Application.getInstance().getProject().getElementsFactory().createGeneralizationInstance(); generalization.setSpecific(specific); generalization.setGeneral(general); generalization.setOwner(specific); // special.getGeneral().add(general); return generalization; } @Override public void run() { if (!specific.isEditable()) { Application.getInstance().getGUILog().log(specific.getQualifiedName() + " is not editable. Skipping specialization."); return; } SpecializeClassifierAction.specialize(specific, general); } @Override public String getName() { return DEFAULT_NAME; } @Override public String getSessionName() { return "specialize classifier"; } }