/* * 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 Class_ extends fUML.Syntax.CommonBehaviors.BasicBehaviors.BehavioredClassifier { public fUML.Syntax.Classes.Kernel.OperationList ownedOperation = new fUML.Syntax.Classes.Kernel.OperationList(); public boolean isActive = false; public fUML.Syntax.CommonBehaviors.Communications.ReceptionList ownedReception = new fUML.Syntax.CommonBehaviors.Communications.ReceptionList(); public fUML.Syntax.Classes.Kernel.PropertyList ownedAttribute = new fUML.Syntax.Classes.Kernel.PropertyList(); public fUML.Syntax.Classes.Kernel.ClassifierList nestedClassifier = new fUML.Syntax.Classes.Kernel.ClassifierList(); public boolean isID = false; public fUML.Syntax.Classes.Kernel.Class_List superClass = new fUML.Syntax.Classes.Kernel.Class_List(); public void setIsActive(boolean isActive) { this.isActive = isActive; } // setIsActive public void addGeneralization( fUML.Syntax.Classes.Kernel.Generalization generalization) { super.addGeneralization(generalization); if (generalization.general instanceof Class_) { this.superClass.addValue((Class_) generalization.general); } } // addGeneralization public void addOwnedAttribute( fUML.Syntax.Classes.Kernel.Property ownedAttribute) { super.addAttribute(ownedAttribute); super.addOwnedMember(ownedAttribute); this.ownedAttribute.addValue(ownedAttribute); ownedAttribute._setClass(this); } // addOwnedAttribute public void addOwnedOperation( fUML.Syntax.Classes.Kernel.Operation ownedOperation) { super.addFeature(ownedOperation); super.addOwnedMember(ownedOperation); this.ownedOperation.addValue(ownedOperation); ownedOperation._setClass(this); } // addOwnedOperation public void addOwnedReception( fUML.Syntax.CommonBehaviors.Communications.Reception ownedReception) { super.addOwnedMember(ownedReception); super.addFeature(ownedReception); this.ownedReception.addValue(ownedReception); } // addOwnedReception public fUML.Syntax.Classes.Kernel.NamedElementList inherit( fUML.Syntax.Classes.Kernel.NamedElementList inhs) { // "The inherit operation is overridden to exclude redefined properties." RedefinableElementList redefinableMembers = new RedefinableElementList(); for (int i = 0; i < this.ownedMember.size(); i++) { if (this.ownedMember.getValue(i) instanceof RedefinableElement) { redefinableMembers .addValue((RedefinableElement) this.ownedMember .getValue(i)); } } NamedElementList inherited = new NamedElementList(); for (int i = 0; i < inhs.size(); i++) { NamedElement inh = inhs.getValue(i); boolean exclude = false; for (int j = 0; j < redefinableMembers.size(); j++) { RedefinableElementList redefinedElements = redefinableMembers .getValue(j).redefinedElement; for (int k = 0; k < redefinedElements.size(); k++) { if (redefinedElements.getValue(k) == inh) { exclude = true; break; } } if (exclude) break; } if (!exclude) { inherited.addValue(inh); } } return inherited; } // inherit public void addNestedClassifier( fUML.Syntax.Classes.Kernel.Classifier nestedClassifier) { this.addOwnedMember(nestedClassifier); this.nestedClassifier.addValue(nestedClassifier); } // addNestedClassifier } // Class