CHESSIoT_Dev_old-master/org.polarsys.chess.chessmlprofile/src/org/polarsys/chess/chessmlprofile/Predictability/RTComponentModel/impl/CHRtSpecificationImpl.java
/*****************************************************************************
 * Copyright (c) 2011 - 2014 University of Padova, Intecs
 *
 *    
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *
 *
 *****************************************************************************/
package org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl;

import java.util.Collection;

import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
import org.eclipse.emf.ecore.util.EObjectResolvingEList;
import org.eclipse.papyrus.MARTE.MARTE_DesignModel.HLAM.CallConcurrencyKind;
import org.eclipse.uml2.uml.BehavioralFeature;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.Parameter;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.Slot;
import org.eclipse.uml2.uml.Type;
import org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.CHRtSpecification;
import org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.RTComponentModelPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>CH Rt Specification</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * </p>
 * <ul>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getPartWithPort <em>Part With Port</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getWCET <em>WCET</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getLocalWCET <em>Local WCET</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getRelativePriority <em>Relative Priority</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getCeiling <em>Ceiling</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getMemorySizeFootprint <em>Memory Size Footprint</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getStackSize <em>Stack Size</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getHeapSize <em>Heap Size</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getSlot <em>Slot</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getBase_Comment <em>Base Comment</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getOccKind <em>Occ Kind</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getProtection <em>Protection</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getRlDl <em>Rl Dl</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getContext <em>Context</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getRespT <em>Resp T</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getBlockT <em>Block T</em>}</li>
 *   <li>{@link org.polarsys.chess.chessmlprofile.Predictability.RTComponentModel.impl.CHRtSpecificationImpl#getOperationReqForSporadicOcc <em>Operation Req For Sporadic Occ</em>}</li>
 * </ul>
 *
 * @generated
 */
public class CHRtSpecificationImpl extends EObjectImpl implements CHRtSpecification {
	/**
	 * The cached value of the '{@link #getPartWithPort() <em>Part With Port</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPartWithPort()
	 * @generated
	 * @ordered
	 */
	protected Property partWithPort;

	/**
	 * The default value of the '{@link #getWCET() <em>WCET</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getWCET()
	 * @generated
	 * @ordered
	 */
	protected static final String WCET_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getWCET() <em>WCET</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getWCET()
	 * @generated
	 * @ordered
	 */
	protected String wcet = WCET_EDEFAULT;

	/**
	 * The default value of the '{@link #getLocalWCET() <em>Local WCET</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLocalWCET()
	 * @generated
	 * @ordered
	 */
	protected static final String LOCAL_WCET_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getLocalWCET() <em>Local WCET</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getLocalWCET()
	 * @generated
	 * @ordered
	 */
	protected String localWCET = LOCAL_WCET_EDEFAULT;

	/**
	 * The default value of the '{@link #getRelativePriority() <em>Relative Priority</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRelativePriority()
	 * @generated
	 * @ordered
	 */
	protected static final String RELATIVE_PRIORITY_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getRelativePriority() <em>Relative Priority</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRelativePriority()
	 * @generated
	 * @ordered
	 */
	protected String relativePriority = RELATIVE_PRIORITY_EDEFAULT;

	/**
	 * The default value of the '{@link #getCeiling() <em>Ceiling</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCeiling()
	 * @generated
	 * @ordered
	 */
	protected static final String CEILING_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getCeiling() <em>Ceiling</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCeiling()
	 * @generated
	 * @ordered
	 */
	protected String ceiling = CEILING_EDEFAULT;

	/**
	 * The default value of the '{@link #getMemorySizeFootprint() <em>Memory Size Footprint</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMemorySizeFootprint()
	 * @generated
	 * @ordered
	 */
	protected static final String MEMORY_SIZE_FOOTPRINT_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getMemorySizeFootprint() <em>Memory Size Footprint</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMemorySizeFootprint()
	 * @generated
	 * @ordered
	 */
	protected String memorySizeFootprint = MEMORY_SIZE_FOOTPRINT_EDEFAULT;

	/**
	 * The default value of the '{@link #getStackSize() <em>Stack Size</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStackSize()
	 * @generated
	 * @ordered
	 */
	protected static final String STACK_SIZE_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getStackSize() <em>Stack Size</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getStackSize()
	 * @generated
	 * @ordered
	 */
	protected String stackSize = STACK_SIZE_EDEFAULT;

	/**
	 * The default value of the '{@link #getHeapSize() <em>Heap Size</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHeapSize()
	 * @generated
	 * @ordered
	 */
	protected static final String HEAP_SIZE_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getHeapSize() <em>Heap Size</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHeapSize()
	 * @generated
	 * @ordered
	 */
	protected String heapSize = HEAP_SIZE_EDEFAULT;

	/**
	 * The cached value of the '{@link #getSlot() <em>Slot</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSlot()
	 * @generated
	 * @ordered
	 */
	protected Slot slot;

	/**
	 * The cached value of the '{@link #getBase_Comment() <em>Base Comment</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBase_Comment()
	 * @generated
	 * @ordered
	 */
	protected Comment base_Comment;

	/**
	 * The default value of the '{@link #getOccKind() <em>Occ Kind</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOccKind()
	 * @generated
	 * @ordered
	 */
	protected static final String OCC_KIND_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getOccKind() <em>Occ Kind</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOccKind()
	 * @generated
	 * @ordered
	 */
	protected String occKind = OCC_KIND_EDEFAULT;

	/**
	 * The default value of the '{@link #getProtection() <em>Protection</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getProtection()
	 * @generated
	 * @ordered
	 */
	protected static final CallConcurrencyKind PROTECTION_EDEFAULT = CallConcurrencyKind.SEQUENTIAL;

	/**
	 * The cached value of the '{@link #getProtection() <em>Protection</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getProtection()
	 * @generated
	 * @ordered
	 */
	protected CallConcurrencyKind protection = PROTECTION_EDEFAULT;

	/**
	 * The default value of the '{@link #getRlDl() <em>Rl Dl</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRlDl()
	 * @generated
	 * @ordered
	 */
	protected static final String RL_DL_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getRlDl() <em>Rl Dl</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRlDl()
	 * @generated
	 * @ordered
	 */
	protected String rlDl = RL_DL_EDEFAULT;

	/**
	 * The cached value of the '{@link #getContext() <em>Context</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getContext()
	 * @generated
	 * @ordered
	 */
	protected BehavioralFeature context;

	/**
	 * The cached value of the '{@link #getRespT() <em>Resp T</em>}' attribute list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getRespT()
	 * @generated
	 * @ordered
	 */
	protected EList<String> respT;

	/**
	 * The cached value of the '{@link #getBlockT() <em>Block T</em>}' attribute list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getBlockT()
	 * @generated
	 * @ordered
	 */
	protected EList<String> blockT;

	/**
	 * The cached value of the '{@link #getOperationReqForSporadicOcc() <em>Operation Req For Sporadic Occ</em>}' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOperationReqForSporadicOcc()
	 * @generated
	 * @ordered
	 */
	protected EList<Operation> operationReqForSporadicOcc;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CHRtSpecificationImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return RTComponentModelPackage.Literals.CH_RT_SPECIFICATION;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Property getPartWithPort() {
		if (partWithPort != null && partWithPort.eIsProxy()) {
			InternalEObject oldPartWithPort = (InternalEObject)partWithPort;
			partWithPort = (Property)eResolveProxy(oldPartWithPort);
			if (partWithPort != oldPartWithPort) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT, oldPartWithPort, partWithPort));
			}
		}
		return partWithPort;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Property basicGetPartWithPort() {
		return partWithPort;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPartWithPort(Property newPartWithPort) {
		Property oldPartWithPort = partWithPort;
		partWithPort = newPartWithPort;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT, oldPartWithPort, partWithPort));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getWCET() {
		return wcet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setWCET(String newWCET) {
		String oldWCET = wcet;
		wcet = newWCET;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__WCET, oldWCET, wcet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getLocalWCET() {
		return localWCET;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLocalWCET(String newLocalWCET) {
		String oldLocalWCET = localWCET;
		localWCET = newLocalWCET;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__LOCAL_WCET, oldLocalWCET, localWCET));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getRelativePriority() {
		return relativePriority;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRelativePriority(String newRelativePriority) {
		String oldRelativePriority = relativePriority;
		relativePriority = newRelativePriority;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__RELATIVE_PRIORITY, oldRelativePriority, relativePriority));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getCeiling() {
		return ceiling;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCeiling(String newCeiling) {
		String oldCeiling = ceiling;
		ceiling = newCeiling;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__CEILING, oldCeiling, ceiling));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getMemorySizeFootprint() {
		return memorySizeFootprint;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMemorySizeFootprint(String newMemorySizeFootprint) {
		String oldMemorySizeFootprint = memorySizeFootprint;
		memorySizeFootprint = newMemorySizeFootprint;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__MEMORY_SIZE_FOOTPRINT, oldMemorySizeFootprint, memorySizeFootprint));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getStackSize() {
		return stackSize;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStackSize(String newStackSize) {
		String oldStackSize = stackSize;
		stackSize = newStackSize;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__STACK_SIZE, oldStackSize, stackSize));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getHeapSize() {
		return heapSize;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setHeapSize(String newHeapSize) {
		String oldHeapSize = heapSize;
		heapSize = newHeapSize;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__HEAP_SIZE, oldHeapSize, heapSize));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Slot getSlot() {
		if (slot != null && slot.eIsProxy()) {
			InternalEObject oldSlot = (InternalEObject)slot;
			slot = (Slot)eResolveProxy(oldSlot);
			if (slot != oldSlot) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT, oldSlot, slot));
			}
		}
		return slot;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Slot basicGetSlot() {
		return slot;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSlot(Slot newSlot) {
		Slot oldSlot = slot;
		slot = newSlot;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT, oldSlot, slot));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Comment getBase_Comment() {
		if (base_Comment != null && base_Comment.eIsProxy()) {
			InternalEObject oldBase_Comment = (InternalEObject)base_Comment;
			base_Comment = (Comment)eResolveProxy(oldBase_Comment);
			if (base_Comment != oldBase_Comment) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT, oldBase_Comment, base_Comment));
			}
		}
		return base_Comment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Comment basicGetBase_Comment() {
		return base_Comment;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setBase_Comment(Comment newBase_Comment) {
		Comment oldBase_Comment = base_Comment;
		base_Comment = newBase_Comment;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT, oldBase_Comment, base_Comment));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getOccKind() {
		return occKind;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOccKind(String newOccKind) {
		String oldOccKind = occKind;
		occKind = newOccKind;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__OCC_KIND, oldOccKind, occKind));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public CallConcurrencyKind getProtection() {
		return protection;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setProtection(CallConcurrencyKind newProtection) {
		CallConcurrencyKind oldProtection = protection;
		protection = newProtection == null ? PROTECTION_EDEFAULT : newProtection;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__PROTECTION, oldProtection, protection));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getRlDl() {
		return rlDl;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setRlDl(String newRlDl) {
		String oldRlDl = rlDl;
		rlDl = newRlDl;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__RL_DL, oldRlDl, rlDl));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BehavioralFeature getContext() {
		if (context != null && context.eIsProxy()) {
			InternalEObject oldContext = (InternalEObject)context;
			context = (BehavioralFeature)eResolveProxy(oldContext);
			if (context != oldContext) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT, oldContext, context));
			}
		}
		return context;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BehavioralFeature basicGetContext() {
		return context;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setContext(BehavioralFeature newContext) {
		BehavioralFeature oldContext = context;
		context = newContext;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT, oldContext, context));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<String> getRespT() {
		if (respT == null) {
			respT = new EDataTypeUniqueEList<String>(String.class, this, RTComponentModelPackage.CH_RT_SPECIFICATION__RESP_T);
		}
		return respT;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<String> getBlockT() {
		if (blockT == null) {
			blockT = new EDataTypeUniqueEList<String>(String.class, this, RTComponentModelPackage.CH_RT_SPECIFICATION__BLOCK_T);
		}
		return blockT;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EList<Operation> getOperationReqForSporadicOcc() {
		if (operationReqForSporadicOcc == null) {
			operationReqForSporadicOcc = new EObjectResolvingEList<Operation>(Operation.class, this, RTComponentModelPackage.CH_RT_SPECIFICATION__OPERATION_REQ_FOR_SPORADIC_OCC);
		}
		return operationReqForSporadicOcc;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Operation getOperationReqForSporadicOcc(String name, EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
		return getOperationReqForSporadicOcc(name, ownedParameterNames, ownedParameterTypes, false);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Operation getOperationReqForSporadicOcc(String name, EList<String> ownedParameterNames, EList<Type> ownedParameterTypes, boolean ignoreCase) {
		operationReqForSporadicOccLoop: for (Operation operationReqForSporadicOcc : getOperationReqForSporadicOcc()) {
			if (name != null && !(ignoreCase ? name.equalsIgnoreCase(operationReqForSporadicOcc.getName()) : name.equals(operationReqForSporadicOcc.getName())))
				continue operationReqForSporadicOccLoop;
			EList<Parameter> ownedParameterList = operationReqForSporadicOcc.getOwnedParameters();
			int ownedParameterListSize = ownedParameterList.size();
			if (ownedParameterNames != null && ownedParameterNames.size() != ownedParameterListSize || (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
				continue  operationReqForSporadicOccLoop;
			for (int j = 0; j < ownedParameterListSize; j++) {
				Parameter ownedParameter = ownedParameterList.get(j);
				if (ownedParameterNames != null && !(ignoreCase ? (ownedParameterNames.get(j)).equalsIgnoreCase(ownedParameter.getName()) : ownedParameterNames.get(j).equals(ownedParameter.getName())))
					continue operationReqForSporadicOccLoop;
				if (ownedParameterTypes != null && !ownedParameterTypes.get(j).equals(ownedParameter.getType()))
					continue operationReqForSporadicOccLoop;
			}
			return operationReqForSporadicOcc;
		}
		return null;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT:
				if (resolve) return getPartWithPort();
				return basicGetPartWithPort();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__WCET:
				return getWCET();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__LOCAL_WCET:
				return getLocalWCET();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RELATIVE_PRIORITY:
				return getRelativePriority();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CEILING:
				return getCeiling();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__MEMORY_SIZE_FOOTPRINT:
				return getMemorySizeFootprint();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__STACK_SIZE:
				return getStackSize();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__HEAP_SIZE:
				return getHeapSize();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT:
				if (resolve) return getSlot();
				return basicGetSlot();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT:
				if (resolve) return getBase_Comment();
				return basicGetBase_Comment();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OCC_KIND:
				return getOccKind();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PROTECTION:
				return getProtection();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RL_DL:
				return getRlDl();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT:
				if (resolve) return getContext();
				return basicGetContext();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RESP_T:
				return getRespT();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BLOCK_T:
				return getBlockT();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OPERATION_REQ_FOR_SPORADIC_OCC:
				return getOperationReqForSporadicOcc();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@SuppressWarnings("unchecked")
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT:
				setPartWithPort((Property)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__WCET:
				setWCET((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__LOCAL_WCET:
				setLocalWCET((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RELATIVE_PRIORITY:
				setRelativePriority((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CEILING:
				setCeiling((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__MEMORY_SIZE_FOOTPRINT:
				setMemorySizeFootprint((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__STACK_SIZE:
				setStackSize((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__HEAP_SIZE:
				setHeapSize((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT:
				setSlot((Slot)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT:
				setBase_Comment((Comment)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OCC_KIND:
				setOccKind((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PROTECTION:
				setProtection((CallConcurrencyKind)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RL_DL:
				setRlDl((String)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT:
				setContext((BehavioralFeature)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RESP_T:
				getRespT().clear();
				getRespT().addAll((Collection<? extends String>)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BLOCK_T:
				getBlockT().clear();
				getBlockT().addAll((Collection<? extends String>)newValue);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OPERATION_REQ_FOR_SPORADIC_OCC:
				getOperationReqForSporadicOcc().clear();
				getOperationReqForSporadicOcc().addAll((Collection<? extends Operation>)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT:
				setPartWithPort((Property)null);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__WCET:
				setWCET(WCET_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__LOCAL_WCET:
				setLocalWCET(LOCAL_WCET_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RELATIVE_PRIORITY:
				setRelativePriority(RELATIVE_PRIORITY_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CEILING:
				setCeiling(CEILING_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__MEMORY_SIZE_FOOTPRINT:
				setMemorySizeFootprint(MEMORY_SIZE_FOOTPRINT_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__STACK_SIZE:
				setStackSize(STACK_SIZE_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__HEAP_SIZE:
				setHeapSize(HEAP_SIZE_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT:
				setSlot((Slot)null);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT:
				setBase_Comment((Comment)null);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OCC_KIND:
				setOccKind(OCC_KIND_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PROTECTION:
				setProtection(PROTECTION_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RL_DL:
				setRlDl(RL_DL_EDEFAULT);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT:
				setContext((BehavioralFeature)null);
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RESP_T:
				getRespT().clear();
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BLOCK_T:
				getBlockT().clear();
				return;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OPERATION_REQ_FOR_SPORADIC_OCC:
				getOperationReqForSporadicOcc().clear();
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PART_WITH_PORT:
				return partWithPort != null;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__WCET:
				return WCET_EDEFAULT == null ? wcet != null : !WCET_EDEFAULT.equals(wcet);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__LOCAL_WCET:
				return LOCAL_WCET_EDEFAULT == null ? localWCET != null : !LOCAL_WCET_EDEFAULT.equals(localWCET);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RELATIVE_PRIORITY:
				return RELATIVE_PRIORITY_EDEFAULT == null ? relativePriority != null : !RELATIVE_PRIORITY_EDEFAULT.equals(relativePriority);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CEILING:
				return CEILING_EDEFAULT == null ? ceiling != null : !CEILING_EDEFAULT.equals(ceiling);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__MEMORY_SIZE_FOOTPRINT:
				return MEMORY_SIZE_FOOTPRINT_EDEFAULT == null ? memorySizeFootprint != null : !MEMORY_SIZE_FOOTPRINT_EDEFAULT.equals(memorySizeFootprint);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__STACK_SIZE:
				return STACK_SIZE_EDEFAULT == null ? stackSize != null : !STACK_SIZE_EDEFAULT.equals(stackSize);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__HEAP_SIZE:
				return HEAP_SIZE_EDEFAULT == null ? heapSize != null : !HEAP_SIZE_EDEFAULT.equals(heapSize);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__SLOT:
				return slot != null;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BASE_COMMENT:
				return base_Comment != null;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OCC_KIND:
				return OCC_KIND_EDEFAULT == null ? occKind != null : !OCC_KIND_EDEFAULT.equals(occKind);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__PROTECTION:
				return protection != PROTECTION_EDEFAULT;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RL_DL:
				return RL_DL_EDEFAULT == null ? rlDl != null : !RL_DL_EDEFAULT.equals(rlDl);
			case RTComponentModelPackage.CH_RT_SPECIFICATION__CONTEXT:
				return context != null;
			case RTComponentModelPackage.CH_RT_SPECIFICATION__RESP_T:
				return respT != null && !respT.isEmpty();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__BLOCK_T:
				return blockT != null && !blockT.isEmpty();
			case RTComponentModelPackage.CH_RT_SPECIFICATION__OPERATION_REQ_FOR_SPORADIC_OCC:
				return operationReqForSporadicOcc != null && !operationReqForSporadicOcc.isEmpty();
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (WCET: ");
		result.append(wcet);
		result.append(", localWCET: ");
		result.append(localWCET);
		result.append(", relativePriority: ");
		result.append(relativePriority);
		result.append(", ceiling: ");
		result.append(ceiling);
		result.append(", memorySizeFootprint: ");
		result.append(memorySizeFootprint);
		result.append(", stackSize: ");
		result.append(stackSize);
		result.append(", heapSize: ");
		result.append(heapSize);
		result.append(", occKind: ");
		result.append(occKind);
		result.append(", protection: ");
		result.append(protection);
		result.append(", rlDl: ");
		result.append(rlDl);
		result.append(", respT: ");
		result.append(respT);
		result.append(", blockT: ");
		result.append(blockT);
		result.append(')');
		return result.toString();
	}

} //CHRtSpecificationImpl
