/** * <copyright> * </copyright> * * $Id$ */ package domain.impl; import domain.ApiClass; import domain.DomainPackage; import domain.Field; import domain.Method; import domain.Product; import java.util.Collection; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; 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.EObjectContainmentWithInverseEList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.util.InternalEList; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Api Class</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link domain.impl.ApiClassImpl#getSimpleName <em>Simple Name</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getPackageName <em>Package Name</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getMethods <em>Methods</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getFields <em>Fields</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getProduct <em>Product</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getExtends <em>Extends</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getImplements <em>Implements</em>}</li> * <li>{@link domain.impl.ApiClassImpl#isPrivate <em>Private</em>}</li> * <li>{@link domain.impl.ApiClassImpl#isAnonymous <em>Anonymous</em>}</li> * <li>{@link domain.impl.ApiClassImpl#getReferencedClasses <em>Referenced Classes</em>}</li> * </ul> * </p> * * @generated */ public class ApiClassImpl extends CodeElementImpl implements ApiClass { /** * The default value of the '{@link #getSimpleName() <em>Simple Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSimpleName() * @generated * @ordered */ protected static final String SIMPLE_NAME_EDEFAULT = null; /** * The cached value of the '{@link #getSimpleName() <em>Simple Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSimpleName() * @generated * @ordered */ protected String simpleName = SIMPLE_NAME_EDEFAULT; /** * The default value of the '{@link #getPackageName() <em>Package Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getPackageName() * @generated * @ordered */ protected static final String PACKAGE_NAME_EDEFAULT = null; /** * The cached value of the '{@link #getPackageName() <em>Package Name</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getPackageName() * @generated * @ordered */ protected String packageName = PACKAGE_NAME_EDEFAULT; /** * 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<Method> 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<Field> fields; /** * The default value of the '{@link #getExtends() <em>Extends</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getExtends() * @generated * @ordered */ protected static final String EXTENDS_EDEFAULT = null; /** * The cached value of the '{@link #getExtends() <em>Extends</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getExtends() * @generated * @ordered */ protected String extends_ = EXTENDS_EDEFAULT; /** * The default value of the '{@link #getImplements() <em>Implements</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getImplements() * @generated * @ordered */ protected static final String IMPLEMENTS_EDEFAULT = null; /** * The cached value of the '{@link #getImplements() <em>Implements</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getImplements() * @generated * @ordered */ protected String implements_ = IMPLEMENTS_EDEFAULT; /** * The default value of the '{@link #isPrivate() <em>Private</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isPrivate() * @generated * @ordered */ protected static final boolean PRIVATE_EDEFAULT = false; /** * The cached value of the '{@link #isPrivate() <em>Private</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isPrivate() * @generated * @ordered */ protected boolean private_ = PRIVATE_EDEFAULT; /** * This is true if the Private attribute has been set. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ protected boolean privateESet; /** * The default value of the '{@link #isAnonymous() <em>Anonymous</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isAnonymous() * @generated * @ordered */ protected static final boolean ANONYMOUS_EDEFAULT = false; /** * The cached value of the '{@link #isAnonymous() <em>Anonymous</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isAnonymous() * @generated * @ordered */ protected boolean anonymous = ANONYMOUS_EDEFAULT; /** * The cached value of the '{@link #getReferencedClasses() <em>Referenced Classes</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getReferencedClasses() * @generated * @ordered */ protected EList<String> referencedClasses; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected ApiClassImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return DomainPackage.Literals.API_CLASS; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getSimpleName() { return simpleName; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setSimpleName(String newSimpleName) { String oldSimpleName = simpleName; simpleName = newSimpleName; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__SIMPLE_NAME, oldSimpleName, simpleName)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getPackageName() { return packageName; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setPackageName(String newPackageName) { String oldPackageName = packageName; packageName = newPackageName; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__PACKAGE_NAME, oldPackageName, packageName)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Method> getMethods() { if (methods == null) { methods = new EObjectContainmentWithInverseEList<Method>(Method.class, this, DomainPackage.API_CLASS__METHODS, DomainPackage.METHOD__API_CLASS); } return methods; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Field> getFields() { if (fields == null) { fields = new EObjectContainmentWithInverseEList<Field>(Field.class, this, DomainPackage.API_CLASS__FIELDS, DomainPackage.FIELD__API_CLASS); } return fields; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Product getProduct() { if (eContainerFeatureID() != DomainPackage.API_CLASS__PRODUCT) return null; return (Product)eContainer(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public NotificationChain basicSetProduct(Product newProduct, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newProduct, DomainPackage.API_CLASS__PRODUCT, msgs); return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setProduct(Product newProduct) { if (newProduct != eInternalContainer() || (eContainerFeatureID() != DomainPackage.API_CLASS__PRODUCT && newProduct != null)) { if (EcoreUtil.isAncestor(this, newProduct)) throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); NotificationChain msgs = null; if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs); if (newProduct != null) msgs = ((InternalEObject)newProduct).eInverseAdd(this, DomainPackage.PRODUCT__CLASSES, Product.class, msgs); msgs = basicSetProduct(newProduct, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__PRODUCT, newProduct, newProduct)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getExtends() { return extends_; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setExtends(String newExtends) { String oldExtends = extends_; extends_ = newExtends; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__EXTENDS, oldExtends, extends_)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getImplements() { return implements_; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setImplements(String newImplements) { String oldImplements = implements_; implements_ = newImplements; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__IMPLEMENTS, oldImplements, implements_)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isPrivate() { return private_; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setPrivate(boolean newPrivate) { boolean oldPrivate = private_; private_ = newPrivate; boolean oldPrivateESet = privateESet; privateESet = true; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__PRIVATE, oldPrivate, private_, !oldPrivateESet)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void unsetPrivate() { boolean oldPrivate = private_; boolean oldPrivateESet = privateESet; private_ = PRIVATE_EDEFAULT; privateESet = false; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.UNSET, DomainPackage.API_CLASS__PRIVATE, oldPrivate, PRIVATE_EDEFAULT, oldPrivateESet)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isSetPrivate() { return privateESet; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean isAnonymous() { return anonymous; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setAnonymous(boolean newAnonymous) { boolean oldAnonymous = anonymous; anonymous = newAnonymous; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__ANONYMOUS, oldAnonymous, anonymous)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<String> getReferencedClasses() { return referencedClasses; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setReferencedClasses(EList<String> newReferencedClasses) { EList<String> oldReferencedClasses = referencedClasses; referencedClasses = newReferencedClasses; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.API_CLASS__REFERENCED_CLASSES, oldReferencedClasses, referencedClasses)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getFqName() { // TODO: implement this method // Ensure that you remove @generated or mark it @generated NOT throw new UnsupportedOperationException(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String getSourcePath() { // TODO: implement this method // Ensure that you remove @generated or mark it @generated NOT throw new UnsupportedOperationException(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case DomainPackage.API_CLASS__METHODS: return ((InternalEList<InternalEObject>)(InternalEList<?>)getMethods()).basicAdd(otherEnd, msgs); case DomainPackage.API_CLASS__FIELDS: return ((InternalEList<InternalEObject>)(InternalEList<?>)getFields()).basicAdd(otherEnd, msgs); case DomainPackage.API_CLASS__PRODUCT: if (eInternalContainer() != null) msgs = eBasicRemoveFromContainer(msgs); return basicSetProduct((Product)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 DomainPackage.API_CLASS__METHODS: return ((InternalEList<?>)getMethods()).basicRemove(otherEnd, msgs); case DomainPackage.API_CLASS__FIELDS: return ((InternalEList<?>)getFields()).basicRemove(otherEnd, msgs); case DomainPackage.API_CLASS__PRODUCT: return basicSetProduct(null, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { switch (eContainerFeatureID()) { case DomainPackage.API_CLASS__PRODUCT: return eInternalContainer().eInverseRemove(this, DomainPackage.PRODUCT__CLASSES, Product.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 DomainPackage.API_CLASS__SIMPLE_NAME: return getSimpleName(); case DomainPackage.API_CLASS__PACKAGE_NAME: return getPackageName(); case DomainPackage.API_CLASS__METHODS: return getMethods(); case DomainPackage.API_CLASS__FIELDS: return getFields(); case DomainPackage.API_CLASS__PRODUCT: return getProduct(); case DomainPackage.API_CLASS__EXTENDS: return getExtends(); case DomainPackage.API_CLASS__IMPLEMENTS: return getImplements(); case DomainPackage.API_CLASS__PRIVATE: return isPrivate(); case DomainPackage.API_CLASS__ANONYMOUS: return isAnonymous(); case DomainPackage.API_CLASS__REFERENCED_CLASSES: return getReferencedClasses(); } 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 DomainPackage.API_CLASS__SIMPLE_NAME: setSimpleName((String)newValue); return; case DomainPackage.API_CLASS__PACKAGE_NAME: setPackageName((String)newValue); return; case DomainPackage.API_CLASS__METHODS: getMethods().clear(); getMethods().addAll((Collection<? extends Method>)newValue); return; case DomainPackage.API_CLASS__FIELDS: getFields().clear(); getFields().addAll((Collection<? extends Field>)newValue); return; case DomainPackage.API_CLASS__PRODUCT: setProduct((Product)newValue); return; case DomainPackage.API_CLASS__EXTENDS: setExtends((String)newValue); return; case DomainPackage.API_CLASS__IMPLEMENTS: setImplements((String)newValue); return; case DomainPackage.API_CLASS__PRIVATE: setPrivate((Boolean)newValue); return; case DomainPackage.API_CLASS__ANONYMOUS: setAnonymous((Boolean)newValue); return; case DomainPackage.API_CLASS__REFERENCED_CLASSES: setReferencedClasses((EList<String>)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case DomainPackage.API_CLASS__SIMPLE_NAME: setSimpleName(SIMPLE_NAME_EDEFAULT); return; case DomainPackage.API_CLASS__PACKAGE_NAME: setPackageName(PACKAGE_NAME_EDEFAULT); return; case DomainPackage.API_CLASS__METHODS: getMethods().clear(); return; case DomainPackage.API_CLASS__FIELDS: getFields().clear(); return; case DomainPackage.API_CLASS__PRODUCT: setProduct((Product)null); return; case DomainPackage.API_CLASS__EXTENDS: setExtends(EXTENDS_EDEFAULT); return; case DomainPackage.API_CLASS__IMPLEMENTS: setImplements(IMPLEMENTS_EDEFAULT); return; case DomainPackage.API_CLASS__PRIVATE: unsetPrivate(); return; case DomainPackage.API_CLASS__ANONYMOUS: setAnonymous(ANONYMOUS_EDEFAULT); return; case DomainPackage.API_CLASS__REFERENCED_CLASSES: setReferencedClasses((EList<String>)null); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case DomainPackage.API_CLASS__SIMPLE_NAME: return SIMPLE_NAME_EDEFAULT == null ? simpleName != null : !SIMPLE_NAME_EDEFAULT.equals(simpleName); case DomainPackage.API_CLASS__PACKAGE_NAME: return PACKAGE_NAME_EDEFAULT == null ? packageName != null : !PACKAGE_NAME_EDEFAULT.equals(packageName); case DomainPackage.API_CLASS__METHODS: return methods != null && !methods.isEmpty(); case DomainPackage.API_CLASS__FIELDS: return fields != null && !fields.isEmpty(); case DomainPackage.API_CLASS__PRODUCT: return getProduct() != null; case DomainPackage.API_CLASS__EXTENDS: return EXTENDS_EDEFAULT == null ? extends_ != null : !EXTENDS_EDEFAULT.equals(extends_); case DomainPackage.API_CLASS__IMPLEMENTS: return IMPLEMENTS_EDEFAULT == null ? implements_ != null : !IMPLEMENTS_EDEFAULT.equals(implements_); case DomainPackage.API_CLASS__PRIVATE: return isSetPrivate(); case DomainPackage.API_CLASS__ANONYMOUS: return anonymous != ANONYMOUS_EDEFAULT; case DomainPackage.API_CLASS__REFERENCED_CLASSES: return referencedClasses != null; } 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(" (simpleName: "); result.append(simpleName); result.append(", packageName: "); result.append(packageName); result.append(", extends: "); result.append(extends_); result.append(", implements: "); result.append(implements_); result.append(", private: "); if (privateESet) result.append(private_); else result.append("<unset>"); result.append(", anonymous: "); result.append(anonymous); result.append(", referencedClasses: "); result.append(referencedClasses); result.append(')'); return result.toString(); } } //ApiClassImpl