blob: f295240224ce34f8584f9a70c7ea0df317c35a75 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2006 IBM Corporation and others.
* 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
* https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jem.internal.beaninfo.impl;
/*
*/
import java.util.Collection;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EModelElement;
import org.eclipse.emf.ecore.ENamedElement;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.EAnnotationImpl;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EcoreEMap;
import org.eclipse.emf.ecore.util.InternalEList;
import org.eclipse.jem.internal.beaninfo.BeaninfoPackage;
import org.eclipse.jem.internal.beaninfo.FeatureDecorator;
import org.eclipse.jem.internal.beaninfo.ImplicitItem;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Feature Decorator</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getDisplayName <em>Display Name</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getShortDescription <em>Short Description</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getCategory <em>Category</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#isExpert <em>Expert</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#isHidden <em>Hidden</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#isPreferred <em>Preferred</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#isMergeIntrospection <em>Merge Introspection</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#isAttributesExplicitEmpty <em>Attributes Explicit Empty</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getImplicitlySetBits <em>Implicitly Set Bits</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getImplicitDecoratorFlag <em>Implicit Decorator Flag</em>}</li>
* <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureDecoratorImpl#getAttributes <em>Attributes</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class FeatureDecoratorImpl extends EAnnotationImpl implements FeatureDecorator{
/**
* Bits for implicitly set features. This is internal, not meant for clients.
* Note: To make it easier to make changes Feature goes from high bits down, while the
* subclasses go from low-bits up. That way if a change is made to add something of
* interest to Feature, all of the subclasses don't need to have their bits re-ordered.
* Since these are bits, it doesn't matter which ones to use.
*/
public static final long FEATURE_DISPLAYNAME_IMPLICIT = 0x8000000000000000L;
public static final long FEATURE_SHORTDESC_IMPLICIT = 0x4000000000000000L;
public static final long FEATURE_CATEGORY_IMPLICIT = 0x2000000000000000L;
public static final long FEATURE_EXPERT_IMPLICIT = 0x1000000000000000L;
public static final long FEATURE_HIDDEN_IMPLICIT = 0x800000000000000L;
public static final long FEATURE_PREFERRED_IMPLICIT = 0x400000000000000L;
public static final long FEATURE_ATTRIBUTES_IMPLICIT = 0x200000000000000L;
/**
* The default value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getDisplayName()
* @generated
* @ordered
*/
protected static final String DISPLAY_NAME_EDEFAULT = null;
/**
* The cached value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getDisplayName()
* @generated
* @ordered
*/
protected String displayName = DISPLAY_NAME_EDEFAULT;
/**
* The flag representing whether the Display Name attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected static final int DISPLAY_NAME_ESETFLAG = 1 << 8;
/**
* The default value of the '{@link #getShortDescription() <em>Short Description</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getShortDescription()
* @generated
* @ordered
*/
protected static final String SHORT_DESCRIPTION_EDEFAULT = null;
/**
* The cached value of the '{@link #getShortDescription() <em>Short Description</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getShortDescription()
* @generated
* @ordered
*/
protected String shortDescription = SHORT_DESCRIPTION_EDEFAULT;
/**
* The flag representing whether the Short Description attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected static final int SHORT_DESCRIPTION_ESETFLAG = 1 << 9;
/**
* The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getCategory()
* @generated
* @ordered
*/
protected static final String CATEGORY_EDEFAULT = null;
/**
* The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getCategory()
* @generated
* @ordered
*/
protected String category = CATEGORY_EDEFAULT;
/**
* The default value of the '{@link #isExpert() <em>Expert</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isExpert()
* @generated
* @ordered
*/
protected static final boolean EXPERT_EDEFAULT = false;
/**
* The flag representing the value of the '{@link #isExpert() <em>Expert</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isExpert()
* @generated
* @ordered
*/
protected static final int EXPERT_EFLAG = 1 << 10;
/**
* The flag representing whether the Expert attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected static final int EXPERT_ESETFLAG = 1 << 11;
/**
* The default value of the '{@link #isHidden() <em>Hidden</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isHidden()
* @generated
* @ordered
*/
protected static final boolean HIDDEN_EDEFAULT = false;
/**
* The flag representing the value of the '{@link #isHidden() <em>Hidden</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isHidden()
* @generated
* @ordered
*/
protected static final int HIDDEN_EFLAG = 1 << 12;
/**
* The flag representing whether the Hidden attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected static final int HIDDEN_ESETFLAG = 1 << 13;
/**
* The default value of the '{@link #isPreferred() <em>Preferred</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isPreferred()
* @generated
* @ordered
*/
protected static final boolean PREFERRED_EDEFAULT = false;
/**
* The flag representing the value of the '{@link #isPreferred() <em>Preferred</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isPreferred()
* @generated
* @ordered
*/
protected static final int PREFERRED_EFLAG = 1 << 14;
/**
* The flag representing whether the Preferred attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected static final int PREFERRED_ESETFLAG = 1 << 15;
/**
* The default value of the '{@link #isMergeIntrospection() <em>Merge Introspection</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isMergeIntrospection()
* @generated
* @ordered
*/
protected static final boolean MERGE_INTROSPECTION_EDEFAULT = true;
/**
* The flag representing the value of the '{@link #isMergeIntrospection() <em>Merge Introspection</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isMergeIntrospection()
* @generated
* @ordered
*/
protected static final int MERGE_INTROSPECTION_EFLAG = 1 << 16;
/**
* The default value of the '{@link #isAttributesExplicitEmpty() <em>Attributes Explicit Empty</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isAttributesExplicitEmpty()
* @generated
* @ordered
*/
protected static final boolean ATTRIBUTES_EXPLICIT_EMPTY_EDEFAULT = false;
/**
* The flag representing the value of the '{@link #isAttributesExplicitEmpty() <em>Attributes Explicit Empty</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isAttributesExplicitEmpty()
* @generated
* @ordered
*/
protected static final int ATTRIBUTES_EXPLICIT_EMPTY_EFLAG = 1 << 17;
/**
* The default value of the '{@link #getImplicitlySetBits() <em>Implicitly Set Bits</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getImplicitlySetBits()
* @generated
* @ordered
*/
protected static final long IMPLICITLY_SET_BITS_EDEFAULT = 0L;
/**
* The cached value of the '{@link #getImplicitlySetBits() <em>Implicitly Set Bits</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getImplicitlySetBits()
* @generated
* @ordered
*/
protected long implicitlySetBits = IMPLICITLY_SET_BITS_EDEFAULT;
/**
* The default value of the '{@link #getImplicitDecoratorFlag() <em>Implicit Decorator Flag</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getImplicitDecoratorFlag()
* @generated
* @ordered
*/
protected static final ImplicitItem IMPLICIT_DECORATOR_FLAG_EDEFAULT = ImplicitItem.NOT_IMPLICIT_LITERAL;
/**
* The cached value of the '{@link #getImplicitDecoratorFlag() <em>Implicit Decorator Flag</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getImplicitDecoratorFlag()
* @generated
* @ordered
*/
protected ImplicitItem implicitDecoratorFlag = IMPLICIT_DECORATOR_FLAG_EDEFAULT;
/**
* The cached value of the '{@link #getAttributes() <em>Attributes</em>}' map.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getAttributes()
* @generated
* @ordered
*/
protected EMap attributes = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected FeatureDecoratorImpl() {
super();
eFlags |= MERGE_INTROSPECTION_EFLAG;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected EClass eStaticClass() {
return BeaninfoPackage.eINSTANCE.getFeatureDecorator();
}
public String getDisplayName() {
return isSetDisplayName() ? getDisplayNameGen() : getName();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getDisplayNameGen() {
return displayName;
}
public String getName() {
ENamedElement ne = (ENamedElement) getEModelElement();
if (ne != null)
return ne.getName(); // The name from the owner of the feature has to be the name of feature.
else
return "?"; // Don't know what it is. //$NON-NLS-1$
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setDisplayName(String newDisplayName) {
String oldDisplayName = displayName;
displayName = newDisplayName;
boolean oldDisplayNameESet = (eFlags & DISPLAY_NAME_ESETFLAG) != 0;
eFlags |= DISPLAY_NAME_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME, oldDisplayName, displayName, !oldDisplayNameESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetDisplayName() {
String oldDisplayName = displayName;
boolean oldDisplayNameESet = (eFlags & DISPLAY_NAME_ESETFLAG) != 0;
displayName = DISPLAY_NAME_EDEFAULT;
eFlags &= ~DISPLAY_NAME_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME, oldDisplayName, DISPLAY_NAME_EDEFAULT, oldDisplayNameESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetDisplayName() {
return (eFlags & DISPLAY_NAME_ESETFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getShortDescription() {
return shortDescription;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setShortDescription(String newShortDescription) {
String oldShortDescription = shortDescription;
shortDescription = newShortDescription;
boolean oldShortDescriptionESet = (eFlags & SHORT_DESCRIPTION_ESETFLAG) != 0;
eFlags |= SHORT_DESCRIPTION_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION, oldShortDescription, shortDescription, !oldShortDescriptionESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetShortDescription() {
String oldShortDescription = shortDescription;
boolean oldShortDescriptionESet = (eFlags & SHORT_DESCRIPTION_ESETFLAG) != 0;
shortDescription = SHORT_DESCRIPTION_EDEFAULT;
eFlags &= ~SHORT_DESCRIPTION_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION, oldShortDescription, SHORT_DESCRIPTION_EDEFAULT, oldShortDescriptionESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetShortDescription() {
return (eFlags & SHORT_DESCRIPTION_ESETFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getCategory() {
return category;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setCategory(String newCategory) {
String oldCategory = category;
category = newCategory;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__CATEGORY, oldCategory, category));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isExpert() {
return (eFlags & EXPERT_EFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setExpert(boolean newExpert) {
boolean oldExpert = (eFlags & EXPERT_EFLAG) != 0;
if (newExpert) eFlags |= EXPERT_EFLAG; else eFlags &= ~EXPERT_EFLAG;
boolean oldExpertESet = (eFlags & EXPERT_ESETFLAG) != 0;
eFlags |= EXPERT_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__EXPERT, oldExpert, newExpert, !oldExpertESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetExpert() {
boolean oldExpert = (eFlags & EXPERT_EFLAG) != 0;
boolean oldExpertESet = (eFlags & EXPERT_ESETFLAG) != 0;
if (EXPERT_EDEFAULT) eFlags |= EXPERT_EFLAG; else eFlags &= ~EXPERT_EFLAG;
eFlags &= ~EXPERT_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, BeaninfoPackage.FEATURE_DECORATOR__EXPERT, oldExpert, EXPERT_EDEFAULT, oldExpertESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetExpert() {
return (eFlags & EXPERT_ESETFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isHidden() {
return (eFlags & HIDDEN_EFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setHidden(boolean newHidden) {
boolean oldHidden = (eFlags & HIDDEN_EFLAG) != 0;
if (newHidden) eFlags |= HIDDEN_EFLAG; else eFlags &= ~HIDDEN_EFLAG;
boolean oldHiddenESet = (eFlags & HIDDEN_ESETFLAG) != 0;
eFlags |= HIDDEN_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__HIDDEN, oldHidden, newHidden, !oldHiddenESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetHidden() {
boolean oldHidden = (eFlags & HIDDEN_EFLAG) != 0;
boolean oldHiddenESet = (eFlags & HIDDEN_ESETFLAG) != 0;
if (HIDDEN_EDEFAULT) eFlags |= HIDDEN_EFLAG; else eFlags &= ~HIDDEN_EFLAG;
eFlags &= ~HIDDEN_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, BeaninfoPackage.FEATURE_DECORATOR__HIDDEN, oldHidden, HIDDEN_EDEFAULT, oldHiddenESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetHidden() {
return (eFlags & HIDDEN_ESETFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isPreferred() {
return (eFlags & PREFERRED_EFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setPreferred(boolean newPreferred) {
boolean oldPreferred = (eFlags & PREFERRED_EFLAG) != 0;
if (newPreferred) eFlags |= PREFERRED_EFLAG; else eFlags &= ~PREFERRED_EFLAG;
boolean oldPreferredESet = (eFlags & PREFERRED_ESETFLAG) != 0;
eFlags |= PREFERRED_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__PREFERRED, oldPreferred, newPreferred, !oldPreferredESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetPreferred() {
boolean oldPreferred = (eFlags & PREFERRED_EFLAG) != 0;
boolean oldPreferredESet = (eFlags & PREFERRED_ESETFLAG) != 0;
if (PREFERRED_EDEFAULT) eFlags |= PREFERRED_EFLAG; else eFlags &= ~PREFERRED_EFLAG;
eFlags &= ~PREFERRED_ESETFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, BeaninfoPackage.FEATURE_DECORATOR__PREFERRED, oldPreferred, PREFERRED_EDEFAULT, oldPreferredESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetPreferred() {
return (eFlags & PREFERRED_ESETFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isMergeIntrospection() {
return (eFlags & MERGE_INTROSPECTION_EFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setMergeIntrospection(boolean newMergeIntrospection) {
boolean oldMergeIntrospection = (eFlags & MERGE_INTROSPECTION_EFLAG) != 0;
if (newMergeIntrospection) eFlags |= MERGE_INTROSPECTION_EFLAG; else eFlags &= ~MERGE_INTROSPECTION_EFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__MERGE_INTROSPECTION, oldMergeIntrospection, newMergeIntrospection));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isAttributesExplicitEmpty() {
return (eFlags & ATTRIBUTES_EXPLICIT_EMPTY_EFLAG) != 0;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setAttributesExplicitEmpty(boolean newAttributesExplicitEmpty) {
boolean oldAttributesExplicitEmpty = (eFlags & ATTRIBUTES_EXPLICIT_EMPTY_EFLAG) != 0;
if (newAttributesExplicitEmpty) eFlags |= ATTRIBUTES_EXPLICIT_EMPTY_EFLAG; else eFlags &= ~ATTRIBUTES_EXPLICIT_EMPTY_EFLAG;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES_EXPLICIT_EMPTY, oldAttributesExplicitEmpty, newAttributesExplicitEmpty));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public long getImplicitlySetBits() {
return implicitlySetBits;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setImplicitlySetBits(long newImplicitlySetBits) {
long oldImplicitlySetBits = implicitlySetBits;
implicitlySetBits = newImplicitlySetBits;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__IMPLICITLY_SET_BITS, oldImplicitlySetBits, implicitlySetBits));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ImplicitItem getImplicitDecoratorFlag() {
return implicitDecoratorFlag;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setImplicitDecoratorFlag(ImplicitItem newImplicitDecoratorFlag) {
ImplicitItem oldImplicitDecoratorFlag = implicitDecoratorFlag;
implicitDecoratorFlag = newImplicitDecoratorFlag == null ? IMPLICIT_DECORATOR_FLAG_EDEFAULT : newImplicitDecoratorFlag;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, BeaninfoPackage.FEATURE_DECORATOR__IMPLICIT_DECORATOR_FLAG, oldImplicitDecoratorFlag, implicitDecoratorFlag));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EMap getAttributes() {
if (attributes == null) {
attributes = new EcoreEMap(BeaninfoPackage.eINSTANCE.getFeatureAttributeMapEntry(), FeatureAttributeMapEntryImpl.class, this, BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES);
}
return attributes;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String toString() {
if (eIsProxy()) return super.toString();
StringBuffer result = new StringBuffer(super.toString());
result.append(" (displayName: ");
if ((eFlags & DISPLAY_NAME_ESETFLAG) != 0) result.append(displayName); else result.append("<unset>");
result.append(", shortDescription: ");
if ((eFlags & SHORT_DESCRIPTION_ESETFLAG) != 0) result.append(shortDescription); else result.append("<unset>");
result.append(", category: ");
result.append(category);
result.append(", expert: ");
if ((eFlags & EXPERT_ESETFLAG) != 0) result.append((eFlags & EXPERT_EFLAG) != 0); else result.append("<unset>");
result.append(", hidden: ");
if ((eFlags & HIDDEN_ESETFLAG) != 0) result.append((eFlags & HIDDEN_EFLAG) != 0); else result.append("<unset>");
result.append(", preferred: ");
if ((eFlags & PREFERRED_ESETFLAG) != 0) result.append((eFlags & PREFERRED_EFLAG) != 0); else result.append("<unset>");
result.append(", mergeIntrospection: ");
result.append((eFlags & MERGE_INTROSPECTION_EFLAG) != 0);
result.append(", attributesExplicitEmpty: ");
result.append((eFlags & ATTRIBUTES_EXPLICIT_EMPTY_EFLAG) != 0);
result.append(", implicitlySetBits: ");
result.append(implicitlySetBits);
result.append(", implicitDecoratorFlag: ");
result.append(implicitDecoratorFlag);
result.append(')');
return result.toString();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
if (featureID >= 0) {
switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
return ((InternalEList)getEAnnotations()).basicAdd(otherEnd, msgs);
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
if (eContainer != null)
msgs = eBasicRemoveFromContainer(msgs);
return eBasicSetContainer(otherEnd, BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT, msgs);
default:
return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
}
}
if (eContainer != null)
msgs = eBasicRemoveFromContainer(msgs);
return eBasicSetContainer(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs) {
if (featureID >= 0) {
switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
return ((InternalEList)getEAnnotations()).basicRemove(otherEnd, msgs);
case BeaninfoPackage.FEATURE_DECORATOR__DETAILS:
return ((InternalEList)getDetails()).basicRemove(otherEnd, msgs);
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
return eBasicSetContainer(null, BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT, msgs);
case BeaninfoPackage.FEATURE_DECORATOR__CONTENTS:
return ((InternalEList)getContents()).basicRemove(otherEnd, msgs);
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES:
return ((InternalEList)getAttributes()).basicRemove(otherEnd, msgs);
default:
return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
}
}
return eBasicSetContainer(null, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eBasicRemoveFromContainer(NotificationChain msgs) {
if (eContainerFeatureID() >= 0) {
switch (eContainerFeatureID()) {
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
return eContainer.eInverseRemove(this, EcorePackage.EMODEL_ELEMENT__EANNOTATIONS, EModelElement.class, msgs);
default:
return eDynamicBasicRemoveFromContainer(msgs);
}
}
return eContainer.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - eContainerFeatureID(), null, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Object eGet(EStructuralFeature eFeature, boolean resolve) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
return getEAnnotations();
case BeaninfoPackage.FEATURE_DECORATOR__SOURCE:
return getSource();
case BeaninfoPackage.FEATURE_DECORATOR__DETAILS:
return getDetails();
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
return getEModelElement();
case BeaninfoPackage.FEATURE_DECORATOR__CONTENTS:
return getContents();
case BeaninfoPackage.FEATURE_DECORATOR__REFERENCES:
return getReferences();
case BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME:
return getDisplayName();
case BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION:
return getShortDescription();
case BeaninfoPackage.FEATURE_DECORATOR__CATEGORY:
return getCategory();
case BeaninfoPackage.FEATURE_DECORATOR__EXPERT:
return isExpert() ? Boolean.TRUE : Boolean.FALSE;
case BeaninfoPackage.FEATURE_DECORATOR__HIDDEN:
return isHidden() ? Boolean.TRUE : Boolean.FALSE;
case BeaninfoPackage.FEATURE_DECORATOR__PREFERRED:
return isPreferred() ? Boolean.TRUE : Boolean.FALSE;
case BeaninfoPackage.FEATURE_DECORATOR__MERGE_INTROSPECTION:
return isMergeIntrospection() ? Boolean.TRUE : Boolean.FALSE;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES_EXPLICIT_EMPTY:
return isAttributesExplicitEmpty() ? Boolean.TRUE : Boolean.FALSE;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICITLY_SET_BITS:
return new Long(getImplicitlySetBits());
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICIT_DECORATOR_FLAG:
return getImplicitDecoratorFlag();
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES:
return getAttributes();
}
return eDynamicGet(eFeature, resolve);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void eSet(EStructuralFeature eFeature, Object newValue) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
getEAnnotations().clear();
getEAnnotations().addAll((Collection)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__SOURCE:
setSource((String)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__DETAILS:
getDetails().clear();
getDetails().addAll((Collection)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
setEModelElement((EModelElement)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__CONTENTS:
getContents().clear();
getContents().addAll((Collection)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__REFERENCES:
getReferences().clear();
getReferences().addAll((Collection)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME:
setDisplayName((String)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION:
setShortDescription((String)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__CATEGORY:
setCategory((String)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__EXPERT:
setExpert(((Boolean)newValue).booleanValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__HIDDEN:
setHidden(((Boolean)newValue).booleanValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__PREFERRED:
setPreferred(((Boolean)newValue).booleanValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__MERGE_INTROSPECTION:
setMergeIntrospection(((Boolean)newValue).booleanValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES_EXPLICIT_EMPTY:
setAttributesExplicitEmpty(((Boolean)newValue).booleanValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICITLY_SET_BITS:
setImplicitlySetBits(((Long)newValue).longValue());
return;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICIT_DECORATOR_FLAG:
setImplicitDecoratorFlag((ImplicitItem)newValue);
return;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES:
getAttributes().clear();
getAttributes().addAll((Collection)newValue);
return;
}
eDynamicSet(eFeature, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void eUnset(EStructuralFeature eFeature) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
getEAnnotations().clear();
return;
case BeaninfoPackage.FEATURE_DECORATOR__SOURCE:
setSource(SOURCE_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__DETAILS:
getDetails().clear();
return;
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
setEModelElement((EModelElement)null);
return;
case BeaninfoPackage.FEATURE_DECORATOR__CONTENTS:
getContents().clear();
return;
case BeaninfoPackage.FEATURE_DECORATOR__REFERENCES:
getReferences().clear();
return;
case BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME:
unsetDisplayName();
return;
case BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION:
unsetShortDescription();
return;
case BeaninfoPackage.FEATURE_DECORATOR__CATEGORY:
setCategory(CATEGORY_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__EXPERT:
unsetExpert();
return;
case BeaninfoPackage.FEATURE_DECORATOR__HIDDEN:
unsetHidden();
return;
case BeaninfoPackage.FEATURE_DECORATOR__PREFERRED:
unsetPreferred();
return;
case BeaninfoPackage.FEATURE_DECORATOR__MERGE_INTROSPECTION:
setMergeIntrospection(MERGE_INTROSPECTION_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES_EXPLICIT_EMPTY:
setAttributesExplicitEmpty(ATTRIBUTES_EXPLICIT_EMPTY_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICITLY_SET_BITS:
setImplicitlySetBits(IMPLICITLY_SET_BITS_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICIT_DECORATOR_FLAG:
setImplicitDecoratorFlag(IMPLICIT_DECORATOR_FLAG_EDEFAULT);
return;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES:
getAttributes().clear();
return;
}
eDynamicUnset(eFeature);
}
/**
* Called by overrides to eIsSet to test if source is set. This is because for the
* FeatureDecorator and subclasses, setting source to the classname is considered
* to be not set since that is the new default for each class level. By doing this
* when serializing it won't waste space and time adding a copy of the source string
* to the serialized output and then creating a NEW copy on each decorator loaded
* from an XMI file.
*
* @return <code>true</code> if source is not null and not equal to class name (less the "Impl" at the end).
*
* @since 1.1.0
*/
protected boolean isSourceSet() {
return source != null && !eClass().getInstanceClassName().equals(source);
}
/* (non-Javadoc)
* @see org.eclipse.emf.ecore.EObject#eIsSet(org.eclipse.emf.ecore.EStructuralFeature)
*/
public boolean eIsSet(EStructuralFeature eFeature) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case BeaninfoPackage.FEATURE_DECORATOR__SOURCE:
return isSourceSet(); // Override so that if set to the same as classname, then it is considered not set.
default:
return eIsSetGen(eFeature);
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean eIsSetGen(EStructuralFeature eFeature) {
switch (eDerivedStructuralFeatureID(eFeature)) {
case BeaninfoPackage.FEATURE_DECORATOR__EANNOTATIONS:
return eAnnotations != null && !eAnnotations.isEmpty();
case BeaninfoPackage.FEATURE_DECORATOR__SOURCE:
return SOURCE_EDEFAULT == null ? source != null : !SOURCE_EDEFAULT.equals(source);
case BeaninfoPackage.FEATURE_DECORATOR__DETAILS:
return details != null && !details.isEmpty();
case BeaninfoPackage.FEATURE_DECORATOR__EMODEL_ELEMENT:
return getEModelElement() != null;
case BeaninfoPackage.FEATURE_DECORATOR__CONTENTS:
return contents != null && !contents.isEmpty();
case BeaninfoPackage.FEATURE_DECORATOR__REFERENCES:
return references != null && !references.isEmpty();
case BeaninfoPackage.FEATURE_DECORATOR__DISPLAY_NAME:
return isSetDisplayName();
case BeaninfoPackage.FEATURE_DECORATOR__SHORT_DESCRIPTION:
return isSetShortDescription();
case BeaninfoPackage.FEATURE_DECORATOR__CATEGORY:
return CATEGORY_EDEFAULT == null ? category != null : !CATEGORY_EDEFAULT.equals(category);
case BeaninfoPackage.FEATURE_DECORATOR__EXPERT:
return isSetExpert();
case BeaninfoPackage.FEATURE_DECORATOR__HIDDEN:
return isSetHidden();
case BeaninfoPackage.FEATURE_DECORATOR__PREFERRED:
return isSetPreferred();
case BeaninfoPackage.FEATURE_DECORATOR__MERGE_INTROSPECTION:
return ((eFlags & MERGE_INTROSPECTION_EFLAG) != 0) != MERGE_INTROSPECTION_EDEFAULT;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES_EXPLICIT_EMPTY:
return ((eFlags & ATTRIBUTES_EXPLICIT_EMPTY_EFLAG) != 0) != ATTRIBUTES_EXPLICIT_EMPTY_EDEFAULT;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICITLY_SET_BITS:
return implicitlySetBits != IMPLICITLY_SET_BITS_EDEFAULT;
case BeaninfoPackage.FEATURE_DECORATOR__IMPLICIT_DECORATOR_FLAG:
return implicitDecoratorFlag != IMPLICIT_DECORATOR_FLAG_EDEFAULT;
case BeaninfoPackage.FEATURE_DECORATOR__ATTRIBUTES:
return attributes != null && !attributes.isEmpty();
}
return eDynamicIsSet(eFeature);
}
}