package gov.nasa.jpl.mbee.mdk.docgen.actions; import com.nomagic.magicdraw.actions.MDAction; import com.nomagic.magicdraw.core.Application; import com.nomagic.magicdraw.core.Project; import com.nomagic.magicdraw.core.ProjectUtilities; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Package; import com.nomagic.uml2.ext.magicdraw.mdprofiles.Stereotype; import gov.nasa.jpl.mbee.mdk.util.Utils; import gov.nasa.jpl.mbee.mdk.validation.ValidationRule; import gov.nasa.jpl.mbee.mdk.validation.ValidationRuleViolation; import gov.nasa.jpl.mbee.mdk.validation.ValidationSuite; import gov.nasa.jpl.mbee.mdk.validation.ViolationSeverity; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; /** * validates docgen 3 doc - checks for loops, duplicate dependencies, etc * * @author dlam */ public class ValidateOldDocgen extends MDAction { private static final long serialVersionUID = 1L; public static final String DEFAULT_ID = "ValidateOldDocuments"; public ValidateOldDocgen() { super(DEFAULT_ID, "Find Old DocGen Documents", null, null); } @Override public void actionPerformed(ActionEvent e) { Project project = Application.getInstance().getProject(); ValidationSuite vs = new ValidationSuite("Old DocGen Documents"); ValidationRule vr = new ValidationRule("Old DocGen Document", "Old DocGen Document", ViolationSeverity.ERROR); vs.addValidationRule(vr); Stereotype ps = Utils.getProductStereotype(project); if (ps == null) { return; } List<Element> elements = Utils.collectOwnedElements(project.getPrimaryModel(), 0); List<Element> docs = Utils.filterElementsByStereotype(elements, ps, true, true); List<Element> projDocs = new ArrayList<>(); for (Element doc : docs) { if (!ProjectUtilities.isElementInAttachedProject(doc) && doc instanceof Package) { projDocs.add(doc); } } if (projDocs.isEmpty()) { Application.getInstance().getGUILog().log("No Old Documents Found"); return; } for (Element doc : projDocs) { ValidationRuleViolation v = new ValidationRuleViolation(doc, "[OLD] Document is old format"); v.addAction(new MigrateOldDocgen(doc)); vr.addViolation(v); } List<ValidationSuite> vss = new ArrayList<>(); vss.add(vs); Utils.displayValidationWindow(project, vss, "Old DocGen Documents"); } }