/// <summary>Add tool extensions of a package element.</summary> /// <param name="bplPackage">The BplPackage.</param> public void AddToolExtensions(BplPackage bplPackage) { string stereotype = bplPackage.IsContract ? "bplContract" : "bplPackage"; // Add the element extensions XElement xElementExt = new XElement("element", new XAttribute(xmiNs + "idref", bplPackage.GetID()), new XAttribute(xmiNs + "type", "uml:Package"), new XAttribute("name", bplPackage.Name), new XAttribute("scope", "public")); xElementExt.Add(new XElement("properties", new XAttribute("documentation", bplPackage.CanonicName), new XAttribute("isSpecification", "false"), new XAttribute("sType", "Package"), new XAttribute("scope", "public"), new XAttribute("stereotype", stereotype))); // Add the profile extension XElement xTags = new XElement("tags"); xTags.AddTags(new Pair("isNamespace", "true")); xElementExt.Add(xTags); XmiElements.Add(xElementExt); // Add primitive elements bplPackage.Primitives.Apply<BplPrimitive>(pt => AddToolExtensions(pt)); // Add class elements bplPackage.Classes.Apply<BplClass>(cls => AddToolExtensions(cls)); // Add sub packaages bplPackage.Packages.Apply<BplPackage>(pkg => AddToolExtensions(pkg)); }
/// <summary>Add uml extentions for package.</summary> private void AddUmlExtensions(BplPackage bplPackage) { // Add the profile extension for the package string stereotype = bplPackage.IsContract ? "bplContract" : "bplPackage"; AddUmlExtentions(stereotype, BASE_PACKAGE, bplPackage.GetID(), new Pair("isNamespace", "true"), new Pair("canonicName", bplPackage.CanonicName)); // Add profile extensions for the package primitives bplPackage.Primitives.Apply<BplPrimitive>(pt => AddUmlExtensions(pt)); // Add the profile extension for the package classes bplPackage.Classes.Apply<BplClass>(cls => AddUmlExtensions(cls)); // Add the profile extension for the contained packages bplPackage.Packages.Apply<BplPackage>(pkg => AddUmlExtensions(pkg)); }