/**
*/
package brokermodel.providersite.impl;
import brokermodel.impl.NamedElementImpl;
import brokermodel.providersite.DomainManager;
import brokermodel.providersite.ProvidersitePackage;
import brokermodel.providersite.Site;
import brokermodel.providersite.SiteLocation;
import brokermodel.resources.OfferedResource;
import brokermodel.resources.ResourcesPackage;
import brokermodel.users.ResourcesProvider;
import brokermodel.users.UsersPackage;
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>Site</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link brokermodel.providersite.impl.SiteImpl#getDomainManager <em>Domain Manager</em>}</li>
* <li>{@link brokermodel.providersite.impl.SiteImpl#getLocatedAt <em>Located At</em>}</li>
* <li>{@link brokermodel.providersite.impl.SiteImpl#getOfferedResourcesList <em>Offered Resources List</em>}</li>
* <li>{@link brokermodel.providersite.impl.SiteImpl#getBelongsToProvider <em>Belongs To Provider</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class SiteImpl extends NamedElementImpl implements Site {
/**
* The cached value of the '{@link #getDomainManager() <em>Domain Manager</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getDomainManager()
* @generated
* @ordered
*/
protected DomainManager domainManager;
/**
* The cached value of the '{@link #getLocatedAt() <em>Located At</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getLocatedAt()
* @generated
* @ordered
*/
protected SiteLocation locatedAt;
/**
* The cached value of the '{@link #getOfferedResourcesList() <em>Offered Resources List</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getOfferedResourcesList()
* @generated
* @ordered
*/
protected EList<OfferedResource> offeredResourcesList;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected SiteImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return ProvidersitePackage.Literals.SITE;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DomainManager getDomainManager() {
return domainManager;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetDomainManager(DomainManager newDomainManager, NotificationChain msgs) {
DomainManager oldDomainManager = domainManager;
domainManager = newDomainManager;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ProvidersitePackage.SITE__DOMAIN_MANAGER, oldDomainManager, newDomainManager);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setDomainManager(DomainManager newDomainManager) {
if (newDomainManager != domainManager) {
NotificationChain msgs = null;
if (domainManager != null)
msgs = ((InternalEObject)domainManager).eInverseRemove(this, ProvidersitePackage.DOMAIN_MANAGER__BELONGS_TO_SITE, DomainManager.class, msgs);
if (newDomainManager != null)
msgs = ((InternalEObject)newDomainManager).eInverseAdd(this, ProvidersitePackage.DOMAIN_MANAGER__BELONGS_TO_SITE, DomainManager.class, msgs);
msgs = basicSetDomainManager(newDomainManager, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ProvidersitePackage.SITE__DOMAIN_MANAGER, newDomainManager, newDomainManager));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public SiteLocation getLocatedAt() {
return locatedAt;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetLocatedAt(SiteLocation newLocatedAt, NotificationChain msgs) {
SiteLocation oldLocatedAt = locatedAt;
locatedAt = newLocatedAt;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ProvidersitePackage.SITE__LOCATED_AT, oldLocatedAt, newLocatedAt);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setLocatedAt(SiteLocation newLocatedAt) {
if (newLocatedAt != locatedAt) {
NotificationChain msgs = null;
if (locatedAt != null)
msgs = ((InternalEObject)locatedAt).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ProvidersitePackage.SITE__LOCATED_AT, null, msgs);
if (newLocatedAt != null)
msgs = ((InternalEObject)newLocatedAt).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ProvidersitePackage.SITE__LOCATED_AT, null, msgs);
msgs = basicSetLocatedAt(newLocatedAt, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ProvidersitePackage.SITE__LOCATED_AT, newLocatedAt, newLocatedAt));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EList<OfferedResource> getOfferedResourcesList() {
if (offeredResourcesList == null) {
offeredResourcesList = new EObjectContainmentWithInverseEList<OfferedResource>(OfferedResource.class, this, ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST, ResourcesPackage.OFFERED_RESOURCE__BELONGS_TO_SITE);
}
return offeredResourcesList;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ResourcesProvider getBelongsToProvider() {
if (eContainerFeatureID() != ProvidersitePackage.SITE__BELONGS_TO_PROVIDER) return null;
return (ResourcesProvider)eContainer();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetBelongsToProvider(ResourcesProvider newBelongsToProvider, NotificationChain msgs) {
msgs = eBasicSetContainer((InternalEObject)newBelongsToProvider, ProvidersitePackage.SITE__BELONGS_TO_PROVIDER, msgs);
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setBelongsToProvider(ResourcesProvider newBelongsToProvider) {
if (newBelongsToProvider != eInternalContainer() || (eContainerFeatureID() != ProvidersitePackage.SITE__BELONGS_TO_PROVIDER && newBelongsToProvider != null)) {
if (EcoreUtil.isAncestor(this, newBelongsToProvider))
throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
NotificationChain msgs = null;
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
if (newBelongsToProvider != null)
msgs = ((InternalEObject)newBelongsToProvider).eInverseAdd(this, UsersPackage.RESOURCES_PROVIDER__OFFERED_SITE_LIST, ResourcesProvider.class, msgs);
msgs = basicSetBelongsToProvider(newBelongsToProvider, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ProvidersitePackage.SITE__BELONGS_TO_PROVIDER, newBelongsToProvider, newBelongsToProvider));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case ProvidersitePackage.SITE__DOMAIN_MANAGER:
if (domainManager != null)
msgs = ((InternalEObject)domainManager).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ProvidersitePackage.SITE__DOMAIN_MANAGER, null, msgs);
return basicSetDomainManager((DomainManager)otherEnd, msgs);
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
return ((InternalEList<InternalEObject>)(InternalEList<?>)getOfferedResourcesList()).basicAdd(otherEnd, msgs);
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
return basicSetBelongsToProvider((ResourcesProvider)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 ProvidersitePackage.SITE__DOMAIN_MANAGER:
return basicSetDomainManager(null, msgs);
case ProvidersitePackage.SITE__LOCATED_AT:
return basicSetLocatedAt(null, msgs);
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
return ((InternalEList<?>)getOfferedResourcesList()).basicRemove(otherEnd, msgs);
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
return basicSetBelongsToProvider(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
switch (eContainerFeatureID()) {
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
return eInternalContainer().eInverseRemove(this, UsersPackage.RESOURCES_PROVIDER__OFFERED_SITE_LIST, ResourcesProvider.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 ProvidersitePackage.SITE__DOMAIN_MANAGER:
return getDomainManager();
case ProvidersitePackage.SITE__LOCATED_AT:
return getLocatedAt();
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
return getOfferedResourcesList();
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
return getBelongsToProvider();
}
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 ProvidersitePackage.SITE__DOMAIN_MANAGER:
setDomainManager((DomainManager)newValue);
return;
case ProvidersitePackage.SITE__LOCATED_AT:
setLocatedAt((SiteLocation)newValue);
return;
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
getOfferedResourcesList().clear();
getOfferedResourcesList().addAll((Collection<? extends OfferedResource>)newValue);
return;
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
setBelongsToProvider((ResourcesProvider)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case ProvidersitePackage.SITE__DOMAIN_MANAGER:
setDomainManager((DomainManager)null);
return;
case ProvidersitePackage.SITE__LOCATED_AT:
setLocatedAt((SiteLocation)null);
return;
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
getOfferedResourcesList().clear();
return;
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
setBelongsToProvider((ResourcesProvider)null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case ProvidersitePackage.SITE__DOMAIN_MANAGER:
return domainManager != null;
case ProvidersitePackage.SITE__LOCATED_AT:
return locatedAt != null;
case ProvidersitePackage.SITE__OFFERED_RESOURCES_LIST:
return offeredResourcesList != null && !offeredResourcesList.isEmpty();
case ProvidersitePackage.SITE__BELONGS_TO_PROVIDER:
return getBelongsToProvider() != null;
}
return super.eIsSet(featureID);
}
} //SiteImpl