/**
* <copyright>
* </copyright>
*
* $Id$
*/
package at.bestsolution.e4.addressbook.model.addressbook.impl;
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;
import org.eclipse.emf.ecore.util.EcoreUtil;
import at.bestsolution.e4.addressbook.model.addressbook.Address;
import at.bestsolution.e4.addressbook.model.addressbook.AddressType;
import at.bestsolution.e4.addressbook.model.addressbook.AddressbookPackage;
import at.bestsolution.e4.addressbook.model.addressbook.Country;
import at.bestsolution.e4.addressbook.model.addressbook.FederalState;
import at.bestsolution.e4.addressbook.model.addressbook.Person;
/**
* <!-- begin-user-doc --> An implementation of the model object '
* <em><b>Address</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getStreet
* <em>Street</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getZip
* <em>Zip</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getCity
* <em>City</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getCountry
* <em>Country</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getFederalState
* <em>Federal State</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getType
* <em>Type</em>}</li>
* <li>
* {@link at.bestsolution.e4.addressbook.model.addressbook.impl.AddressImpl#getPerson
* <em>Person</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class AddressImpl extends EObjectImpl implements Address {
/**
* The default value of the '{@link #getStreet() <em>Street</em>}'
* attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getStreet()
* @generated
* @ordered
*/
protected static final String STREET_EDEFAULT = null;
/**
* The cached value of the '{@link #getStreet() <em>Street</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getStreet()
* @generated
* @ordered
*/
protected String street = STREET_EDEFAULT;
/**
* The default value of the '{@link #getZip() <em>Zip</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getZip()
* @generated
* @ordered
*/
protected static final String ZIP_EDEFAULT = null;
/**
* The cached value of the '{@link #getZip() <em>Zip</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getZip()
* @generated
* @ordered
*/
protected String zip = ZIP_EDEFAULT;
/**
* The default value of the '{@link #getCity() <em>City</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getCity()
* @generated
* @ordered
*/
protected static final String CITY_EDEFAULT = null;
/**
* The cached value of the '{@link #getCity() <em>City</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getCity()
* @generated
* @ordered
*/
protected String city = CITY_EDEFAULT;
/**
* The cached value of the '{@link #getCountry() <em>Country</em>}'
* reference. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getCountry()
* @generated
* @ordered
*/
protected Country country;
/**
* The cached value of the '{@link #getFederalState()
* <em>Federal State</em>}' reference. <!-- begin-user-doc --> <!--
* end-user-doc -->
*
* @see #getFederalState()
* @generated
* @ordered
*/
protected FederalState federalState;
/**
* The default value of the '{@link #getType() <em>Type</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getType()
* @generated
* @ordered
*/
protected static final AddressType TYPE_EDEFAULT = AddressType.PRIVATE;
/**
* The cached value of the '{@link #getType() <em>Type</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see #getType()
* @generated
* @ordered
*/
protected AddressType type = TYPE_EDEFAULT;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected AddressImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return AddressbookPackage.Literals.ADDRESS;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public String getStreet() {
return street;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setStreet(String newStreet) {
String oldStreet = street;
street = newStreet;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__STREET, oldStreet, street));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public String getZip() {
return zip;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setZip(String newZip) {
String oldZip = zip;
zip = newZip;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__ZIP, oldZip, zip));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public String getCity() {
return city;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setCity(String newCity) {
String oldCity = city;
city = newCity;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__CITY, oldCity, city));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public Country getCountry() {
if (country != null && country.eIsProxy()) {
InternalEObject oldCountry = (InternalEObject) country;
country = (Country) eResolveProxy(oldCountry);
if (country != oldCountry) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
AddressbookPackage.ADDRESS__COUNTRY, oldCountry,
country));
}
}
return country;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public Country basicGetCountry() {
return country;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setCountry(Country newCountry) {
Country oldCountry = country;
country = newCountry;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__COUNTRY, oldCountry, country));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public FederalState getFederalState() {
if (federalState != null && federalState.eIsProxy()) {
InternalEObject oldFederalState = (InternalEObject) federalState;
federalState = (FederalState) eResolveProxy(oldFederalState);
if (federalState != oldFederalState) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
AddressbookPackage.ADDRESS__FEDERAL_STATE,
oldFederalState, federalState));
}
}
return federalState;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public FederalState basicGetFederalState() {
return federalState;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setFederalState(FederalState newFederalState) {
FederalState oldFederalState = federalState;
federalState = newFederalState;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__FEDERAL_STATE, oldFederalState,
federalState));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public AddressType getType() {
return type;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setType(AddressType newType) {
AddressType oldType = type;
type = newType == null ? TYPE_EDEFAULT : newType;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__TYPE, oldType, type));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public Person getPerson() {
if (eContainerFeatureID() != AddressbookPackage.ADDRESS__PERSON)
return null;
return (Person) eContainer();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public NotificationChain basicSetPerson(Person newPerson,
NotificationChain msgs) {
msgs = eBasicSetContainer((InternalEObject) newPerson,
AddressbookPackage.ADDRESS__PERSON, msgs);
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void setPerson(Person newPerson) {
if (newPerson != eInternalContainer()
|| (eContainerFeatureID() != AddressbookPackage.ADDRESS__PERSON && newPerson != null)) {
if (EcoreUtil.isAncestor(this, newPerson))
throw new IllegalArgumentException(
"Recursive containment not allowed for " + toString());
NotificationChain msgs = null;
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
if (newPerson != null)
msgs = ((InternalEObject) newPerson).eInverseAdd(this,
AddressbookPackage.PERSON__ADDRESSES, Person.class,
msgs);
msgs = basicSetPerson(newPerson, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
AddressbookPackage.ADDRESS__PERSON, newPerson, newPerson));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd,
int featureID, NotificationChain msgs) {
switch (featureID) {
case AddressbookPackage.ADDRESS__PERSON:
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
return basicSetPerson((Person) 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 AddressbookPackage.ADDRESS__PERSON:
return basicSetPerson(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public NotificationChain eBasicRemoveFromContainerFeature(
NotificationChain msgs) {
switch (eContainerFeatureID()) {
case AddressbookPackage.ADDRESS__PERSON:
return eInternalContainer().eInverseRemove(this,
AddressbookPackage.PERSON__ADDRESSES, Person.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 AddressbookPackage.ADDRESS__STREET:
return getStreet();
case AddressbookPackage.ADDRESS__ZIP:
return getZip();
case AddressbookPackage.ADDRESS__CITY:
return getCity();
case AddressbookPackage.ADDRESS__COUNTRY:
if (resolve)
return getCountry();
return basicGetCountry();
case AddressbookPackage.ADDRESS__FEDERAL_STATE:
if (resolve)
return getFederalState();
return basicGetFederalState();
case AddressbookPackage.ADDRESS__TYPE:
return getType();
case AddressbookPackage.ADDRESS__PERSON:
return getPerson();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case AddressbookPackage.ADDRESS__STREET:
setStreet((String) newValue);
return;
case AddressbookPackage.ADDRESS__ZIP:
setZip((String) newValue);
return;
case AddressbookPackage.ADDRESS__CITY:
setCity((String) newValue);
return;
case AddressbookPackage.ADDRESS__COUNTRY:
setCountry((Country) newValue);
return;
case AddressbookPackage.ADDRESS__FEDERAL_STATE:
setFederalState((FederalState) newValue);
return;
case AddressbookPackage.ADDRESS__TYPE:
setType((AddressType) newValue);
return;
case AddressbookPackage.ADDRESS__PERSON:
setPerson((Person) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case AddressbookPackage.ADDRESS__STREET:
setStreet(STREET_EDEFAULT);
return;
case AddressbookPackage.ADDRESS__ZIP:
setZip(ZIP_EDEFAULT);
return;
case AddressbookPackage.ADDRESS__CITY:
setCity(CITY_EDEFAULT);
return;
case AddressbookPackage.ADDRESS__COUNTRY:
setCountry((Country) null);
return;
case AddressbookPackage.ADDRESS__FEDERAL_STATE:
setFederalState((FederalState) null);
return;
case AddressbookPackage.ADDRESS__TYPE:
setType(TYPE_EDEFAULT);
return;
case AddressbookPackage.ADDRESS__PERSON:
setPerson((Person) null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case AddressbookPackage.ADDRESS__STREET:
return STREET_EDEFAULT == null ? street != null : !STREET_EDEFAULT
.equals(street);
case AddressbookPackage.ADDRESS__ZIP:
return ZIP_EDEFAULT == null ? zip != null : !ZIP_EDEFAULT
.equals(zip);
case AddressbookPackage.ADDRESS__CITY:
return CITY_EDEFAULT == null ? city != null : !CITY_EDEFAULT
.equals(city);
case AddressbookPackage.ADDRESS__COUNTRY:
return country != null;
case AddressbookPackage.ADDRESS__FEDERAL_STATE:
return federalState != null;
case AddressbookPackage.ADDRESS__TYPE:
return type != TYPE_EDEFAULT;
case AddressbookPackage.ADDRESS__PERSON:
return getPerson() != 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(" (street: ");
result.append(street);
result.append(", zip: ");
result.append(zip);
result.append(", city: ");
result.append(city);
result.append(", type: ");
result.append(type);
result.append(')');
return result.toString();
}
} // AddressImpl