blob: 025e68b07473e7abc7f06726b050c22c830a77f9 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2011 Nicolas Deblock & Cedric Dumoulin & Manuel Giles.
*
*
* 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:
* Nicolas Deblock nico.deblock@gmail.com - Meta-model conception
* Cedric Dumoulin Cedric.dumoulin@lifl.fr - Meta-model conception
* Manuel Giles giles.manu@live.fr - Meta-model conception
*
*****************************************************************************/
/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl;
import java.util.Collection;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.notify.NotifyingList;
import org.eclipse.emf.common.util.ECollections;
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.util.EObjectResolvingEList;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.InternalEList;
import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.Signature;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTCompilationUnit;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTField;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTJavaElement;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTMethod;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTParent;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JDTType;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.JdtmmPackage;
import org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.utils.DerivedNotifyingEList;
import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentWithInverseEList;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>JDT Type</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getChildren <em>Children</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getMethods <em>Methods</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getFields <em>Fields</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getCompilationUnit <em>Compilation Unit</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isClass <em>Class</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isInterface <em>Interface</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isEnum <em>Enum</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isAbstract <em>Abstract</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isFinal <em>Final</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#isStatic <em>Static</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getTypes <em>Types</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getOwner <em>Owner</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getSuperInterfaces <em>Super Interfaces</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getSuperClass <em>Super Class</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getSuperInterfaceNames <em>Super Interface Names</em>}</li>
* <li>{@link org.eclipse.papyrus.designer.languages.java.generator.metamodel.jdt.jdtmm.impl.JDTTypeImpl#getSuperClassName <em>Super Class Name</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public abstract class JDTTypeImpl extends JDTMemberImpl implements JDTType {
/**
* The cached value of the '{@link #getMethods() <em>Methods</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getMethods()
* @generated
* @ordered
*/
protected EList<JDTMethod> methods;
/**
* The cached value of the '{@link #getFields() <em>Fields</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getFields()
* @generated
* @ordered
*/
protected EList<JDTField> fields;
/**
* The default value of the '{@link #isClass() <em>Class</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isClass()
* @generated
* @ordered
*/
protected static final boolean CLASS_EDEFAULT = false;
/**
* The cached value of the '{@link #isClass() <em>Class</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isClass()
* @generated
* @ordered
*/
protected boolean class_ = CLASS_EDEFAULT;
/**
* The default value of the '{@link #isInterface() <em>Interface</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isInterface()
* @generated
* @ordered
*/
protected static final boolean INTERFACE_EDEFAULT = false;
/**
* The cached value of the '{@link #isInterface() <em>Interface</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isInterface()
* @generated
* @ordered
*/
protected boolean interface_ = INTERFACE_EDEFAULT;
/**
* The default value of the '{@link #isEnum() <em>Enum</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isEnum()
* @generated
* @ordered
*/
protected static final boolean ENUM_EDEFAULT = false;
/**
* The cached value of the '{@link #isEnum() <em>Enum</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isEnum()
* @generated
* @ordered
*/
protected boolean enum_ = ENUM_EDEFAULT;
/**
* The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isAbstract()
* @generated
* @ordered
*/
protected static final boolean ABSTRACT_EDEFAULT = false;
/**
* The default value of the '{@link #isFinal() <em>Final</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isFinal()
* @generated
* @ordered
*/
protected static final boolean FINAL_EDEFAULT = false;
/**
* The default value of the '{@link #isStatic() <em>Static</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #isStatic()
* @generated
* @ordered
*/
protected static final boolean STATIC_EDEFAULT = false;
/**
* The cached value of the '{@link #getTypes() <em>Types</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getTypes()
* @generated
* @ordered
*/
protected EList<JDTType> types;
/**
* The cached value of the '{@link #getSuperInterfaces() <em>Super Interfaces</em>}' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getSuperInterfaces()
* @generated
* @ordered
*/
protected EList<JDTType> superInterfaces;
/**
* The cached value of the '{@link #getSuperClass() <em>Super Class</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getSuperClass()
* @generated
* @ordered
*/
protected JDTType superClass;
/**
* The default value of the '{@link #getSuperClassName() <em>Super Class Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getSuperClassName()
* @generated
* @ordered
*/
protected static final String SUPER_CLASS_NAME_EDEFAULT = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
protected JDTTypeImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return JdtmmPackage.Literals.JDT_TYPE;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public EList<JDTJavaElement> getChildren() {
return new DerivedUnionEObjectEList<JDTJavaElement>(JDTJavaElement.class, this, JdtmmPackage.JDT_TYPE__CHILDREN, CHILDREN_ESUBSETS);
}
/**
* The array of subset feature identifiers for the '{@link #getChildren() <em>Children</em>}' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getChildren()
* @generated
* @ordered
*/
protected static final int[] CHILDREN_ESUBSETS = new int[] { JdtmmPackage.JDT_TYPE__METHODS, JdtmmPackage.JDT_TYPE__FIELDS, JdtmmPackage.JDT_TYPE__TYPES };
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public EList<JDTMethod> getMethods() {
if (methods == null) {
methods = new SubsetSupersetEObjectContainmentWithInverseEList<JDTMethod>(JDTMethod.class, this, JdtmmPackage.JDT_TYPE__METHODS, METHODS_ESUPERSETS, null, JdtmmPackage.JDT_METHOD__OWNER);
}
return methods;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public JDTCompilationUnit getCompilationUnit() {
if (eContainerFeatureID() != JdtmmPackage.JDT_TYPE__COMPILATION_UNIT) {
return null;
}
return (JDTCompilationUnit) eContainer();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public NotificationChain basicSetCompilationUnit(JDTCompilationUnit newCompilationUnit, NotificationChain msgs) {
msgs = eBasicSetContainer((InternalEObject) newCompilationUnit, JdtmmPackage.JDT_TYPE__COMPILATION_UNIT, msgs);
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setCompilationUnit(JDTCompilationUnit newCompilationUnit) {
if (newCompilationUnit != eInternalContainer() || (eContainerFeatureID() != JdtmmPackage.JDT_TYPE__COMPILATION_UNIT && newCompilationUnit != null)) {
if (EcoreUtil.isAncestor(this, newCompilationUnit)) {
throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
}
NotificationChain msgs = null;
if (eInternalContainer() != null) {
msgs = eBasicRemoveFromContainer(msgs);
}
if (newCompilationUnit != null) {
msgs = ((InternalEObject) newCompilationUnit).eInverseAdd(this, JdtmmPackage.JDT_COMPILATION_UNIT__TYPES, JDTCompilationUnit.class, msgs);
}
msgs = basicSetCompilationUnit(newCompilationUnit, msgs);
if (msgs != null) {
msgs.dispatch();
}
}
else if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__COMPILATION_UNIT, newCompilationUnit, newCompilationUnit));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public boolean isSetCompilationUnit() {
return getCompilationUnit() != null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean isClass() {
return class_;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setClass_(boolean newClass) {
boolean oldClass = class_;
class_ = newClass;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__CLASS, oldClass, class_));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean isInterface() {
return interface_;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setInterface(boolean newInterface) {
boolean oldInterface = interface_;
interface_ = newInterface;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__INTERFACE, oldInterface, interface_));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean isEnum() {
return enum_;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setEnum(boolean newEnum) {
boolean oldEnum = enum_;
enum_ = newEnum;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__ENUM, oldEnum, enum_));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public boolean isAbstract() {
// Ensure that you remove @generated or mark it @generated NOT
return isFlagSet(Flags.AccAbstract);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public void setAbstract(boolean newAbstract) {
// Ensure that you remove @generated or mark it @generated NOT
setFlag(Flags.AccAbstract, newAbstract);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public boolean isFinal() {
// TODO: implement this method to return the 'Final' attribute
// Ensure that you remove @generated or mark it @generated NOT
return isFlagSet(Flags.AccFinal);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public void setFinal(boolean newFinal) {
setFlag(Flags.AccFinal, newFinal);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public boolean isStatic() {
return isFlagSet(Flags.AccStatic);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public void setStatic(boolean newStatic) {
setFlag(Flags.AccStatic, newStatic);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public EList<JDTType> getTypes() {
if (types == null) {
types = new SubsetSupersetEObjectContainmentWithInverseEList<JDTType>(JDTType.class, this, JdtmmPackage.JDT_TYPE__TYPES, TYPES_ESUPERSETS, null, JdtmmPackage.JDT_TYPE__OWNER);
}
return types;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public JDTType getOwner() {
if (eContainerFeatureID() != JdtmmPackage.JDT_TYPE__OWNER) {
return null;
}
return (JDTType) eContainer();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public NotificationChain basicSetOwner(JDTType newOwner, NotificationChain msgs) {
msgs = eBasicSetContainer((InternalEObject) newOwner, JdtmmPackage.JDT_TYPE__OWNER, msgs);
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setOwner(JDTType newOwner) {
if (newOwner != eInternalContainer() || (eContainerFeatureID() != JdtmmPackage.JDT_TYPE__OWNER && newOwner != null)) {
if (EcoreUtil.isAncestor(this, newOwner)) {
throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
}
NotificationChain msgs = null;
if (eInternalContainer() != null) {
msgs = eBasicRemoveFromContainer(msgs);
}
if (newOwner != null) {
msgs = ((InternalEObject) newOwner).eInverseAdd(this, JdtmmPackage.JDT_TYPE__TYPES, JDTType.class, msgs);
}
msgs = basicSetOwner(newOwner, msgs);
if (msgs != null) {
msgs.dispatch();
}
}
else if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__OWNER, newOwner, newOwner));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public boolean isSetOwner() {
return getOwner() != null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public EList<JDTType> getSuperInterfaces() {
if (superInterfaces == null) {
superInterfaces = new EObjectResolvingEList<JDTType>(JDTType.class, this, JdtmmPackage.JDT_TYPE__SUPER_INTERFACES);
}
return superInterfaces;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public JDTType getSuperClass() {
if (superClass != null && superClass.eIsProxy()) {
InternalEObject oldSuperClass = (InternalEObject) superClass;
superClass = (JDTType) eResolveProxy(oldSuperClass);
if (superClass != oldSuperClass) {
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.RESOLVE, JdtmmPackage.JDT_TYPE__SUPER_CLASS, oldSuperClass, superClass));
}
}
}
return superClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public JDTType basicGetSuperClass() {
return superClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setSuperClass(JDTType newSuperClass) {
JDTType oldSuperClass = superClass;
superClass = newSuperClass;
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, JdtmmPackage.JDT_TYPE__SUPER_CLASS, oldSuperClass, superClass));
}
}
DerivedNotifyingEList<String, JDTType> superInterfaceNames;
/**
* Returns the names of interfaces that this type implements or extends,
* in the order in which they are listed in the source.
* <p>
* For classes, this gives the interfaces that this class implements. For interfaces, this gives the interfaces that this interface extends. An empty collection is returned if this type does not implement or extend any interfaces. * <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public EList<String> getSuperInterfaceNames() {
// TODO: implement this method to return the 'Super Interface Names' attribute list
// Ensure that you remove @generated or mark it @generated NOT
// Return empty collection if there is nothing
if (getSuperInterfaces().size() == 0) {
return ECollections.emptyEList();
}
if (superInterfaceNames == null) {
// Create a derived list that return the names instead of the original elements.
superInterfaceNames = new DerivedNotifyingEList<String, JDTType>((NotifyingList<JDTType>) getSuperInterfaces()) {
/**
* Return the name of the JDTtype.
*/
@Override
protected String doGet(int index) {
return getBackupList().get(index).getElementName();
}
};
}
return superInterfaceNames;
}
/**
* Returns the name of this type's superclass, or <code>null</code> for source types that do not specify a superclass.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public String getSuperClassName() {
// TODO: implement this method to return the 'Super Class Name' attribute
// Ensure that you remove @generated or mark it @generated NOT
if (getSuperClass() != null) {
return getSuperClass().getElementName();
}
// No superclass
return null;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public EList<JDTField> getFields() {
if (fields == null) {
fields = new SubsetSupersetEObjectContainmentWithInverseEList<JDTField>(JDTField.class, this, JdtmmPackage.JDT_TYPE__FIELDS, FIELDS_ESUPERSETS, null, JdtmmPackage.JDT_FIELD__OWNER);
}
return fields;
}
/**
* The array of superset feature identifiers for the '{@link #getMethods() <em>Methods</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getMethods()
* @generated
* @ordered
*/
protected static final int[] METHODS_ESUPERSETS = new int[] { JdtmmPackage.JDT_TYPE__CHILDREN };
/**
* The array of superset feature identifiers for the '{@link #getFields() <em>Fields</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getFields()
* @generated
* @ordered
*/
protected static final int[] FIELDS_ESUPERSETS = new int[] { JdtmmPackage.JDT_TYPE__CHILDREN };
/**
* The array of superset feature identifiers for the '{@link #getTypes() <em>Types</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getTypes()
* @generated
* @ordered
*/
protected static final int[] TYPES_ESUPERSETS = new int[] { JdtmmPackage.JDT_TYPE__CHILDREN };
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case JdtmmPackage.JDT_TYPE__METHODS:
return ((InternalEList<InternalEObject>) (InternalEList<?>) getMethods()).basicAdd(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__FIELDS:
return ((InternalEList<InternalEObject>) (InternalEList<?>) getFields()).basicAdd(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
if (eInternalContainer() != null) {
msgs = eBasicRemoveFromContainer(msgs);
}
return basicSetCompilationUnit((JDTCompilationUnit) otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__TYPES:
return ((InternalEList<InternalEObject>) (InternalEList<?>) getTypes()).basicAdd(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__OWNER:
if (eInternalContainer() != null) {
msgs = eBasicRemoveFromContainer(msgs);
}
return basicSetOwner((JDTType) otherEnd, msgs);
}
return super.eInverseAdd(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case JdtmmPackage.JDT_TYPE__METHODS:
return ((InternalEList<?>) getMethods()).basicRemove(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__FIELDS:
return ((InternalEList<?>) getFields()).basicRemove(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
return basicSetCompilationUnit(null, msgs);
case JdtmmPackage.JDT_TYPE__TYPES:
return ((InternalEList<?>) getTypes()).basicRemove(otherEnd, msgs);
case JdtmmPackage.JDT_TYPE__OWNER:
return basicSetOwner(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
switch (eContainerFeatureID()) {
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
return eInternalContainer().eInverseRemove(this, JdtmmPackage.JDT_COMPILATION_UNIT__TYPES, JDTCompilationUnit.class, msgs);
case JdtmmPackage.JDT_TYPE__OWNER:
return eInternalContainer().eInverseRemove(this, JdtmmPackage.JDT_TYPE__TYPES, JDTType.class, msgs);
}
return super.eBasicRemoveFromContainerFeature(msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case JdtmmPackage.JDT_TYPE__METHODS:
return getMethods();
case JdtmmPackage.JDT_TYPE__FIELDS:
return getFields();
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
return getCompilationUnit();
case JdtmmPackage.JDT_TYPE__CLASS:
return isClass();
case JdtmmPackage.JDT_TYPE__INTERFACE:
return isInterface();
case JdtmmPackage.JDT_TYPE__ENUM:
return isEnum();
case JdtmmPackage.JDT_TYPE__ABSTRACT:
return isAbstract();
case JdtmmPackage.JDT_TYPE__FINAL:
return isFinal();
case JdtmmPackage.JDT_TYPE__STATIC:
return isStatic();
case JdtmmPackage.JDT_TYPE__TYPES:
return getTypes();
case JdtmmPackage.JDT_TYPE__OWNER:
return getOwner();
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACES:
return getSuperInterfaces();
case JdtmmPackage.JDT_TYPE__SUPER_CLASS:
if (resolve) {
return getSuperClass();
}
return basicGetSuperClass();
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACE_NAMES:
return getSuperInterfaceNames();
case JdtmmPackage.JDT_TYPE__SUPER_CLASS_NAME:
return getSuperClassName();
}
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 JdtmmPackage.JDT_TYPE__METHODS:
getMethods().clear();
getMethods().addAll((Collection<? extends JDTMethod>) newValue);
return;
case JdtmmPackage.JDT_TYPE__FIELDS:
getFields().clear();
getFields().addAll((Collection<? extends JDTField>) newValue);
return;
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
setCompilationUnit((JDTCompilationUnit) newValue);
return;
case JdtmmPackage.JDT_TYPE__CLASS:
setClass_((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__INTERFACE:
setInterface((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__ENUM:
setEnum((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__ABSTRACT:
setAbstract((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__FINAL:
setFinal((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__STATIC:
setStatic((Boolean) newValue);
return;
case JdtmmPackage.JDT_TYPE__TYPES:
getTypes().clear();
getTypes().addAll((Collection<? extends JDTType>) newValue);
return;
case JdtmmPackage.JDT_TYPE__OWNER:
setOwner((JDTType) newValue);
return;
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACES:
getSuperInterfaces().clear();
getSuperInterfaces().addAll((Collection<? extends JDTType>) newValue);
return;
case JdtmmPackage.JDT_TYPE__SUPER_CLASS:
setSuperClass((JDTType) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case JdtmmPackage.JDT_TYPE__METHODS:
getMethods().clear();
return;
case JdtmmPackage.JDT_TYPE__FIELDS:
getFields().clear();
return;
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
setCompilationUnit((JDTCompilationUnit) null);
return;
case JdtmmPackage.JDT_TYPE__CLASS:
setClass_(CLASS_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__INTERFACE:
setInterface(INTERFACE_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__ENUM:
setEnum(ENUM_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__ABSTRACT:
setAbstract(ABSTRACT_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__FINAL:
setFinal(FINAL_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__STATIC:
setStatic(STATIC_EDEFAULT);
return;
case JdtmmPackage.JDT_TYPE__TYPES:
getTypes().clear();
return;
case JdtmmPackage.JDT_TYPE__OWNER:
setOwner((JDTType) null);
return;
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACES:
getSuperInterfaces().clear();
return;
case JdtmmPackage.JDT_TYPE__SUPER_CLASS:
setSuperClass((JDTType) null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case JdtmmPackage.JDT_TYPE__METHODS:
return methods != null && !methods.isEmpty();
case JdtmmPackage.JDT_TYPE__FIELDS:
return fields != null && !fields.isEmpty();
case JdtmmPackage.JDT_TYPE__COMPILATION_UNIT:
return isSetCompilationUnit();
case JdtmmPackage.JDT_TYPE__CLASS:
return class_ != CLASS_EDEFAULT;
case JdtmmPackage.JDT_TYPE__INTERFACE:
return interface_ != INTERFACE_EDEFAULT;
case JdtmmPackage.JDT_TYPE__ENUM:
return enum_ != ENUM_EDEFAULT;
case JdtmmPackage.JDT_TYPE__ABSTRACT:
return isAbstract() != ABSTRACT_EDEFAULT;
case JdtmmPackage.JDT_TYPE__FINAL:
return isFinal() != FINAL_EDEFAULT;
case JdtmmPackage.JDT_TYPE__STATIC:
return isStatic() != STATIC_EDEFAULT;
case JdtmmPackage.JDT_TYPE__TYPES:
return types != null && !types.isEmpty();
case JdtmmPackage.JDT_TYPE__OWNER:
return isSetOwner();
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACES:
return superInterfaces != null && !superInterfaces.isEmpty();
case JdtmmPackage.JDT_TYPE__SUPER_CLASS:
return superClass != null;
case JdtmmPackage.JDT_TYPE__SUPER_INTERFACE_NAMES:
return !getSuperInterfaceNames().isEmpty();
case JdtmmPackage.JDT_TYPE__SUPER_CLASS_NAME:
return SUPER_CLASS_NAME_EDEFAULT == null ? getSuperClassName() != null : !SUPER_CLASS_NAME_EDEFAULT.equals(getSuperClassName());
}
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(" (class: ");
result.append(class_);
result.append(", interface: ");
result.append(interface_);
result.append(", enum: ");
result.append(enum_);
result.append(')');
return result.toString();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean isSetChildren() {
return super.isSetChildren()
|| eIsSet(JdtmmPackage.JDT_TYPE__METHODS)
|| eIsSet(JdtmmPackage.JDT_TYPE__FIELDS)
|| eIsSet(JdtmmPackage.JDT_TYPE__TYPES);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public JDTParent getParent() {
return getCompilationUnit();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public JDTParent basicGetParent() {
return getCompilationUnit();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public boolean isSetParent() {
return false;
}
@Override
public String getJDTSignature() {
return Signature.createTypeSignature(getElementName(), false);
}
@Override
public String getQualifiedName() {
// if it's a intern class, it's special
if (getOwner() != null) {
return getOwner().getQualifiedName() + "." + getElementName();
}
// else, return the qualified name of the package + "." + the name of the type
if (getCompilationUnit().getPackageFragment() == null) {
return getElementName();
}
if (getCompilationUnit().getPackageFragment().getQualifiedName() == null) {
return getElementName();
}
return getCompilationUnit().getPackageFragment().getQualifiedName() + "." + getElementName();
}
} // JDTTypeImpl