/**
* MSPDI is copyright Microsoft, Inc.
* Implementation wrapper in ecore done by Kestrel Technology LLC
*/
package net.certware.planning.mspdi.impl;
import java.math.BigInteger;
import net.certware.planning.mspdi.CalendarType;
import net.certware.planning.mspdi.ExceptionsType;
import net.certware.planning.mspdi.MspdiPackage;
import net.certware.planning.mspdi.WeekDaysType;
import net.certware.planning.mspdi.WorkWeeksType;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
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;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Calendar Type</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getUID <em>UID</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getName <em>Name</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#isIsBaseCalendar <em>Is Base Calendar</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getBaseCalendarUID <em>Base Calendar UID</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getWeekDays <em>Week Days</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getExceptions <em>Exceptions</em>}</li>
* <li>{@link net.certware.planning.mspdi.impl.CalendarTypeImpl#getWorkWeeks <em>Work Weeks</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class CalendarTypeImpl extends EObjectImpl implements CalendarType {
/**
* The default value of the '{@link #getUID() <em>UID</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getUID()
* @generated
* @ordered
*/
protected static final BigInteger UID_EDEFAULT = null;
/**
* The cached value of the '{@link #getUID() <em>UID</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getUID()
* @generated
* @ordered
*/
protected BigInteger uID = UID_EDEFAULT;
/**
* The default value of the '{@link #getName() <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getName()
* @generated
* @ordered
*/
protected static final String NAME_EDEFAULT = null;
/**
* The cached value of the '{@link #getName() <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getName()
* @generated
* @ordered
*/
protected String name = NAME_EDEFAULT;
/**
* The default value of the '{@link #isIsBaseCalendar() <em>Is Base Calendar</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isIsBaseCalendar()
* @generated
* @ordered
*/
protected static final boolean IS_BASE_CALENDAR_EDEFAULT = false;
/**
* The cached value of the '{@link #isIsBaseCalendar() <em>Is Base Calendar</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isIsBaseCalendar()
* @generated
* @ordered
*/
protected boolean isBaseCalendar = IS_BASE_CALENDAR_EDEFAULT;
/**
* This is true if the Is Base Calendar attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected boolean isBaseCalendarESet;
/**
* The default value of the '{@link #getBaseCalendarUID() <em>Base Calendar UID</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getBaseCalendarUID()
* @generated
* @ordered
*/
protected static final BigInteger BASE_CALENDAR_UID_EDEFAULT = null;
/**
* The cached value of the '{@link #getBaseCalendarUID() <em>Base Calendar UID</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getBaseCalendarUID()
* @generated
* @ordered
*/
protected BigInteger baseCalendarUID = BASE_CALENDAR_UID_EDEFAULT;
/**
* The cached value of the '{@link #getWeekDays() <em>Week Days</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getWeekDays()
* @generated
* @ordered
*/
protected WeekDaysType weekDays;
/**
* The cached value of the '{@link #getExceptions() <em>Exceptions</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getExceptions()
* @generated
* @ordered
*/
protected ExceptionsType exceptions;
/**
* The cached value of the '{@link #getWorkWeeks() <em>Work Weeks</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getWorkWeeks()
* @generated
* @ordered
*/
protected WorkWeeksType workWeeks;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected CalendarTypeImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return MspdiPackage.Literals.CALENDAR_TYPE;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public BigInteger getUID() {
return uID;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setUID(BigInteger newUID) {
BigInteger oldUID = uID;
uID = newUID;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__UID, oldUID, uID));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String getName() {
return name;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setName(String newName) {
String oldName = name;
name = newName;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__NAME, oldName, name));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isIsBaseCalendar() {
return isBaseCalendar;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setIsBaseCalendar(boolean newIsBaseCalendar) {
boolean oldIsBaseCalendar = isBaseCalendar;
isBaseCalendar = newIsBaseCalendar;
boolean oldIsBaseCalendarESet = isBaseCalendarESet;
isBaseCalendarESet = true;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR, oldIsBaseCalendar, isBaseCalendar, !oldIsBaseCalendarESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetIsBaseCalendar() {
boolean oldIsBaseCalendar = isBaseCalendar;
boolean oldIsBaseCalendarESet = isBaseCalendarESet;
isBaseCalendar = IS_BASE_CALENDAR_EDEFAULT;
isBaseCalendarESet = false;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR, oldIsBaseCalendar, IS_BASE_CALENDAR_EDEFAULT, oldIsBaseCalendarESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetIsBaseCalendar() {
return isBaseCalendarESet;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public BigInteger getBaseCalendarUID() {
return baseCalendarUID;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setBaseCalendarUID(BigInteger newBaseCalendarUID) {
BigInteger oldBaseCalendarUID = baseCalendarUID;
baseCalendarUID = newBaseCalendarUID;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__BASE_CALENDAR_UID, oldBaseCalendarUID, baseCalendarUID));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public WeekDaysType getWeekDays() {
return weekDays;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetWeekDays(WeekDaysType newWeekDays, NotificationChain msgs) {
WeekDaysType oldWeekDays = weekDays;
weekDays = newWeekDays;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__WEEK_DAYS, oldWeekDays, newWeekDays);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setWeekDays(WeekDaysType newWeekDays) {
if (newWeekDays != weekDays) {
NotificationChain msgs = null;
if (weekDays != null)
msgs = ((InternalEObject)weekDays).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__WEEK_DAYS, null, msgs);
if (newWeekDays != null)
msgs = ((InternalEObject)newWeekDays).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__WEEK_DAYS, null, msgs);
msgs = basicSetWeekDays(newWeekDays, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__WEEK_DAYS, newWeekDays, newWeekDays));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ExceptionsType getExceptions() {
return exceptions;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetExceptions(ExceptionsType newExceptions, NotificationChain msgs) {
ExceptionsType oldExceptions = exceptions;
exceptions = newExceptions;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__EXCEPTIONS, oldExceptions, newExceptions);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setExceptions(ExceptionsType newExceptions) {
if (newExceptions != exceptions) {
NotificationChain msgs = null;
if (exceptions != null)
msgs = ((InternalEObject)exceptions).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__EXCEPTIONS, null, msgs);
if (newExceptions != null)
msgs = ((InternalEObject)newExceptions).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__EXCEPTIONS, null, msgs);
msgs = basicSetExceptions(newExceptions, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__EXCEPTIONS, newExceptions, newExceptions));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public WorkWeeksType getWorkWeeks() {
return workWeeks;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetWorkWeeks(WorkWeeksType newWorkWeeks, NotificationChain msgs) {
WorkWeeksType oldWorkWeeks = workWeeks;
workWeeks = newWorkWeeks;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__WORK_WEEKS, oldWorkWeeks, newWorkWeeks);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setWorkWeeks(WorkWeeksType newWorkWeeks) {
if (newWorkWeeks != workWeeks) {
NotificationChain msgs = null;
if (workWeeks != null)
msgs = ((InternalEObject)workWeeks).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__WORK_WEEKS, null, msgs);
if (newWorkWeeks != null)
msgs = ((InternalEObject)newWorkWeeks).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MspdiPackage.CALENDAR_TYPE__WORK_WEEKS, null, msgs);
msgs = basicSetWorkWeeks(newWorkWeeks, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, MspdiPackage.CALENDAR_TYPE__WORK_WEEKS, newWorkWeeks, newWorkWeeks));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case MspdiPackage.CALENDAR_TYPE__WEEK_DAYS:
return basicSetWeekDays(null, msgs);
case MspdiPackage.CALENDAR_TYPE__EXCEPTIONS:
return basicSetExceptions(null, msgs);
case MspdiPackage.CALENDAR_TYPE__WORK_WEEKS:
return basicSetWorkWeeks(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case MspdiPackage.CALENDAR_TYPE__UID:
return getUID();
case MspdiPackage.CALENDAR_TYPE__NAME:
return getName();
case MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR:
return isIsBaseCalendar();
case MspdiPackage.CALENDAR_TYPE__BASE_CALENDAR_UID:
return getBaseCalendarUID();
case MspdiPackage.CALENDAR_TYPE__WEEK_DAYS:
return getWeekDays();
case MspdiPackage.CALENDAR_TYPE__EXCEPTIONS:
return getExceptions();
case MspdiPackage.CALENDAR_TYPE__WORK_WEEKS:
return getWorkWeeks();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case MspdiPackage.CALENDAR_TYPE__UID:
setUID((BigInteger)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__NAME:
setName((String)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR:
setIsBaseCalendar((Boolean)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__BASE_CALENDAR_UID:
setBaseCalendarUID((BigInteger)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__WEEK_DAYS:
setWeekDays((WeekDaysType)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__EXCEPTIONS:
setExceptions((ExceptionsType)newValue);
return;
case MspdiPackage.CALENDAR_TYPE__WORK_WEEKS:
setWorkWeeks((WorkWeeksType)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case MspdiPackage.CALENDAR_TYPE__UID:
setUID(UID_EDEFAULT);
return;
case MspdiPackage.CALENDAR_TYPE__NAME:
setName(NAME_EDEFAULT);
return;
case MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR:
unsetIsBaseCalendar();
return;
case MspdiPackage.CALENDAR_TYPE__BASE_CALENDAR_UID:
setBaseCalendarUID(BASE_CALENDAR_UID_EDEFAULT);
return;
case MspdiPackage.CALENDAR_TYPE__WEEK_DAYS:
setWeekDays((WeekDaysType)null);
return;
case MspdiPackage.CALENDAR_TYPE__EXCEPTIONS:
setExceptions((ExceptionsType)null);
return;
case MspdiPackage.CALENDAR_TYPE__WORK_WEEKS:
setWorkWeeks((WorkWeeksType)null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case MspdiPackage.CALENDAR_TYPE__UID:
return UID_EDEFAULT == null ? uID != null : !UID_EDEFAULT.equals(uID);
case MspdiPackage.CALENDAR_TYPE__NAME:
return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
case MspdiPackage.CALENDAR_TYPE__IS_BASE_CALENDAR:
return isSetIsBaseCalendar();
case MspdiPackage.CALENDAR_TYPE__BASE_CALENDAR_UID:
return BASE_CALENDAR_UID_EDEFAULT == null ? baseCalendarUID != null : !BASE_CALENDAR_UID_EDEFAULT.equals(baseCalendarUID);
case MspdiPackage.CALENDAR_TYPE__WEEK_DAYS:
return weekDays != null;
case MspdiPackage.CALENDAR_TYPE__EXCEPTIONS:
return exceptions != null;
case MspdiPackage.CALENDAR_TYPE__WORK_WEEKS:
return workWeeks != 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(" (uID: ");
result.append(uID);
result.append(", name: ");
result.append(name);
result.append(", isBaseCalendar: ");
if (isBaseCalendarESet) result.append(isBaseCalendar); else result.append("<unset>");
result.append(", baseCalendarUID: ");
result.append(baseCalendarUID);
result.append(')');
return result.toString();
}
} //CalendarTypeImpl