Exemplo n.º 1
0
        public void Save(PackageConnectionSettingsModel PackageConnectionSettings)
        {
            string QueryValue;

            switch (PackageConnectionSettings.Type)
            {
            case PackageConnectionSettingsType.Jql:
                QueryValue = PackageConnectionSettings.Jql;
                break;

            case PackageConnectionSettingsType.EpicsAndStories:
                QueryValue = PackageConnectionSettings.EpicsAndStoriesJql;
                break;

            case PackageConnectionSettingsType.UserSearch:
                QueryValue = PackageConnectionSettings.UserSavedSearch;
                break;

            default:
                throw new NotImplementedException();
            }

            package.Element.Stereotype = EAGoatJira.PackageStereotypeName;
            package.Element.Update();
            package.Update();
            package.Element.TaggedValues.Refresh();
            EAUtils.WriteTaggedValue(package.Element.TaggedValues, EAGoatJira.TagValueNamePackageJql, QueryValue);
            EAUtils.WriteTaggedValue(package.Element.TaggedValues, EAGoatJira.TagValueNamePackageType, PackageConnectionSettings.Type.ToString());
            package.Update();
        }
Exemplo n.º 2
0
        public EA.Package CreateEAPackage(EA.Repository Repository, string packageName, EA.Package parentPackage)
        {
            /// <summary>
            /// Create EA package from root or as sub-package
            /// <paramref name="Repository"/> Active repository
            /// <paramref name="packageName"/> Name of the new package
            /// <paramref name="parentPackage"/> Name of the parent package (root if empty)
            /// </summary>
            EA.Collection collection       = Repository.Models; // Get model collection
            EA.Package    rootPackage      = collection.GetAt(0);
            EA.Package    package          = null;
            EAUtils       activeRepository = new EAUtils(Repository);

            if (rootPackage != null)
            {
                EA.Package startPackage = rootPackage;
                if (parentPackage != null)
                {
                    // Check from the parent package
                    startPackage = parentPackage;
                }
                // Check if a package with packageName already exists
                package = activeRepository.GetPackageByName(startPackage, packageName);
                if (package != null)
                {
                    // Package exists and we start collect all elements in a dictionary for performance reasons
                    SetEAElementInPackage(package);
                }
            }

            if (rootPackage != null && package == null && parentPackage == null)
            {
                // Package does not exist and no parent package, create a new package in the root package
                package = rootPackage.Packages.AddNew(packageName, "");
                package.Update();
                package.Element.Stereotype = "model";
            }
            else if (rootPackage != null && package == null && parentPackage != null)
            {
                // Package does not exist, create a new package from the parent package
                package = parentPackage.Packages.AddNew(packageName, "");
                package.Update();
                package.Element.Stereotype = "model";
            }
            else if (package == null)
            {
                // Create a new root package
                package = collection.AddNew(packageName, "Package");
                package.Update();
            }

            return(package);
        }
Exemplo n.º 3
0
 private void importPackage(EA.Package topPackage, EAPackage rootPackage)
 {
     EA.Package package = topPackage.Packages.AddNew(defaultPackageName, "");
     package.Element.Stereotype = rootPackage.StereoType;
     package.Update();
     topPackage.Packages.Refresh();
 }
Exemplo n.º 4
0
        /// <summary>
        /// adds a package with the given Stereotype as a Subpackage to the given package
        /// </summary>
        /// <param name="package">The package, which is the parent of the newly created package</param>
        /// <param name="cStereotype">The stereotype of which the newly created package should be type of</param>
        /// <param name="name">The name of the package to add</param>
        ///
        internal EA.Package addViewPackage(EA.Package package, UMM cStereotype, String name, EA_Element diagramType)
        {
            // at first add the new package to the parent package
            EA.Package childPackage = (EA.Package)package.Packages.AddNew(name, "");
            childPackage.Update();
            childPackage = this.populateUMMView(childPackage, cStereotype);

            /* also add the child package to the package diagram contained in the parent
             * package, if wanted. if the package diagram doenst exist than create it */


            EA.Diagram packageDiagram = (EA.Diagram)childPackage.Diagrams.AddNew(childPackage.Name, diagramType.ToString());
            packageDiagram.ShowDetails = 0;
            packageDiagram.Update();


            /* now add the child package to the package diagram of the parent */
            EA.Collection    diagramObjects = packageDiagram.DiagramObjects;
            EA.DiagramObject diagramObject  = (EA.DiagramObject)diagramObjects.AddNew("l=200;r=400;t=200;b=600;", "");
            diagramObject.ElementID = childPackage.Element.ElementID;
            diagramObject.Update();

            repository.RefreshModelView(package.PackageID);
            return(childPackage);
        }
Exemplo n.º 5
0
        private void mergeDiagrams(EA.Repository repository, EA.Package package)
        {
            Dictionary <int, EA.DiagramObject> dobjects = new Dictionary <int, EA.DiagramObject>();
            Dictionary <int, EA.DiagramLink>   dlinks   = new Dictionary <int, EA.DiagramLink>();

            foreach (EA.Diagram diagram in package.Diagrams)
            {
                foreach (EA.DiagramObject dobject in diagram.DiagramObjects)
                {
                    dobjects[dobject.ElementID] = dobject;
                }
                foreach (EA.DiagramLink dlink in diagram.DiagramLinks)
                {
                    dlinks[dlink.ConnectorID] = dlink;
                }
            }

            EA.Diagram mdiagram = (EA.Diagram)package.Diagrams.AddNew(string.Format("{0} (Merged)", package.Name), "Custom");
            mdiagram.Update();

            // copy objects
            int       left    = 10;
            int       top     = 10;
            const int width   = 100;
            const int height  = 80;
            const int padding = 10;

            foreach (EA.DiagramObject dobject in dobjects.Values)
            {
                EA.Element element = repository.GetElementByID(dobject.ElementID);
                if ("Boundary".Equals(element.Type))
                {
                    continue;
                }

                string dimensions = string.Format("l={0};r={1};t={2};b={3};", left, left + width, top, top + height);
                left += padding + width;
                EA.DiagramObject mobject = (EA.DiagramObject)mdiagram.DiagramObjects.AddNew(dimensions, "");
                mobject.ElementID = element.ElementID;
                mobject.Update();

                if (left == 1000)
                {
                    left = 10;
                    top += height;
                }
            }
            mdiagram.Update();

            // copy links (o.a. NoteLinks)
            foreach (EA.DiagramLink dlink in dlinks.Values)
            {
                EA.DiagramLink mlink = (EA.DiagramLink)mdiagram.DiagramLinks.AddNew("", "");
                mlink.ConnectorID = dlink.ConnectorID;
                mlink.Update();
            }

            package.Update();
            repository.OpenDiagram(mdiagram.DiagramID);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Sets a normal EA.Package as an UMM view package. This means, that a stereotype is
        /// applied and also the taggedvalues, which every "UMM view package" inherits
        /// from "BusinessLibrary" from UMM base. Additionally a package diagram is created if
        /// the package is stereotyped as BDV, BRV or BTV
        /// </summary>
        /// <param name="package">the EA.Package which should be modified to an UMM "view package"</param>
        /// <param name="stereotype">the stereotype, which should be applied</param>
        /// <returns>a reference to the modified package</returns>
        private EA.Package populateUMMView(EA.Package package, UMM stereotype)
        {
            // set the stereotype
            package.Element.Stereotype = stereotype.ToString();
            // add the tagged values
            foreach (string tv_string in Enum.GetNames(typeof(BusinessLibraryTV)))
            {
                EA.TaggedValue tv = (EA.TaggedValue)package.Element.TaggedValues.AddNew(tv_string, "");
                tv.Update();
            }

            /* if the stereotype is BRV or BCV the package is own of the core views.
             * then for a more convinient modeling, a package diagram is added */
            if (stereotype.Equals(UMM.bRequirementsV) || stereotype.Equals(UMM.bChoreographyV))
            {
                EA.Diagram diagram = (EA.Diagram)package.Diagrams.AddNew(package.Name, EA_Element.Package.ToString());
                diagram.ShowDetails = 0;
                diagram.Update();
            }
            //For the BIV we add a class diagram
            else if (stereotype.Equals(UMM.bInformationV))
            {
                EA.Diagram diagram = (EA.Diagram)package.Diagrams.AddNew(package.Name, EA_Element.Class.ToString());
                diagram.ShowDetails = 0;
                diagram.Update();
            }

            package.Update();
            return(package);
        }
Exemplo n.º 7
0
 public override void doEaGuiStuff()
 {
     base.doEaGuiStuff();
     EA.Package newTGGProject = EAUtil.sqlEAObjectToOriginalObject(Repository, this.EaPackage) as EA.Package;
     newTGGProject.Element.StereotypeEx = TGGModelingMain.TggSchemaPackageStereotype;
     newTGGProject.Update();
     newTGGProject.Element.Update();
 }
        public static void syncPopulation(EA.Repository Repository, EA.Diagram diagram, DiagramCache diagramCache)
        {
            logger.log("Sync Population");
            RepositoryHelper.createDiagramCache(Repository, diagram, diagramCache);
            IList <EA.Element> diagramElements = diagramCache.elementsList;

            //IList<EA.Element> samples = MetaDataManager.diagramSamples(Repository, diagramElements);
            IList <EA.Element> samples = diagramElements;

            EA.Element container = container = MetaDataManager.findContainer(Repository, diagram, diagramCache, RoundTripAddInClass.EA_STEREOTYPE_POPULATION);

            logger.log("Classifier ID:" + container.ClassifierID);


            string containerName       = container.Name;
            string containerClassifier = "Classes";

            EA.Element containerClassifierEl = null;
            if (container.ClassifierID != 0)
            {
                containerClassifierEl = Repository.GetElementByID(container.ClassfierID);
                containerName         = container.Name;
                containerClassifier   = containerClassifierEl.Name;
            }

            EA.Package samplePkg = Repository.GetPackageByID(diagram.PackageID);

            Hashtable ht = new Hashtable();

            MetaDataManager.extractDiagramMetaData(ht, container);

            string project = (String)ht[RoundTripAddInClass.PROJECT];

            if (project == null)
            {
                MessageBox.Show("No project defined in the Population stereotyped element. Please enter project name where population should be exported.");
                return;
            }

            if (fileManager != null)
            {
                fileManager.initializeAPI(project);
                fileManager.setDataName(RoundTripAddInClass.POPULATION_PATH);
                fileManager.setup(RoundTripAddInClass.RAML_0_8);
                if (!fileManager.populationExists(container.Name, containerClassifier, RoundTripAddInClass.POPULATION_PATH, container.Name))
                {
                    MessageBox.Show("No file exists at:" + fileManager.exportPath(container.Name, containerClassifier, RoundTripAddInClass.POPULATION_PATH, container.Name));
                    return;
                }
                else
                {
                    string fullpath = fileManager.exportPath(containerName, containerClassifier, RoundTripAddInClass.POPULATION_PATH, container.Name);
                    JArray jo       = JArray.Parse(File.ReadAllText(fullpath));
                    sync_population(Repository, container, containerClassifierEl, jo, samplePkg, diagramCache);
                    samplePkg.Update();
                }
            }
        }
Exemplo n.º 9
0
        public EA.Element CreateEAElement(Item innovatorItem, EA.Package classPackage)
        {
            /// <summary>
            /// <paramref name="innovatorItem"/> Innovator Item (ItemType)
            /// <paramref name="classPackage"/> EA Package (Innovator/ItemTypes or Innovator/RelationshipTypes)
            /// </summary>
            string itemID = innovatorItem.getID();

            EA.Element returnElement = GetEAElementByInnovatorID(itemID);
            if (returnElement == null)
            {
                // Dictionary may be empty, so we need to check by using the package
                // Unfortunately this check is much slower
                returnElement = GetEAElementInPackage(innovatorItem, classPackage);
            }
            if (returnElement == null)
            {
                DateTime createdOn           = Tools.GetDate(innovatorItem.getProperty("created_on", ""));
                string   innovatorModifiedOn = innovatorItem.getProperty("modified_on", "");
                // In rare cases the modified_on date is empty
                DateTime modifiedOn = DateTime.Parse("1900-01-01", CultureInfo.InvariantCulture);
                if (innovatorModifiedOn != "")
                {
                    modifiedOn = Tools.GetDate(innovatorItem.getProperty("modified_on", ""));
                }

                string implementationType = innovatorItem.getProperty("implementation_type");
                switch (implementationType)
                {
                case "table":  // TODO: polymorphic, federated need to be implemented
                case null:     // relationship type
                    EA.Element classElement = classPackage.Elements.AddNew(innovatorItem.getProperty("name"), "Table");
                    classElement.Alias   = innovatorItem.getProperty("label");
                    classElement.Notes   = innovatorItem.getProperty("description", "");
                    classElement.Created = createdOn;
                    if (modifiedOn > createdOn)
                    {
                        classElement.Modified = modifiedOn;
                    }
                    classElement.Version = innovatorItem.getProperty("generation", "");
                    classElement.Tag     = "[PLM]" + itemID;
                    classElement.Update();
                    classPackage.Update();
                    returnElement = classElement;
                    break;

                default:
                    break;
                }
            }
            if (!elementDictionary.ContainsKey(itemID))
            {
                elementDictionary.Add(itemID, returnElement);
            }
            return(returnElement);
        }
Exemplo n.º 10
0
 public override void doEaGuiStuff()
 {
     base.doEaGuiStuff();
     EA.Package realPackage = EaPackage.getRealPackage();
     if (realPackage.Element.Stereotype != TGGModelingMain.TggRulePackageStereotype)
     {
         realPackage.Element.StereotypeEx = TGGModelingMain.TggRulePackageStereotype;
         realPackage.Update();
     }
 }
Exemplo n.º 11
0
 public override void doEaGuiStuff()
 {
     EA.Package realPackage = EaPackage.getRealPackage();
     if (realPackage.Element.Stereotype != ECOREModelingMain.EPackageStereotype)
     {
         realPackage.Element.StereotypeEx = ECOREModelingMain.EPackageStereotype;
         realPackage.Update();
     }
     updateToStandardTaggedValues();
 }
        /// <summary>
        /// Delete undefined Reference (former ExternalReference).The element subtype is "1001". It searches for
        /// </summary>
        /// <returns></returns>
        /// Search for External references
        /// Select ea_guid As CLASSGUID, object_type As CLASSTYPE,ea_GUID As el_guid, name As el_name, * from t_object o where NType=1001
        private static void DeleteUndefinedReference(EA.Repository repository, EA.Element el, Boolean dialog = true, Boolean completePackage = false)
        {
            //if (el.Type.Equals("Boundary"))
            if (el.Subtype == 1001 && completePackage == false)
            {
                EA.Package pkg = repository.GetPackageByID(el.PackageID);

                // Not version controlled, checked out to this user
                int versionControlState = pkg.VersionControlGetStatus();
                if (versionControlState == 0 || versionControlState == 2)
                {
                    // delete External Reference
                    for (short idx = (short)(pkg.Elements.Count - 1); idx >= 0; idx--)
                    {
                        if ((el.ElementID == ((EA.Element)pkg.Elements.GetAt(idx)).ElementID) || (completePackage && el.Subtype == 1001))
                        {
                            // with or without dialog
                            try
                            {
                                if (dialog)
                                {
                                    DialogResult res = MessageBox.Show("Delete element '" + el.Name + "'", "Delete element", MessageBoxButtons.YesNo);
                                    if (res == DialogResult.Yes)
                                    {
                                        pkg.Elements.DeleteAt(idx, false);
                                        if (completePackage == false)
                                        {
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    pkg.Elements.DeleteAt(idx, false);
                                    if (completePackage == false)
                                    {
                                        break;
                                    }
                                }
                            }
                            catch { }
                        }
                    }
                    pkg.Update();
                }
                else
                {
                    string s = String.Format("Delete element '{0}' Version control state={1} not possible!", el.Name, versionControlState);
                    MessageBox.Show(s, "Package can't be changed, checked in?, break;");
                }
            }

            return;
        }
Exemplo n.º 13
0
 public void TestInit()
 {
     Repos = new EA.Repository();
     Repos.OpenFile(PROJECT_PATH + "MAX-TestCases.eap");
     // clean temp packages
     EA.Package tempPackage = Repos.GetPackageByGuid(GUID_TEMP_PACKAGE);
     for (short p = 0; p < tempPackage.Packages.Count; p++)
     {
         tempPackage.Packages.Delete(p);
     }
     tempPackage.Update();
 }
        private bool Update(EA.Package pkg)
        {
            bool result = pkg.Update();

            pkg.Packages.Refresh();
            pkg.Elements.Refresh();

            if (result == false)
            {
                throw new Exception("Update Didn't work out properlly!!!");
            }
            return(result);
        }
Exemplo n.º 15
0
 public void TestMinimalImports()
 {
     EA.Package selectedPackage = (EA.Package)Repos.GetPackageByGuid(GUID_TEMP_PACKAGE).Packages.AddNew(Guid.NewGuid().ToString(), "Package");
     selectedPackage.Update();
     new MAXImporter3().import(Repos, selectedPackage, PROJECT_PATH + @"TestCases\minimal-nothing.max.xml");
     Assert.IsTrue(selectedPackage.Elements.Count == 0 && selectedPackage.Packages.Count == 0);
     new MAXImporter3().import(Repos, selectedPackage, PROJECT_PATH + @"TestCases\minimal-both-empty.max.xml");
     Assert.IsTrue(selectedPackage.Elements.Count == 0 && selectedPackage.Packages.Count == 0);
     new MAXImporter3().import(Repos, selectedPackage, PROJECT_PATH + @"TestCases\minimal-objects.max.xml");
     Assert.IsTrue(selectedPackage.Elements.Count == 0 && selectedPackage.Packages.Count == 0);
     new MAXImporter3().import(Repos, selectedPackage, PROJECT_PATH + @"TestCases\minimal-relationships.max.xml");
     Assert.IsTrue(selectedPackage.Elements.Count == 0 && selectedPackage.Packages.Count == 0);
 }
Exemplo n.º 16
0
        /// <summary>
        /// This method copies an element (for instance a class) into a target package
        /// note : the EA SDK does not provide a simple way to clone an element. It only
        /// provides a way to clone a package in the same parent package. We use this capabilities
        /// to clone an element from one package to another
        /// </summary>
        /// <param name="repository">The current repository</param>
        /// <param name="sourceElement">An element to copy</param>
        /// <param name="targetPackage">The target package</param>
        /// <returns>The newly-created element or null of the copy fails</returns>
        public static EA.Element copyElement(EA.Repository repository, EA.Element sourceElement, EA.Package targetPackage)
        {
            // we get the parent package of the source element
            EA.Package sourcePackage = repository.GetPackageByID(sourceElement.PackageID);

            // create an temporary package into the parent package
            EA.Package tmpPackage = sourcePackage.Packages.AddNew("tmp", "");
            if (!(tmpPackage.Update()))
            {
                return(null);
            }
            sourcePackage.Packages.Refresh();

            // move the source element into the temporary package
            sourceElement.PackageID = tmpPackage.PackageID;
            sourceElement.Update();
            sourcePackage.Elements.Refresh();
            tmpPackage.Elements.Refresh();

            // clone the temporary package
            EA.Package clonePackage = tmpPackage.Clone();
            clonePackage.Update();
            sourcePackage.Packages.Refresh();

            // move back the source element into it original parent package
            sourceElement.PackageID = sourcePackage.PackageID;
            sourceElement.Update();
            tmpPackage.Elements.Refresh();
            sourcePackage.Elements.Refresh();

            // getting the copy of the source element
            EA.Element targetElement = clonePackage.Elements.GetByName(sourceElement.Name);

            // move the copy into the targetPackage
            targetElement.PackageID = targetPackage.PackageID;
            targetElement.Update();
            clonePackage.Elements.Refresh();
            targetPackage.Elements.Refresh();

            // delete the temporary packages
            short tmpPackageIndex   = getIndex(sourcePackage, tmpPackage);
            short clonePackageIndex = getIndex(sourcePackage, clonePackage);

            sourcePackage.Packages.Delete(tmpPackageIndex);
            sourcePackage.Packages.Refresh();
            sourcePackage.Packages.Delete(clonePackageIndex);
            sourcePackage.Packages.Refresh();
            repository.RefreshModelView(sourcePackage.PackageID);

            return(targetElement);
        }
Exemplo n.º 17
0
        private void addPackageOrClass(EA.Package parentPackage, XmlNode xmlNode)
        {
            EA.Package p = parentPackage.Packages.AddNew(xmlNode.Attributes.GetNamedItem("name").Value, "Package");
            p.Update();
            eaIdPackageIdMap[xmlNode.Attributes.GetNamedItem("xmi:id").Value] = p.PackageID;
            PackageId2EAId[p.PackageID] = xmlNode.Attributes.GetNamedItem("xmi:id").Value;
            foreach (XmlNode childrenNode in xmlNode.ChildNodes)
            {
                string type = childrenNode.Attributes.GetNamedItem("xmi:type").Value;
                switch (type)
                {
                case "uml:Class":
                    this.addClass(p, childrenNode);
                    break;

                case "uml:Package":
                    this.addPackageOrClass(p, childrenNode);
                    break;

                default: break;
                }
            }
            foreach (XmlNode childrenNode in xmlNode.ChildNodes)
            {
                string type = childrenNode.Attributes.GetNamedItem("xmi:type").Value;
                switch (type)
                {
                case "uml:Association":
                    this.addAssociation(p, childrenNode);
                    break;

                case "uml:Dependency":
                    this.addDependency(p, childrenNode);
                    break;

                case "uml:Realisation":
                    this.addRealisation(p, childrenNode);
                    break;

                case "uml:Realization":
                    this.addRealisation(p, childrenNode);
                    break;

                case "uml:InformationFlow":
                    this.addInformationFlow(p, childrenNode);
                    break;

                default: break;
                }
            }
        }
Exemplo n.º 18
0
        public EA.Package getOrCreatePackage(SQLPackage rootPackage, MocaNode packageNode)
        {
            String oldGuid = packageNode.getAttributeOrCreate(Main.GuidStringName).Value;

            EA.Package modelPackage = repository.GetPackageByGuid(oldGuid);
            if (modelPackage != null)
            {
                DeleteWithGuid(rootPackage, oldGuid);
                EA.Package parent = repository.GetPackageByID(modelPackage.ParentID);
                DeleteWithGuid(parent, oldGuid);
            }

            EA.Package rootPackageOriginal = rootPackage.getRealPackage();
            String     packageName         = packageNode.getAttributeOrCreate(MetamodelHelper.MoflonCustomNameTaggedValueName).Value;

            if (packageName == "")
            {
                packageName = packageNode.getAttributeOrCreate("name").Value;
            }

            modelPackage = rootPackageOriginal.Packages.AddNew(packageName, "") as EA.Package;
            if (rootPackageOriginal.ParentID == 0)
            {
                modelPackage.Flags = "isModel=1;VICON=3;";
            }
            modelPackage.Update();

            // import nsUri
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonCustomNsUriTaggedValueName, packageNode, modelPackage);

            // import export
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonExportTaggedValueName, packageNode, modelPackage);

            // import pluginID
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonCustomPluginIDTaggedValueName, packageNode, modelPackage);

            // import prefix
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonCustomNsPrefixTaggedValueName, packageNode, modelPackage);

            // import validated
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonValidatedTaggedValueName, packageNode, modelPackage);

            // import name
            setTagValueIfPossibleForPackage(MetamodelHelper.MoflonCustomNameTaggedValueName, packageNode, modelPackage);

            repository.Execute("update t_package set ea_guid = '" + oldGuid + "' where ea_guid = '" + modelPackage.PackageGUID + "'");
            repository.Execute("update t_object set ea_guid = '" + oldGuid + "' where ea_guid = '" + modelPackage.PackageGUID + "'");
            modelPackage = repository.GetPackageByGuid(oldGuid);

            return(modelPackage);
        }
Exemplo n.º 19
0
        public static void SynchronizePackageWithJIRA(EA.Repository Repository, EA.Package Package, PackageConnectionSettingsViewModel PackageConnectionSettings, JiraConnection JiraConnection)
        {
            //Steps:
            //      1. User must be able to login to JIRA -- must ensure caller
            //      2. Creating Repository.Output -- well... am thinking about event, JTS so far
            //      3. Get the proper JQL -- i will get from parameter
            //      4. Do to job

            Repository.CreateOutputTab(EAGoatJira.JiraOutputWindowName);
            Repository.EnsureOutputVisible(EAGoatJira.JiraOutputWindowName);
            Repository.ClearOutput(EAGoatJira.JiraOutputWindowName);
            Repository.WriteOutput(EAGoatJira.JiraOutputWindowName, "Reading data...", 0);

            PackageConnectionSettings.Refresh();

            Dictionary <string, EA.Element> IssuesInEA = ReadIssuesFromEA(Repository, Package.Elements);

            var issues = JiraConnection.GetJiraIssues(PackageConnectionSettings.Jql);

            foreach (var issue in issues)
            {
                EA.Element EAElementForIssue = SynchronizeItem(issue, Repository, Package, null, IssuesInEA);

                if (PackageConnectionSettings.PackageConnectionSettings.Type == PackageConnectionSettingsType.EpicsAndStories)
                {
                    var epicissues = JiraConnection.GetJiraIssues($"\"Epic Link\" = {issue.Key}");
                    foreach (var epicissue in epicissues)
                    {
                        SynchronizeItem(epicissue, Repository, Package, EAElementForIssue, IssuesInEA);
                    }
                }
                EAElementForIssue.Update();
            }

            if (IssuesInEA.Count > 0)
            { //some issues that are in the Package are not in the issues (they were deleted or moved or the Jql has chaned)
                EA.Package PackageForRemovedIssues = EAUtils.CreatePackage(Package, "Removed Issues", ForceCreation: false);
                foreach (var removedItem in IssuesInEA)
                {
                    Repository.WriteOutput(EAGoatJira.JiraOutputWindowName, $"Removing issue {removedItem.Key}", removedItem.Value.ElementID);
                    removedItem.Value.PackageID = PackageForRemovedIssues.PackageID;
                    removedItem.Value.Update();
                    EAUtils.WriteTaggedValue(removedItem.Value, EAGoatJira.TagValueNameOperation, "Issue was " + IssueOperation.Removed.ToString() + ".", WriteValueToNotes: false);
                }
                PackageForRemovedIssues.Update();
            }

            Package.Update();
            Repository.WriteOutput(EAGoatJira.JiraOutputWindowName, $"Done.", 0);
        }
Exemplo n.º 20
0
        private void setTagValueIfPossibleForPackage(String tagNameInNode, MocaNode node, EA.Package eaPack)
        {
            MocaAttribute attribute = node.getAttribute(tagNameInNode);

            if (attribute != null)
            {
                EAEcoreAddin.Util.EAUtil.setTaggedValue(sqlRep, eaPack, tagNameInNode, attribute.Value);
            }
            else
            {
                EAEcoreAddin.Util.EAUtil.deleteTaggedValue(eaPack.Element, tagNameInNode);
            }
            eaPack.Update();
        }
Exemplo n.º 21
0
        ///
        /// Validate all object run state keys correspond to classifier attributes
        ///
        //static public void validateDiagram(EA.Repository Repository,EA.Diagram diagram)
        //{
        //    IList<string> messages = diagramValidation(Repository,diagram);

        //    logger.log("**ValidationResults**");
        //    if(messages!=null)
        //    {
        //        foreach (string m in messages)
        //        {
        //            logger.log(m);
        //        }
        //    }
        //}

        //static public IList<string> diagramValidation(EA.Repository Repository, EA.Diagram diagram,IList<EA.Element> diagramElements)
        //{
        //    JSchema jschema = null;
        //    JObject json = null;
        //    try
        //    {
        //        //logger.log("Validate Sample");
        //        json = (JObject)sampleToJObject(Repository, diagram, diagramElements)["json"];

        //        //logger.log("JObject formed");

        //        EA.Package samplePkg = Repository.GetPackageByID(diagram.PackageID);
        //        EA.Package samplesPackage = Repository.GetPackageByID(samplePkg.ParentID);
        //        EA.Package apiPackage = Repository.GetPackageByID(samplesPackage.ParentID);

        //        EA.Package schemaPackage = null;

        //        foreach (EA.Package p in apiPackage.Packages)
        //        {
        //            if (p!=null && p.Name.Equals(RoundTripAddInClass.API_PACKAGE_SCHEMAS))
        //            {
        //                schemaPackage = p;
        //            }
        //        }
        //        if (schemaPackage == null)
        //        {
        //            throw new Exception("No Schema package found");
        //        }

        //        EA.Diagram schemaDiagram = null;
        //        foreach (EA.Diagram d in schemaPackage.Diagrams)
        //        {
        //            if (d.Stereotype != null && d.Stereotype.Equals(RoundTripAddInClass.EA_STEREOTYPE_SCHEMADIAGRAM))
        //            {
        //                schemaDiagram = d;
        //            }
        //        }



        //        jschema = SchemaManager.schemaToJsonSchema(Repository, schemaDiagram,diagramElements).Value;
        //    }
        //    catch (ModelValidationException ex)
        //    {
        //        return ex.errors.messages;
        //    }

        //    IList<string> messages;

        //    if (!json.IsValid(jschema, out messages))
        //    {
        //        logger.log("Sample is not valid:");
        //        return messages;
        //    }
        //    else{
        //        logger.log("Sample is Valid!");
        //        return null;
        //    }

        //}


        public static void syncHierarchy(EA.Repository Repository, EA.Diagram diagram, DiagramCache diagramCache)
        {
            logger.log("Sync Hierarchy");

            RepositoryHelper.createDiagramCache(Repository, diagram, diagramCache);
            //IList<EA.Element> diagramElements = diagramCache.elementsList;

            IList <EA.Element> samples = MetaDataManager.diagramSamples(Repository, diagramCache.elementsList);

            EA.Element container             = container = MetaDataManager.findContainer(Repository, diagram, diagramCache, RoundTripAddInClass.EA_STEREOTYPE_HIERARCHY);
            EA.Element containerClassifierEl = diagramCache.elementIDHash[container.ClassfierID];
            string     containerName         = container.Name;
            string     containerClassifier   = containerClassifierEl.Name;

            Hashtable ht = new Hashtable();

            MetaDataManager.extractDiagramMetaData(ht, container);

            EA.Package samplePkg = Repository.GetPackageByID(diagram.PackageID);

            string sourcecontrolPackage = (string)ht[RoundTripAddInClass.PROJECT];


            if (fileManager != null)
            {
                fileManager.initializeAPI(sourcecontrolPackage);
                fileManager.setDataName(RoundTripAddInClass.HIERARCHY_PATH);
                fileManager.setup(RoundTripAddInClass.RAML_0_8);
                if (!fileManager.populationExists(container.Name, containerClassifier, RoundTripAddInClass.HIERARCHY_PATH, container.Name))
                {
                    MessageBox.Show("No file exists at:" + fileManager.exportPath(container.Name, containerClassifier, RoundTripAddInClass.HIERARCHY_PATH, container.Name));
                    return;
                }
                else
                {
                    string fullpath = fileManager.exportPath(containerName, containerClassifier, RoundTripAddInClass.HIERARCHY_PATH, container.Name);
                    JArray jo       = JArray.Parse(File.ReadAllText(fullpath));
                    sync_hierarchy(Repository, diagram, container, jo, samplePkg, diagramCache);
                    samplePkg.Update();
                    diagram.DiagramLinks.Refresh();
                    if (!diagram.Update())
                    {
                        logger.log(diagram.GetLastError());
                    }
                }
            }
        }
Exemplo n.º 22
0
        private void TestRoundtrip(string guidPackageToTest)
        {
            // Export TestCase
            string       fileNameExport1 = TEMP_PATH + "max-export1.xml";
            MAXExporter3 exporter1       = new MAXExporter3();

            exporter1.exportPackage(Repos, Repos.GetPackageByGuid(guidPackageToTest), fileNameExport1);

            EA.Package selectedPackage = (EA.Package)Repos.GetPackageByGuid(GUID_TEMP_PACKAGE).Packages.AddNew(Guid.NewGuid().ToString(), "Package");
            selectedPackage.Update();
            string       guidExport2 = selectedPackage.PackageGUID;
            MAXImporter3 importer    = new MAXImporter3();

            importer.import(Repos, selectedPackage, fileNameExport1);
            selectedPackage.Packages.Refresh();

            // Export Imported TestCase
            string       guidImport2     = ((EA.Package)selectedPackage.Packages.GetAt(0)).PackageGUID;
            string       fileNameExport2 = TEMP_PATH + "max-export2.xml";
            MAXExporter3 exporter2       = new MAXExporter3();

            exporter2.exportPackage(Repos, Repos.GetPackageByGuid(guidImport2), fileNameExport2);

            // compare export1 with export2
            // IGNORE @exportDate & <modified> elements. We know those will be different.
            XElement export1 = XElement.Load(fileNameExport1);

            export1.Attribute("exportDate").Remove();
            foreach (XElement mod in export1.XPathSelectElements("//object/modified"))
            {
                mod.Remove();
            }
            export1.Save(fileNameExport1);

            XElement export2 = XElement.Load(fileNameExport2);

            export2.Attribute("exportDate").Remove();
            foreach (XElement mod in export2.XPathSelectElements("//object/modified"))
            {
                mod.Remove();
            }
            export2.Save(fileNameExport2);

            Assert.AreEqual(export1.ToString(), export2.ToString());

            // delete tempPackage & temp files
        }
Exemplo n.º 23
0
        /// <summary>
        /// Creates new package in ParentPackage. If ForceCreation is false and package with the same Name exists, this package is returned insted of creation of a new one.
        /// </summary>
        /// <param name="ParentPackage">Parent package where the new package should be created.</param>
        /// <param name="Name">Name of a new package.</param>
        /// <param name="ForceCreation">If true, new package is always created.
        /// If false and package with the same Name in ParentPackage already exists, this package is returned insted of creation of a new one.</param>
        /// <returns>Required package</returns>
        public static EA.Package CreatePackage(EA.Package ParentPackage, string Name, bool ForceCreation)
        {
            if (!ForceCreation)
            {
                foreach (EA.Package Subpackage in ParentPackage.Packages)
                {
                    if (Subpackage.Name == Name)
                    {
                        return(Subpackage);
                    }
                }
            }

            EA.Package result = ParentPackage.Packages.AddNew(Name, "Package");
            result.Update();
            ParentPackage.Packages.Refresh();
            return(result);
        }
        private void okButton_Click(object sender, EventArgs e)
        {
            if (this.selectedSourceMetamodel != null && this.selectedTargetMetamodel != null)
            {
                //create rule package
                if (newTGGProject.Packages.Count == 0)
                {
                    EA.Package rulesPackage = newTGGProject.getRealPackage().Packages.AddNew("Rules", TGGModelingMain.TggRulePackageStereotype) as EA.Package;
                    rulesPackage.Update();
                    TGGRulePackage rPackage = new TGGRulePackage(repository.GetPackageByID(rulesPackage.PackageID), repository);
                    rPackage.saveTreeToEATaggedValue(true);

                    EA.Diagram rulesDiagram = rulesPackage.Diagrams.AddNew("Rules", TGGModelingMain.TggRulesDiagramMetatype[0]) as EA.Diagram;
                    rulesDiagram.Update();
                    newTGGProject.Packages.Refresh();
                }

                Metamodel sourceMetamodel         = new Metamodel(repository, this.selectedSourceMetamodel);
                Metamodel targetMetamodel         = new Metamodel(repository, this.selectedTargetMetamodel);
                Metamodel correspondenceMetamodel = new Metamodel(repository, repository.GetPackageByID(newTGGProject.PackageID));

                Domain sourceDomain         = new Domain(sourceMetamodel, DomainType.SOURCE);
                Domain targetDomain         = new Domain(targetMetamodel, DomainType.TARGET);
                Domain correspondenceDomain = new Domain(correspondenceMetamodel, DomainType.CORRESPONDENCE);

                tgg.Metamodels.Clear();
                tgg.Domains.Clear();

                tgg.Metamodels.Add(sourceMetamodel);
                tgg.Metamodels.Add(targetMetamodel);
                tgg.Metamodels.Add(correspondenceMetamodel);

                tgg.Domains.Add(sourceDomain);
                tgg.Domains.Add(targetDomain);
                tgg.Domains.Add(correspondenceDomain);

                tgg.EaPackage.getRealPackage().Name = textBoxName.Text;

                tgg.saveTreeToEATaggedValue(true);
                Close();
            }
        }
 public override void save(EA.Repository rep, FindAndReplaceItem.FieldType fieldType)
 {
     _pkg = rep.GetPackageByGuid(GUID);
     if ((fieldType & FindAndReplaceItem.FieldType.Description) > 0)
     { _pkg.Notes = _Description; }
     if ((fieldType & (FindAndReplaceItem.FieldType.Name | FindAndReplaceItem.FieldType.Stereotype) ) > 0)
     {
         // model don't have an element
         if (_pkg.ParentID != 0)
         {
             EA.Element el = rep.GetElementByGuid(GUID);
             el.StereotypeEx = _Stereotype;
             el.Name = _Name;
             el.Update();
         }
         _pkg.Name = _Name;
     }
     _isUpdated = true;
     _pkg.Update();
 }
Exemplo n.º 26
0
        ///
        /// Validate all object run state keys correspond to classifier attributes
        ///
        //static public void validateDiagram(EA.Repository Repository, EA.Diagram diagram)
        //{
        //    IList<string> messages = diagramValidation(Repository, diagram);

        //    logger.log("**ValidationResults**");
        //    if (messages != null)
        //    {
        //        foreach (string m in messages)
        //        {
        //            logger.log(m);
        //        }
        //    }
        //}

        //static public IList<string> diagramValidation(EA.Repository Repository, EA.Diagram diagram)
        //{
        //    JSchema jschema = null;
        //    JObject json = null;
        //    try
        //    {
        //        //logger.log("Validate Sample");
        //        json = (JObject)sampleToJObject(Repository, diagram)["json"];

        //        //logger.log("JObject formed");

        //        EA.Package samplePkg = Repository.GetPackageByID(diagram.PackageID);
        //        EA.Package samplesPackage = Repository.GetPackageByID(samplePkg.ParentID);
        //        EA.Package apiPackage = Repository.GetPackageByID(samplesPackage.ParentID);

        //        EA.Package schemaPackage = null;

        //        foreach (EA.Package p in apiPackage.Packages)
        //        {
        //            if (p != null && p.Name.Equals(RoundTripAddInClass.API_PACKAGE_SCHEMAS))
        //            {
        //                schemaPackage = p;
        //            }
        //        }
        //        if (schemaPackage == null)
        //        {
        //            throw new Exception("No Schema package found");
        //        }

        //        EA.Diagram schemaDiagram = null;
        //        foreach (EA.Diagram d in schemaPackage.Diagrams)
        //        {
        //            if (d.Stereotype != null && d.Stereotype.Equals(RoundTripAddInClass.EA_STEREOTYPE_SCHEMADIAGRAM))
        //            {
        //                schemaDiagram = d;
        //            }
        //        }



        //        jschema = SchemaManager.schemaToJsonSchema(Repository, schemaDiagram).Value;
        //    }
        //    catch (ModelValidationException ex)
        //    {
        //        return ex.errors.messages;
        //    }

        //    IList<string> messages;

        //    if (!json.IsValid(jschema, out messages))
        //    {
        //        logger.log("Sample is not valid:");
        //        return messages;
        //    }
        //    else
        //    {
        //        logger.log("Sample is Valid!");
        //        return null;
        //    }

        //}


        public static void syncMapping(EA.Repository Repository, EA.Diagram diagram, DiagramCache diagramCache)
        {
            logger.log("Sync Mapping");
            RepositoryHelper.createDiagramCache(Repository, diagram, diagramCache);
            IList <EA.Element> diagramElements = diagramCache.elementsList;
            IList <EA.Element> samples         = MetaDataManager.diagramSamples(Repository, diagramElements);

            EA.Element container             = container = MetaDataManager.findContainer(Repository, diagram, diagramCache, RoundTripAddInClass.EA_STEREOTYPE_MAPPING);
            EA.Element containerClassifierEl = diagramCache.elementIDHash[container.ClassfierID];
            string     containerName         = container.Name;
            string     containerClassifier   = containerClassifierEl.Name;

            EA.Package samplePkg = Repository.GetPackageByID(diagram.PackageID);


            Hashtable ht = new Hashtable();

            MetaDataManager.extractDiagramMetaData(ht, container);

            string project = (String)ht[RoundTripAddInClass.PROJECT];


            if (fileManager != null)
            {
                fileManager.initializeAPI(project);
                fileManager.setDataName(RoundTripAddInClass.MAPPING_PATH);
                fileManager.setup(RoundTripAddInClass.RAML_0_8);
                if (!fileManager.populationExists(container.Name, containerClassifier, RoundTripAddInClass.MAPPING_PATH, container.Name))
                {
                    MessageBox.Show("No file exists at:" + fileManager.exportPath(container.Name, containerClassifier, RoundTripAddInClass.MAPPING_PATH, container.Name));
                    return;
                }
                else
                {
                    string fullpath = fileManager.exportPath(containerName, containerClassifier, RoundTripAddInClass.MAPPING_PATH, container.Name);
                    JArray jo       = JArray.Parse(File.ReadAllText(fullpath));
                    sync_mapping(Repository, diagram, container, containerClassifierEl, jo, samplePkg, diagramCache);
                    samplePkg.Update();
                }
            }
        }
 public override void save(EA.Repository rep, FindAndReplaceItem.FieldType fieldType)
 {
     _pkg = rep.GetPackageByGuid(GUID);
     if ((fieldType & FindAndReplaceItem.FieldType.Description) > 0)
     {
         _pkg.Notes = _Description;
     }
     if ((fieldType & (FindAndReplaceItem.FieldType.Name | FindAndReplaceItem.FieldType.Stereotype)) > 0)
     {
         // model don't have an element
         if (_pkg.ParentID != 0)
         {
             EA.Element el = rep.GetElementByGuid(GUID);
             el.StereotypeEx = _Stereotype;
             el.Name         = _Name;
             el.Update();
         }
         _pkg.Name = _Name;
     }
     _isUpdated = true;
     _pkg.Update();
 }
 public override void Save(EA.Repository rep, FindAndReplaceItem.FieldType fieldType)
 {
     _pkg = rep.GetPackageByGuid(Guid);
     if ((fieldType & FindAndReplaceItem.FieldType.Description) > 0)
     {
         _pkg.Notes = Description;
     }
     if ((fieldType & (FindAndReplaceItem.FieldType.Name | FindAndReplaceItem.FieldType.Stereotype)) > 0)
     {
         // package has an object
         if (_pkg.ParentID != 0)
         {
             EA.Element el = rep.GetElementByGuid(Guid);
             el.StereotypeEx = Stereotype;
             el.Name         = Name;
             el.Update();
         }
         _pkg.Name = Name;
     }
     IsUpdated = true;
     _pkg.Update();
 }
Exemplo n.º 29
0
        public EA.Package findOrCreateRoot(MocaNode ePackageNode)
        {
            EA.Package rootPackage    = null;
            String     workingSetName = ePackageNode.getAttributeOrCreate(MetamodelHelper.MoflonWorkingSetTaggedValueName).Value;

            if (workingSetName == "")
            {
                if (repository.Models.Count > 0)
                {
                    rootPackage = repository.Models.GetAt(0) as EA.Package;
                }
            }
            else
            {
                foreach (EA.Package root in repository.Models)
                {
                    if (root.Name == workingSetName)
                    {
                        rootPackage = root;
                    }
                }
            }

            if (rootPackage == null)
            {
                String rootName = workingSetName;
                if (rootName == "")
                {
                    rootName = "My Working Set";
                }
                rootPackage = repository.Models.AddNew(rootName, "") as EA.Package;
                rootPackage.Update();
                repository.Models.Refresh();
            }


            return(rootPackage);
        }
Exemplo n.º 30
0
        public static bool CreateActivityForOperation(EA.Repository rep, EA.Method m)
        {
            // get class
            EA.Element elClass = rep.GetElementByID(m.ParentID);
            EA.Package pkgSrc  = rep.GetPackageByID(elClass.PackageID);

            // create a package with the name of the operation
            EA.Package pkgTrg = (EA.Package)pkgSrc.Packages.AddNew(m.Name, "");
            pkgTrg.Update();
            pkgSrc.Packages.Refresh();

            // create Class Activity Diagram in target package
            EA.Diagram pkgActDia = (EA.Diagram)pkgTrg.Diagrams.AddNew("Operation:" + m.Name + " Content", "Activity");
            pkgActDia.Update();
            pkgTrg.Diagrams.Refresh();

            // add frame in Activity diagram
            EA.DiagramObject frmObj = (EA.DiagramObject)pkgActDia.DiagramObjects.AddNew("l=100;r=400;t=25;b=50", "");
            EA.Element       frm    = (EA.Element)pkgTrg.Elements.AddNew(m.Name, "UMLDiagram");
            frm.Update();
            frmObj.ElementID = frm.ElementID;
            //frmObj.Style = "fontsz=200;pitch=34;DUID=265D32D5;font=Arial Narrow;bold=0;italic=0;ul=0;charset=0;";
            frmObj.Update();
            pkgTrg.Elements.Refresh();
            pkgActDia.DiagramObjects.Refresh();


            // create activity with the name of the operation
            EA.Element act = (EA.Element)pkgTrg.Elements.AddNew(m.Name, "Activity");
            act.Notes = "Generated from Operation:\r\n" + m.Visibility + " " + m.Name + ":" + m.ReturnType + ";\r\nDetails see Operation definition!!";
            act.Update();
            pkgTrg.Elements.Refresh();

            // create activity diagram beneath Activity
            EA.Diagram actDia = (EA.Diagram)act.Diagrams.AddNew(m.Name, "Activity");
            actDia.Update();
            act.Diagrams.Refresh();



            // put the activity on the diagram
            EA.DiagramObject actObj = (EA.DiagramObject)actDia.DiagramObjects.AddNew("l=50;r=600;t=100;b=800", "");
            actObj.ElementID = act.ElementID;
            actObj.Update();
            actDia.DiagramObjects.Refresh();

            // add default nodes (init/final)
            CreateDefaultElementsForActivity(rep, actDia, act);

            // Add Heading to diagram
            EA.DiagramObject noteObj = (EA.DiagramObject)actDia.DiagramObjects.AddNew("l=40;r=700;t=25;b=50", "");
            EA.Element       note    = (EA.Element)pkgTrg.Elements.AddNew("Text", "Text");

            note.Notes = m.Visibility + " " + elClass.Name + "_" + m.Name + ":" + m.ReturnType;
            note.Update();
            noteObj.ElementID = note.ElementID;
            noteObj.Style     = "fontsz=200;pitch=34;DUID=265D32D5;font=Arial Narrow;bold=0;italic=0;ul=0;charset=0;";
            noteObj.Update();
            pkgTrg.Elements.Refresh();
            actDia.DiagramObjects.Refresh();


            // Link Operation to activity
            Util.SetBehaviorForOperation(rep, m, act);

            // Set show behavior
            Util.SetShowBehaviorInDiagram(rep, m);

            // add parameters to activity
            GetParameterFromOperation(rep, act, m);

            Util.SetFrameLinksToDiagram(rep, frm, actDia); // link Overview frame to diagram
            frm.Update();
            //rep.ReloadDiagram(actDia.DiagramID);


            return(true);
        }
Exemplo n.º 31
0
        public static bool CreateInteractionForOperation(EA.Repository rep, EA.Method m)
        {
            // get class
            EA.Element elClass = rep.GetElementByID(m.ParentID);
            EA.Package pkgSrc  = rep.GetPackageByID(elClass.PackageID);

            // create a package with the name of the operation
            EA.Package pkgTrg = (EA.Package)pkgSrc.Packages.AddNew(m.Name, "");
            pkgTrg.Update();
            pkgSrc.Packages.Refresh();

            // create Class Sequence Diagram in target package
            EA.Diagram pkgSeqDia = (EA.Diagram)pkgTrg.Diagrams.AddNew("Operation:" + m.Name + " Content", "Sequence");
            pkgSeqDia.Update();
            pkgTrg.Diagrams.Refresh();

            // add frame in Sequence diagram
            EA.DiagramObject frmObj = (EA.DiagramObject)pkgSeqDia.DiagramObjects.AddNew("l=100;r=400;t=25;b=50", "");
            EA.Element       frm    = (EA.Element)pkgTrg.Elements.AddNew(m.Name, "UMLDiagram");
            frm.Update();
            frmObj.ElementID = frm.ElementID;
            //frmObj.Style = "fontsz=200;pitch=34;DUID=265D32D5;font=Arial Narrow;bold=0;italic=0;ul=0;charset=0;";
            frmObj.Update();
            pkgTrg.Elements.Refresh();
            pkgSeqDia.DiagramObjects.Refresh();


            // create Interaction with the name of the operation
            EA.Element seq = (EA.Element)pkgTrg.Elements.AddNew(m.Name, "Interaction");
            seq.Notes = "Generated from Operation:\r\n" + m.Visibility + " " + m.Name + ":" + m.ReturnType + ";\r\nDetails see Operation definition!!";
            seq.Update();
            pkgTrg.Elements.Refresh();

            // create sequence diagram beneath Interaction
            EA.Diagram seqDia = (EA.Diagram)seq.Diagrams.AddNew(m.Name, "Sequence");
            seqDia.Update();
            seq.Diagrams.Refresh();

            // create instance from class beneath Interaction
            EA.Element obj = (EA.Element)seq.Elements.AddNew("", "Object");
            seq.Elements.Refresh();
            obj.ClassfierID = elClass.ElementID;
            obj.Update();

            // add node object to Sequence Diagram
            EA.DiagramObject node = (EA.DiagramObject)seqDia.DiagramObjects.AddNew("l=100;r=180;t=50;b=70", "");
            node.ElementID = obj.ElementID;
            node.Update();


            // Add Heading to diagram
            EA.DiagramObject noteObj = (EA.DiagramObject)seqDia.DiagramObjects.AddNew("l=40;r=700;t=10;b=25", "");
            EA.Element       note    = (EA.Element)pkgTrg.Elements.AddNew("Text", "Text");

            note.Notes = m.Visibility + " " + elClass.Name + "_" + m.Name + ":" + m.ReturnType;
            note.Update();
            noteObj.ElementID = note.ElementID;
            noteObj.Style     = "fontsz=200;pitch=34;DUID=265D32D5;font=Arial Narrow;bold=0;italic=0;ul=0;charset=0;";
            noteObj.Update();
            pkgTrg.Elements.Refresh();
            seqDia.DiagramObjects.Refresh();


            // Link Operation to activity
            Util.SetBehaviorForOperation(rep, m, seq);

            // Set show behavior
            Util.SetShowBehaviorInDiagram(rep, m);



            Util.SetFrameLinksToDiagram(rep, frm, seqDia); // link Overview frame to diagram
            frm.Update();
            //rep.ReloadDiagram(actDia.DiagramID);


            return(true);
        }