/* * Initial version copyright 2008 Lockheed Martin Corporation, except * as stated in the file entitled Licensing-Information. * * All modifications copyright 2009-2012 Data Access Technologies, Inc. * * Licensed under the Academic Free License version 3.0 * (http://www.opensource.org/licenses/afl-3.0.php), except as stated * in the file entitled Licensing-Information. */ package fUML.Syntax.Classes.Kernel; import fUML.Debug; import UMLPrimitiveTypes.*; public class Package extends fUML.Syntax.Classes.Kernel.Namespace { public fUML.Syntax.Classes.Kernel.PackageableElementList packagedElement = new fUML.Syntax.Classes.Kernel.PackageableElementList(); public fUML.Syntax.Classes.Kernel.TypeList ownedType = new fUML.Syntax.Classes.Kernel.TypeList(); public fUML.Syntax.Classes.Kernel.PackageList nestedPackage = new fUML.Syntax.Classes.Kernel.PackageList(); public fUML.Syntax.Classes.Kernel.Package nestingPackage = null; public String URI = ""; public void addPackagedElement( fUML.Syntax.Classes.Kernel.PackageableElement packagedElement) { super.addOwnedMember(packagedElement); this.packagedElement.addValue(packagedElement); if (packagedElement instanceof Type) { this.ownedType.addValue((Type) packagedElement); ((Type) packagedElement)._setPackage(this); } if (packagedElement instanceof Package) { this.nestedPackage.addValue((Package) packagedElement); ((Package) packagedElement).nestingPackage = this; } } // addPackagedElement public fUML.Syntax.Classes.Kernel.PackageableElementList visibleMembers() { PackageableElementList visibleMembers = new PackageableElementList(); for (int i = 0; i < this.packagedElement.size(); i++) { PackageableElement member = this.packagedElement.getValue(i); if (this.makesVisible(member)) { visibleMembers.addValue(member); } } return visibleMembers; } // visibleMembers public boolean makesVisible(fUML.Syntax.Classes.Kernel.NamedElement el) { for (int i = 0; i < this.ownedMember.size(); i++) { NamedElement member = this.ownedMember.getValue(i); if (member == el) { return member.visibility == null || member.visibility == VisibilityKind.public_; } } for (int i = 0; i < this.elementImport.size(); i++) { ElementImport elementImport = this.elementImport.getValue(i); if (elementImport.importedElement == el) { return true; } } for (int i = 0; i < this.packageImport.size(); i++) { PackageImport packageImport = this.packageImport.getValue(i); if (packageImport.visibility == VisibilityKind.public_) { // NOTE: This won't work unless the imported package members // have already been loaded NamedElementList packageMembers = packageImport.importedPackage.member; for (int j = 0; j < packageMembers.size(); j++) { if (packageMembers.getValue(j) == el) { return true; } } } } return false; } // makesVisible public void setURI(String URI) { this.URI = URI; } // setURI } // Package