/*
* 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 Association extends fUML.Syntax.Classes.Kernel.Classifier {
public boolean isDerived = false;
public fUML.Syntax.Classes.Kernel.PropertyList ownedEnd = new fUML.Syntax.Classes.Kernel.PropertyList();
public fUML.Syntax.Classes.Kernel.TypeList endType = new fUML.Syntax.Classes.Kernel.TypeList();
public fUML.Syntax.Classes.Kernel.PropertyList memberEnd = new fUML.Syntax.Classes.Kernel.PropertyList();
public fUML.Syntax.Classes.Kernel.PropertyList navigableOwnedEnd = new fUML.Syntax.Classes.Kernel.PropertyList();
public void addOwnedEnd(fUML.Syntax.Classes.Kernel.Property ownedEnd) {
super.addFeature(ownedEnd);
super.addOwnedMember(ownedEnd);
this.ownedEnd.addValue(ownedEnd);
ownedEnd._setOwningAssociation(this);
this.memberEnd.addValue(ownedEnd);
ownedEnd._setAssociation(this);
if (ownedEnd.typedElement.type != null) {
this.endType.addValue(ownedEnd.typedElement.type);
}
if (this.memberEnd.size() == 2) {
Property opposite = this.memberEnd.get(0);
ownedEnd._setOpposite(opposite);
opposite._setOpposite(ownedEnd);
} else if (this.memberEnd.size() > 2) {
for (Property memberEnd : this.memberEnd) {
memberEnd._setOpposite(null);
}
}
} // addOwnedEnd
public void addNavigableOwnedEnd(
fUML.Syntax.Classes.Kernel.Property navigableOwnedEnd) {
// Note: A navigable end must also be set as an owned end using
// setOwnedEnd.
this.navigableOwnedEnd.addValue(navigableOwnedEnd);
} // addNavigableOwnedEnd
} // Association