/// <summary>
        /// method moves diagram into target package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="diagramGUID">GUID of diagram that should be moved</param>
        /// <param name="packageGUID">GUID of target package</param>
        public void moveDiagramToPackage(EA.Repository Repository, string diagramGUID, string packageGUID)
        {
            EA.Package package = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            EA.Diagram diagram = (EA.Diagram)Repository.GetDiagramByGuid(diagramGUID);
            diagram.PackageID = package.PackageID;
            diagram.Update();
            package.Diagrams.Refresh();

            BPAddIn.synchronizationWindow.addToList("Movement of diagram '" + diagram.Name + "' to package '" +
               package.Name + "'");
        }
Exemplo n.º 2
0
 public void showObjectProperties(EA.Repository Repository, string GUID, EA.ObjectType ot)
 {
     eaObjectType.Text = ot.ToString();
     eaObjectName.Text = "?";
     switch(ot)
     {
         case EA.ObjectType.otAttribute:
             EA.Attribute attribute = Repository.GetAttributeByGuid(GUID);
             currentEaObject = attribute;
             currentEaObjectCollections = null;
             eaObjectName.Text = attribute.Name;
             showEmbeddedObjects.Enabled = false;
             showEmbeddedObjects.Checked = false;
             break;
         case EA.ObjectType.otElement:
             EA.Element element = Repository.GetElementByGuid(GUID);
             currentEaObject = element;
             currentEaObjectCollections = new EAElementCollections(element);
             eaObjectName.Text = element.Name;
             showEmbeddedObjects.Enabled = true;
             break;
         case EA.ObjectType.otMethod:
             EA.Method method = Repository.GetMethodByGuid(GUID);
             currentEaObject = method;
             currentEaObjectCollections = null;
             eaObjectName.Text = method.Name;
             showEmbeddedObjects.Enabled = false;
             showEmbeddedObjects.Checked = false;
             break;
         case EA.ObjectType.otPackage:
             EA.Package package = Repository.GetPackageByGuid(GUID);
             currentEaObject = package;
             currentEaObjectCollections = new EAPackageCollections(package);
             eaObjectName.Text = package.Name;
             showEmbeddedObjects.Enabled = true;
             break;
         case EA.ObjectType.otConnector:
             EA.Connector connector = Repository.GetConnectorByGuid(GUID);
             currentEaObject = connector;
             currentEaObjectCollections = null;
             showEmbeddedObjects.Enabled = false;
             showEmbeddedObjects.Checked = false;
             break;
         default:
             currentEaObject = null;
             currentEaObjectCollections = null;
             propertyGrid.SelectedObject = null;
             showEmbeddedObjects.Enabled = false;
             showEmbeddedObjects.Checked = false;
             break;
     }
     SynchPropertyGridSelection();
 }
 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();
 }
        /// <summary>
        /// method moves element or package into target package
        /// </summary>
        /// <param name="repository">EA repository</param>
        /// <param name="itemGUID">GUID of item that should be moved</param>
        /// <param name="targetPackageGUID">GUID of target package</param>
        /// <param name="elementType">type of element</param>
        public void moveElementOrPackageToPackage(EA.Repository repository, string itemGUID, string targetPackageGUID, int elementType)
        {
            EA.Package targetPackage = (EA.Package)repository.GetPackageByGuid(targetPackageGUID);

            if (elementType == 3)
            {
                EA.Package package = (EA.Package)repository.GetPackageByGuid(itemGUID);

                if (package.ParentID != targetPackage.PackageID)
                {
                    package.ParentID = targetPackage.PackageID;
                    package.Update();
                    targetPackage.Packages.Refresh();
                    BPAddIn.synchronizationWindow.addToList("Movement of package '" + package.Name + "' to package '" +
                    targetPackage.Name + "'");
                }
            }
            else
            {
                EA.Element element = (EA.Element)repository.GetElementByGuid(itemGUID);

                if (element.ParentID != targetPackage.PackageID)
                {
                    element.PackageID = targetPackage.PackageID;
                    element.Update();
                    targetPackage.Elements.Refresh();

                    BPAddIn.synchronizationWindow.addToList("Movement of element '" + element.Name + "' to package '" +
                    targetPackage.Name + "'");
                }
            }
        }
        // Find the operation from Activity / State Machine
        // it excludes operations in state machines
        public static EA.Package GetModelDocumentFromPackage(EA.Repository rep, EA.Package pkg)
        {
            EA.Package pkg1 = null;
            string repositoryType = "JET";// rep.RepositoryType();

            // get object_ID of package
            var query = @"select pkg.ea_GUID AS EA_GUID " +
                           @" from (((t_object o  INNER JOIN t_attribute a on (o.object_ID = a.Object_ID AND a.type = 'Package')) " +
                           @"     INNER JOIN t_package pkg on (pkg.Package_ID = o.Package_ID)) " +
                           @"		  INNER JOIN t_object o1 on (cstr(o1.object_id) = a.classifier)) " +
                           @" where o1.ea_guid = '" + pkg.PackageGUID + "' ";
            
						 
            if (repositoryType== "JET")
            {
                query = @"select pkg.ea_GUID AS EA_GUID " +
                    @" from (((t_object o  INNER JOIN t_attribute a on (o.object_ID = a.Object_ID AND a.type = 'Package')) " +
                    @"     INNER JOIN t_package pkg on (pkg.Package_ID = o.Package_ID)) " +
                    @"		  INNER JOIN t_object o1 on (cstr(o1.object_id) = a.classifier)) " +
                    @" where o1.ea_guid = '" + pkg.PackageGUID + "' ";
            }
            if (repositoryType == "SQLSVR")
            // SQL Server
            {
                query = @"select pkg.ea_GUID AS EA_GUID " +
                    @" from (((t_object o  INNER JOIN t_attribute a on (o.object_ID = a.Object_ID AND a.type = 'Package')) " +
                    @"     INNER JOIN t_package pkg on (pkg.Package_ID = o.Package_ID)) " +
                    @"		  INNER JOIN t_object o1 on o1.object_id = Cast(a.classifier As Int)) " +
                    @" where o1.ea_guid = '" + pkg.PackageGUID + "' ";
                
            }
            
           

            string str = rep.SQLQuery(query);
            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(str);

            XmlNode operationGuidNode = xmlDoc.SelectSingleNode("//EA_GUID");

            if (operationGuidNode != null)
            {
                string guid = operationGuidNode.InnerText;
                pkg1 = rep.GetPackageByGuid(guid);
            }
            return pkg1;
        }
        public static bool GetLatest(EA.Repository rep, EA.Package pkg, bool recursive, ref int count, int level, ref int errorCount)
        {
            if (pkg.IsControlled)
            {
                level = level + 1;
                // check if checked out

                string path = GetVccFilePath(rep, pkg);
                string fText;
                //rep.WriteOutput("Debug", "Path:" + pkg.Name + path, 0);
                var sLevel = new string(' ', level * 2);
                rep.WriteOutput("Debug", sLevel + (count+1).ToString(",0") + " Work for:" + path, 0);
                if (path != "")
                {
                    count = count + 1;
                    rep.ShowInProjectView(pkg);
                    // delete a potential write protection
                    try
                    {
                        var fileInfo = new FileInfo(path);
                        var attributes = (FileAttributes)(fileInfo.Attributes - FileAttributes.ReadOnly);
                        System.IO.File.SetAttributes(fileInfo.FullName, attributes);
                        System.IO.File.Delete(path);
                    }
                    catch (FileNotFoundException e)
                    {
                        fText = path + " " + e.Message;
                        rep.WriteOutput("Debug", fText, 0);
                        errorCount = errorCount + 1;
                    }
                    catch (DirectoryNotFoundException e)
                    {
                        fText = path + " " + e.Message;
                        rep.WriteOutput("Debug", fText, 0);
                        errorCount = errorCount + 1;
                    }
                    // get latest
                    try
                    {
                        // to make sure pkg is the correct reference
                        // new load of pkg after GetLatest
                        string pkgGuid = pkg.PackageGUID;
                        pkg.VersionControlGetLatest(true);
                        pkg = rep.GetPackageByGuid(pkgGuid);
                        count = count + 1;
                    }
                    catch
                    {
                        fText = path + " " + pkg.GetLastError();
                        rep.WriteOutput("Debug", fText, 0);
                        errorCount = errorCount + 1;
                    }

                }
                else
                {
                    fText = pkg.XMLPath + " invalid path";
                    rep.WriteOutput("Debug", fText, 0);
                    errorCount = errorCount + 1;

                }
            }

            //rep.WriteOutput("Debug", "Recursive:" +recursive.ToString(), 0);
            if (recursive)
            {
                //rep.WriteOutput("Debug","Recursive count:" + pkg.Packages.Count.ToString(), 0);
                // over all contained packages
                foreach (EA.Package pkgNested in pkg.Packages)
                {
                    //rep.WriteOutput("Debug", "Recursive:"+ pkgNested.Name, 0);
                    GetLatest(rep, pkgNested, true, ref count, level, ref errorCount);

                }
            }
            return true;

        }
        /// <summary>
        /// method adds a new diagram into parent element or package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="parentGUID">GUID of parent element</param>
        /// <param name="packageGUID">GUID of parent package</param>
        /// <param name="elementType">type of new diagram</param>
        /// <param name="name">name of new diagram</param>
        /// <param name="author">author of new diagram</param>
        /// <returns>GUID of new diagram</returns>
        public string addDiagram(EA.Repository Repository, string parentGUID, string packageGUID, int elementType, string name, string author)
        {
            if (getDiagramType(elementType) == "")
            {
                return "";
            }

            EA.Collection diagrams;
            if (parentGUID == "0")
            {
                diagrams = (EA.Collection)Repository.GetPackageByGuid(packageGUID).Diagrams;
            }
            else
            {
                diagrams = (EA.Collection)Repository.GetElementByGuid(parentGUID).Diagrams;
            }

            EA.Diagram newDiagram = (EA.Diagram)diagrams.AddNew(name, getDiagramType(elementType));
            newDiagram.Author = author;
            newDiagram.Update();
            diagrams.Refresh();

            EA.Package parentPackage = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            if (parentGUID == "0")
            {
                BPAddIn.synchronizationWindow.addToList("Addition of " + itemTypes.getElementTypeInEnglish(elementType) + " '" + name +
                    "' to package '" + parentPackage.Name + "' - author: '" + author + "'");
            }
            else
            {
                EA.Element parentElement = (EA.Element)Repository.GetElementByGuid(parentGUID);
                BPAddIn.synchronizationWindow.addToList("Addition of " + itemTypes.getElementTypeInEnglish(elementType) + " '" + name +
                    "' to element '" + parentElement.Name + "' in package '" + parentPackage.Name + "' - author: '" + author + "'");
            }

            return newDiagram.DiagramGUID;
        }
        /// <summary>
        /// method adds a new package into parent package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="packageGUID">GUID of parent package</param>
        /// <param name="name">name of new package</param>
        /// <param name="author">author of new package</param>
        /// <returns>GUID of new package</returns>
        public String addPackage(EA.Repository Repository, string packageGUID, string name, string author)
        {
            EA.Package parentPackage = (EA.Package)Repository.GetPackageByGuid(packageGUID);

            EA.Package newPackage = (EA.Package)parentPackage.Packages.AddNew(name, "");
            newPackage.Update();

            EA.Element packageMetaElement = (EA.Element)newPackage.Element;
            packageMetaElement.Author = author;
            newPackage.Update();

            parentPackage.Packages.Refresh();
            BPAddIn.synchronizationWindow.addToList("Addition of package '" + name + "' to package '" + parentPackage.Name
                   + "' - author: '" + author + "'");

            return newPackage.PackageGUID;
        }
        /// <summary>
        /// method adds a new element into parent element or package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="parentGUID">GUID of parent element</param>
        /// <param name="packageGUID">GUID of parent package</param>
        /// <param name="coordinates">coordinates of new element</param>
        /// <param name="elementType">type of new element</param>
        /// <param name="name">name of new element</param>
        /// <param name="author">author of new element</param>
        /// <returns>GUID of new element</returns>
        public string addElement(EA.Repository Repository, string parentGUID, string packageGUID, string coordinates, 
            int elementType, string name, string author)
        {
            if (getElementType(elementType) == "" && getElementStereotype(elementType) == "" && getElementSubtype(elementType) == -1)
            {
                return "";
            }

            EA.Collection elements;

            if (parentGUID == "0")
            {
                elements = (EA.Collection)Repository.GetPackageByGuid(packageGUID).Elements;
            }
            else
            {
                elements = (EA.Collection)Repository.GetElementByGuid(parentGUID).Elements;
            }

            if (elementType == 6 || (elementType > 30 && elementType < 45))
            {
                elements = (EA.Collection)Repository.GetPackageByGuid(packageGUID).Elements;
            }

            EA.Element newElement = (EA.Element)elements.AddNew(name, getElementType(elementType));

            if ((elementType >= 7 && elementType <= 10) || (elementType >= 18 && elementType <= 23))
            {
                newElement.Subtype = getElementSubtype(elementType);
            }

            if (elementType == 4 || (elementType >= 15 && elementType <= 17) || (elementType >= 31 && elementType <= 44))
            {
                newElement.Stereotype = getElementStereotype(elementType);
            }

            newElement.Author = author;
            newElement.Update();
            elements.Refresh();

            EA.Package parentPackage = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            if (parentGUID == "0")
            {
                BPAddIn.synchronizationWindow.addToList("Addition of " + itemTypes.getElementTypeInEnglish(elementType) + " '" + name +
                    "' to package '" + parentPackage.Name + "' - author: '" + author + "'");
            }
            else
            {
                EA.Element parentElement = (EA.Element)Repository.GetElementByGuid(parentGUID);
                BPAddIn.synchronizationWindow.addToList("Addition of " + itemTypes.getElementTypeInEnglish(elementType) + " '" + name +
                    "' to element '" + parentElement.Name + "' in package '" + parentPackage.Name + "' - author: '" + author + "'");
            }

            return newElement.ElementGUID;
        }
        /// <summary>
        /// method deletes package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="packageGUID">GUID of package that should be deleted</param>
        public void deletePackage(EA.Repository Repository, string packageGUID)
        {
            EA.Package packageToDelete = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            string name = packageToDelete.Name;
            EA.Package parentPackage = (EA.Package)Repository.GetPackageByID(packageToDelete.ParentID);

            for (short i = 0; i < parentPackage.Packages.Count; i++)
            {
                EA.Package actualPackage = (EA.Package)parentPackage.Packages.GetAt(i);
                if (actualPackage.PackageGUID == packageGUID)
                {
                    parentPackage.Packages.DeleteAt(i, false);
                    break;
                }
            }
            parentPackage.Packages.Refresh();

            BPAddIn.synchronizationWindow.addToList("Deletion of package '" + name + "' from package '" + parentPackage.Name + "'");
        }
        /// <summary>
        /// method changes notes of package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="packageGUID">GUID of changed package</param>
        /// <param name="notes">new notes of changed package</param>
        public void changePackageNotes(EA.Repository Repository, string packageGUID, string notes)
        {
            EA.Package package = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            package.Notes = notes;
            package.Update();

            BPAddIn.synchronizationWindow.addToList("Change of notes of package '" + package.Name +
                "' (Location of package: " + itemTypes.getLocationOfItem(Repository, package.ParentID, 0));
        }
        /// <summary>
        /// method changes name of package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="packageGUID">GUID of changed package</param>
        /// <param name="name">new name of changed package</param>
        /// <param name="oldName">previous name of changed package</param>
        public void changePackageName(EA.Repository Repository, string packageGUID, string name, string oldName)
        {
            EA.Package package = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            package.Name = name;
            package.Update();

            BPAddIn.synchronizationWindow.addToList("Change of name of package '" + name + "' - previous name: '" + oldName +
                "' (Location of package: " + itemTypes.getLocationOfItem(Repository, package.ParentID, 0));
        }
        /// <summary>
        /// method changes author of package
        /// </summary>
        /// <param name="Repository">EA repository</param>
        /// <param name="packageGUID">GUID of changed package</param>
        /// <param name="author">new author of changed package</param>
        /// <param name="oldAuthor">previous author of changed package</param>
        public void changePackageAuthor(EA.Repository Repository, string packageGUID, string author, string oldAuthor)
        {
            EA.Package package = (EA.Package)Repository.GetPackageByGuid(packageGUID);
            EA.Element packageElement = (EA.Element)package.Element;
            packageElement.Author = author;
            package.Update();

            BPAddIn.synchronizationWindow.addToList("Change of author of package '" + package.Name + "' - previous author: '" + oldAuthor +
                 "', current author: '" + author + "' (Location of package: " + itemTypes.getLocationOfItem(Repository, package.ParentID, 0));
        }
 /// <summary>
 /// Create a package element. Be aware that a package element also contains an element to support
 /// element specific things like tagged values.
 /// </summary>
 /// <param name="rep"></param>
 /// <param name="GUID"></param>
 public  FindAndReplaceItemPackage(EA.Repository rep, string GUID)  :base( rep, GUID)
 {
     this._el = rep.GetElementByGuid(GUID);
     this._pkg = rep.GetPackageByGuid(GUID);
     this.load(rep);
 }