All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.uml2.uml.internal.impl.TemplateableElementImpl Maven / Gradle / Ivy

/*
 * Copyright (c) 2005, 2014 IBM Corporation, CEA, and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   IBM - initial API and implementation
 *   Kenn Hussey - 286329, 323181
 *   Kenn Hussey (CEA) - 327039, 418466
 *
 */
package org.eclipse.uml2.uml.internal.impl;

import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.Map;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;

import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.ENotificationImpl;

import org.eclipse.emf.ecore.resource.Resource;

import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
import org.eclipse.emf.ecore.util.InternalEList;

import org.eclipse.uml2.common.util.CacheAdapter;
import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;

import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.ParameterableElement;
import org.eclipse.uml2.uml.Stereotype;
import org.eclipse.uml2.uml.TemplateBinding;
import org.eclipse.uml2.uml.TemplateSignature;
import org.eclipse.uml2.uml.TemplateableElement;
import org.eclipse.uml2.uml.UMLPackage;

import org.eclipse.uml2.uml.internal.operations.TemplateableElementOperations;

/**
 * 
 * An implementation of the model object 'Templateable Element'.
 * 
 * 

* The following features are implemented: *

    *
  • {@link org.eclipse.uml2.uml.internal.impl.TemplateableElementImpl#getOwnedElements Owned Element}
  • *
  • {@link org.eclipse.uml2.uml.internal.impl.TemplateableElementImpl#getTemplateBindings Template Binding}
  • *
  • {@link org.eclipse.uml2.uml.internal.impl.TemplateableElementImpl#getOwnedTemplateSignature Owned Template Signature}
  • *
*

* * @generated */ public abstract class TemplateableElementImpl extends ElementImpl implements TemplateableElement { /** * The cached value of the '{@link #getTemplateBindings() Template Binding}' containment reference list. * * * @see #getTemplateBindings() * @generated * @ordered */ protected EList templateBindings; /** * The cached value of the '{@link #getOwnedTemplateSignature() Owned Template Signature}' containment reference. * * * @see #getOwnedTemplateSignature() * @generated * @ordered */ protected TemplateSignature ownedTemplateSignature; /** * * * @generated */ protected TemplateableElementImpl() { super(); } /** * * * @generated */ @Override protected EClass eStaticClass() { return UMLPackage.Literals.TEMPLATEABLE_ELEMENT; } /** * * * @generated */ @Override public EList getOwnedElements() { CacheAdapter cache = getCacheAdapter(); if (cache != null) { Resource eResource = eResource(); @SuppressWarnings("unchecked") EList ownedElements = (EList) cache.get( eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT); if (ownedElements == null) { cache.put(eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT, ownedElements = new DerivedUnionEObjectEList( Element.class, this, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS)); } return ownedElements; } return new DerivedUnionEObjectEList(Element.class, this, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS); } /** * * * @generated */ public EList getTemplateBindings() { if (templateBindings == null) { templateBindings = new EObjectContainmentWithInverseEList.Resolving( TemplateBinding.class, this, UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING, UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT); } return templateBindings; } /** * * * @generated */ public TemplateBinding createTemplateBinding(TemplateSignature signature) { TemplateBinding newTemplateBinding = (TemplateBinding) create(UMLPackage.Literals.TEMPLATE_BINDING); getTemplateBindings().add(newTemplateBinding); if (signature != null) newTemplateBinding.setSignature(signature); return newTemplateBinding; } /** * * * @generated */ public TemplateBinding getTemplateBinding(TemplateSignature signature) { return getTemplateBinding(signature, false); } /** * * * @generated */ public TemplateBinding getTemplateBinding(TemplateSignature signature, boolean createOnDemand) { templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) { if (signature != null && !signature.equals(templateBinding.getSignature())) continue templateBindingLoop; return templateBinding; } return createOnDemand ? createTemplateBinding(signature) : null; } /** * * * @generated */ public TemplateSignature getOwnedTemplateSignature() { if (ownedTemplateSignature != null && ownedTemplateSignature.eIsProxy()) { InternalEObject oldOwnedTemplateSignature = (InternalEObject) ownedTemplateSignature; ownedTemplateSignature = (TemplateSignature) eResolveProxy(oldOwnedTemplateSignature); if (ownedTemplateSignature != oldOwnedTemplateSignature) { InternalEObject newOwnedTemplateSignature = (InternalEObject) ownedTemplateSignature; NotificationChain msgs = oldOwnedTemplateSignature .eInverseRemove(this, UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE, TemplateSignature.class, null); if (newOwnedTemplateSignature.eInternalContainer() == null) { msgs = newOwnedTemplateSignature.eInverseAdd(this, UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE, TemplateSignature.class, msgs); } if (msgs != null) msgs.dispatch(); if (eNotificationRequired()) eNotify(new ENotificationImpl( this, Notification.RESOLVE, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE, oldOwnedTemplateSignature, ownedTemplateSignature)); } } return ownedTemplateSignature; } /** * * * @generated */ public TemplateSignature basicGetOwnedTemplateSignature() { return ownedTemplateSignature; } /** * * * @generated */ public NotificationChain basicSetOwnedTemplateSignature( TemplateSignature newOwnedTemplateSignature, NotificationChain msgs) { TemplateSignature oldOwnedTemplateSignature = ownedTemplateSignature; ownedTemplateSignature = newOwnedTemplateSignature; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE, oldOwnedTemplateSignature, newOwnedTemplateSignature); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * * * @generated */ public void setOwnedTemplateSignature( TemplateSignature newOwnedTemplateSignature) { if (newOwnedTemplateSignature != ownedTemplateSignature) { NotificationChain msgs = null; if (ownedTemplateSignature != null) msgs = ((InternalEObject) ownedTemplateSignature) .eInverseRemove(this, UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE, TemplateSignature.class, msgs); if (newOwnedTemplateSignature != null) msgs = ((InternalEObject) newOwnedTemplateSignature) .eInverseAdd(this, UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE, TemplateSignature.class, msgs); msgs = basicSetOwnedTemplateSignature(newOwnedTemplateSignature, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE, newOwnedTemplateSignature, newOwnedTemplateSignature)); } /** * * * @generated */ public TemplateSignature createOwnedTemplateSignature(EClass eClass) { TemplateSignature newOwnedTemplateSignature = (TemplateSignature) create(eClass); setOwnedTemplateSignature(newOwnedTemplateSignature); return newOwnedTemplateSignature; } /** * * * @generated */ public TemplateSignature createOwnedTemplateSignature() { return createOwnedTemplateSignature(UMLPackage.Literals.TEMPLATE_SIGNATURE); } /** * * * @generated */ public EList parameterableElements() { CacheAdapter cache = getCacheAdapter(); if (cache != null) { @SuppressWarnings("unchecked") EList result = (EList) cache .get( this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT___PARAMETERABLE_ELEMENTS); if (result == null) { cache .put( this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT___PARAMETERABLE_ELEMENTS, result = TemplateableElementOperations .parameterableElements(this)); } return result; } return TemplateableElementOperations.parameterableElements(this); } /** * * * @generated */ public boolean isTemplate() { return TemplateableElementOperations.isTemplate(this); } /** * * * @generated */ @SuppressWarnings("unchecked") @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : return ((InternalEList) (InternalEList) getEAnnotations()) .basicAdd(otherEnd, msgs); case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : return ((InternalEList) (InternalEList) getTemplateBindings()) .basicAdd(otherEnd, msgs); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : if (ownedTemplateSignature != null) msgs = ((InternalEObject) ownedTemplateSignature) .eInverseRemove( this, EOPPOSITE_FEATURE_BASE - UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE, null, msgs); return basicSetOwnedTemplateSignature( (TemplateSignature) otherEnd, msgs); } return eDynamicInverseAdd(otherEnd, featureID, msgs); } /** * * * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : return ((InternalEList) getEAnnotations()).basicRemove( otherEnd, msgs); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT : return ((InternalEList) getOwnedComments()).basicRemove( otherEnd, msgs); case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : return ((InternalEList) getTemplateBindings()).basicRemove( otherEnd, msgs); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : return basicSetOwnedTemplateSignature(null, msgs); } return eDynamicInverseRemove(otherEnd, featureID, msgs); } /** * * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : return getEAnnotations(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT : return getOwnedComments(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT : return getOwnedElements(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNER : if (resolve) return getOwner(); return basicGetOwner(); case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : return getTemplateBindings(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : if (resolve) return getOwnedTemplateSignature(); return basicGetOwnedTemplateSignature(); } return eDynamicGet(featureID, resolve, coreType); } /** * * * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : getEAnnotations().clear(); getEAnnotations().addAll( (Collection) newValue); return; case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT : getOwnedComments().clear(); getOwnedComments().addAll( (Collection) newValue); return; case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : getTemplateBindings().clear(); getTemplateBindings().addAll( (Collection) newValue); return; case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : setOwnedTemplateSignature((TemplateSignature) newValue); return; } eDynamicSet(featureID, newValue); } /** * * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : getEAnnotations().clear(); return; case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT : getOwnedComments().clear(); return; case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : getTemplateBindings().clear(); return; case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : setOwnedTemplateSignature((TemplateSignature) null); return; } eDynamicUnset(featureID); } /** * * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS : return eAnnotations != null && !eAnnotations.isEmpty(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT : return ownedComments != null && !ownedComments.isEmpty(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT : return isSetOwnedElements(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNER : return isSetOwner(); case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING : return templateBindings != null && !templateBindings.isEmpty(); case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE : return ownedTemplateSignature != null; } return eDynamicIsSet(featureID); } /** * * * @generated */ @Override @SuppressWarnings("unchecked") public Object eInvoke(int operationID, EList arguments) throws InvocationTargetException { switch (operationID) { case UMLPackage.TEMPLATEABLE_ELEMENT___GET_EANNOTATION__STRING : return getEAnnotation((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___VALIDATE_HAS_OWNER__DIAGNOSTICCHAIN_MAP : return validateHasOwner((DiagnosticChain) arguments.get(0), (Map) arguments.get(1)); case UMLPackage.TEMPLATEABLE_ELEMENT___VALIDATE_NOT_OWN_SELF__DIAGNOSTICCHAIN_MAP : return validateNotOwnSelf((DiagnosticChain) arguments.get(0), (Map) arguments.get(1)); case UMLPackage.TEMPLATEABLE_ELEMENT___ADD_KEYWORD__STRING : return addKeyword((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___APPLY_STEREOTYPE__STEREOTYPE : return applyStereotype((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___CREATE_EANNOTATION__STRING : return createEAnnotation((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___DESTROY : destroy(); return null; case UMLPackage.TEMPLATEABLE_ELEMENT___GET_KEYWORDS : return getKeywords(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLICABLE_STEREOTYPE__STRING : return getApplicableStereotype((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLICABLE_STEREOTYPES : return getApplicableStereotypes(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLIED_STEREOTYPE__STRING : return getAppliedStereotype((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLIED_STEREOTYPES : return getAppliedStereotypes(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLIED_SUBSTEREOTYPE__STEREOTYPE_STRING : return getAppliedSubstereotype((Stereotype) arguments.get(0), (String) arguments.get(1)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_APPLIED_SUBSTEREOTYPES__STEREOTYPE : return getAppliedSubstereotypes((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_MODEL : return getModel(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_NEAREST_PACKAGE : return getNearestPackage(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_RELATIONSHIPS : return getRelationships(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_RELATIONSHIPS__ECLASS : return getRelationships((EClass) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_REQUIRED_STEREOTYPE__STRING : return getRequiredStereotype((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_REQUIRED_STEREOTYPES : return getRequiredStereotypes(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_SOURCE_DIRECTED_RELATIONSHIPS : return getSourceDirectedRelationships(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_SOURCE_DIRECTED_RELATIONSHIPS__ECLASS : return getSourceDirectedRelationships((EClass) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_STEREOTYPE_APPLICATION__STEREOTYPE : return getStereotypeApplication((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_STEREOTYPE_APPLICATIONS : return getStereotypeApplications(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_TARGET_DIRECTED_RELATIONSHIPS : return getTargetDirectedRelationships(); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_TARGET_DIRECTED_RELATIONSHIPS__ECLASS : return getTargetDirectedRelationships((EClass) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___GET_VALUE__STEREOTYPE_STRING : return getValue((Stereotype) arguments.get(0), (String) arguments.get(1)); case UMLPackage.TEMPLATEABLE_ELEMENT___HAS_KEYWORD__STRING : return hasKeyword((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___HAS_VALUE__STEREOTYPE_STRING : return hasValue((Stereotype) arguments.get(0), (String) arguments.get(1)); case UMLPackage.TEMPLATEABLE_ELEMENT___IS_STEREOTYPE_APPLICABLE__STEREOTYPE : return isStereotypeApplicable((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___IS_STEREOTYPE_APPLIED__STEREOTYPE : return isStereotypeApplied((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___IS_STEREOTYPE_REQUIRED__STEREOTYPE : return isStereotypeRequired((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___REMOVE_KEYWORD__STRING : return removeKeyword((String) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___SET_VALUE__STEREOTYPE_STRING_OBJECT : setValue((Stereotype) arguments.get(0), (String) arguments.get(1), arguments.get(2)); return null; case UMLPackage.TEMPLATEABLE_ELEMENT___UNAPPLY_STEREOTYPE__STEREOTYPE : return unapplyStereotype((Stereotype) arguments.get(0)); case UMLPackage.TEMPLATEABLE_ELEMENT___ALL_OWNED_ELEMENTS : return allOwnedElements(); case UMLPackage.TEMPLATEABLE_ELEMENT___MUST_BE_OWNED : return mustBeOwned(); case UMLPackage.TEMPLATEABLE_ELEMENT___IS_TEMPLATE : return isTemplate(); case UMLPackage.TEMPLATEABLE_ELEMENT___PARAMETERABLE_ELEMENTS : return parameterableElements(); } return eDynamicInvoke(operationID, arguments); } /** * The array of subset feature identifiers for the '{@link #getOwnedElements() Owned Element}' reference list. * * * @see #getOwnedElements() * @generated * @ordered */ protected static final int[] OWNED_ELEMENT_ESUBSETS = new int[]{ UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT, UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE}; /** * * * @generated */ @Override public boolean isSetOwnedElements() { return super.isSetOwnedElements() || eIsSet(UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING) || eIsSet(UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE); } } //TemplateableElementImpl




© 2015 - 2025 Weber Informatics LLC | Privacy Policy