Question

 How to create Packages in EA appropriately?

When I create packages programatically Packages does not appear in Project browser Creating classes and attributes are fine, but not Packages. Any suggestions? Thx...

Here is my create Package function:

public void addNewPackage(String packageName, Package parentPackage, string elementType)
{
    // for every package under the  Root Model->Folder->...
    foreach (Package pack in r.Models)
    {
        foreach (Package package in pack.Packages)
        {

            foreach (Package innerPackage in package.Packages)
            {
                // ----addOrUpdateElement
                Package myPackage;
                // try to find existing class with the given name
                // this will only work correctly if there is only one element with the given name, and if it is a class
                myPackage = getPackageElementByName(parentPackage, packageName);

                if ((myPackage == null))
                {
                    // no existing class, create new
                    myPackage = parentPackage.Elements.AddNew(packageName, elementType);
                }
                // set properties
                // save class
                myPackage.Update();
                // refresh elements collection
                parentPackage.Elements.Refresh();



                innerPackage.Packages.Refresh();
            }
            package.Packages.Refresh();
            package.Update();
        }
        r.RefreshModelView(pack.PackageID);
    }

    models.Refresh();
    MessageBox.Show("Pack adding Ended: " + models.GetLastError());
}
Was it helpful?

Solution

Looks like you're adding your packages to the Package.Elements collection. They should be in Package.Packages. A UML package is represented in EA by both an Element and a Package, but the Element is created automatically when you create a Package.

So you need to do something like

if (elementType.Equals("Package"))
{
    Package myPackage = parentPackage.Packages.AddNew(elementName, elementType);
    myPackage.Update();
    parentPackage.Packages.Refresh();
}
else
{
    Element myElement = parentPackage.Elements.AddNew(elementName, elementType);
    myElement.Update();
    parentPackage.Elements.Refresh();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top