001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.review.impl;
008    
009    import com.hammurapi.review.Inspector;
010    import com.hammurapi.review.InspectorRelationship;
011    import com.hammurapi.review.ReviewPackage;
012    
013    import org.eclipse.emf.common.notify.Notification;
014    import org.eclipse.emf.common.notify.NotificationChain;
015    
016    import org.eclipse.emf.ecore.EClass;
017    import org.eclipse.emf.ecore.InternalEObject;
018    
019    import org.eclipse.emf.ecore.impl.ENotificationImpl;
020    import org.eclipse.emf.ecore.impl.EObjectImpl;
021    
022    import org.eclipse.emf.ecore.util.EcoreUtil;
023    
024    /**
025     * <!-- begin-user-doc -->
026     * An implementation of the model object '<em><b>Inspector Relationship</b></em>'.
027     * <!-- end-user-doc -->
028     * <p>
029     * The following features are implemented:
030     * <ul>
031     *   <li>{@link com.hammurapi.review.impl.InspectorRelationshipImpl#getDescription <em>Description</em>}</li>
032     *   <li>{@link com.hammurapi.review.impl.InspectorRelationshipImpl#getTarget <em>Target</em>}</li>
033     *   <li>{@link com.hammurapi.review.impl.InspectorRelationshipImpl#getSource <em>Source</em>}</li>
034     * </ul>
035     * </p>
036     *
037     * @generated
038     */
039    public class InspectorRelationshipImpl extends EObjectImpl implements InspectorRelationship {
040            /**
041             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
042             * <!-- begin-user-doc -->
043             * <!-- end-user-doc -->
044             * @see #getDescription()
045             * @generated
046             * @ordered
047             */
048            protected static final String DESCRIPTION_EDEFAULT = null;
049    
050            /**
051             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
052             * <!-- begin-user-doc -->
053             * <!-- end-user-doc -->
054             * @see #getDescription()
055             * @generated
056             * @ordered
057             */
058            protected String description = DESCRIPTION_EDEFAULT;
059    
060            /**
061             * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
062             * <!-- begin-user-doc -->
063             * <!-- end-user-doc -->
064             * @see #getTarget()
065             * @generated
066             * @ordered
067             */
068            protected Inspector target;
069    
070            /**
071             * <!-- begin-user-doc -->
072             * <!-- end-user-doc -->
073             * @generated
074             */
075            protected InspectorRelationshipImpl() {
076                    super();
077            }
078    
079            /**
080             * <!-- begin-user-doc -->
081             * <!-- end-user-doc -->
082             * @generated
083             */
084            @Override
085            protected EClass eStaticClass() {
086                    return ReviewPackage.Literals.INSPECTOR_RELATIONSHIP;
087            }
088    
089            /**
090             * <!-- begin-user-doc -->
091             * <!-- end-user-doc -->
092             * @generated
093             */
094            public String getDescription() {
095                    return description;
096            }
097    
098            /**
099             * <!-- begin-user-doc -->
100             * <!-- end-user-doc -->
101             * @generated
102             */
103            public void setDescription(String newDescription) {
104                    String oldDescription = description;
105                    description = newDescription;
106                    if (eNotificationRequired())
107                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.INSPECTOR_RELATIONSHIP__DESCRIPTION, oldDescription, description));
108            }
109    
110            /**
111             * <!-- begin-user-doc -->
112             * <!-- end-user-doc -->
113             * @generated
114             */
115            public Inspector getTarget() {
116                    if (target != null && target.eIsProxy()) {
117                            InternalEObject oldTarget = (InternalEObject)target;
118                            target = (Inspector)eResolveProxy(oldTarget);
119                            if (target != oldTarget) {
120                                    if (eNotificationRequired())
121                                            eNotify(new ENotificationImpl(this, Notification.RESOLVE, ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET, oldTarget, target));
122                            }
123                    }
124                    return target;
125            }
126    
127            /**
128             * <!-- begin-user-doc -->
129             * <!-- end-user-doc -->
130             * @generated
131             */
132            public Inspector basicGetTarget() {
133                    return target;
134            }
135    
136            /**
137             * <!-- begin-user-doc -->
138             * <!-- end-user-doc -->
139             * @generated
140             */
141            public NotificationChain basicSetTarget(Inspector newTarget, NotificationChain msgs) {
142                    Inspector oldTarget = target;
143                    target = newTarget;
144                    if (eNotificationRequired()) {
145                            ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET, oldTarget, newTarget);
146                            if (msgs == null) msgs = notification; else msgs.add(notification);
147                    }
148                    return msgs;
149            }
150    
151            /**
152             * <!-- begin-user-doc -->
153             * <!-- end-user-doc -->
154             * @generated
155             */
156            public void setTarget(Inspector newTarget) {
157                    if (newTarget != target) {
158                            NotificationChain msgs = null;
159                            if (target != null)
160                                    msgs = ((InternalEObject)target).eInverseRemove(this, ReviewPackage.INSPECTOR__INBOUND_RELATIONSHIPS, Inspector.class, msgs);
161                            if (newTarget != null)
162                                    msgs = ((InternalEObject)newTarget).eInverseAdd(this, ReviewPackage.INSPECTOR__INBOUND_RELATIONSHIPS, Inspector.class, msgs);
163                            msgs = basicSetTarget(newTarget, msgs);
164                            if (msgs != null) msgs.dispatch();
165                    }
166                    else if (eNotificationRequired())
167                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET, newTarget, newTarget));
168            }
169    
170            /**
171             * <!-- begin-user-doc -->
172             * <!-- end-user-doc -->
173             * @generated
174             */
175            public Inspector getSource() {
176                    if (eContainerFeatureID() != ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE) return null;
177                    return (Inspector)eContainer();
178            }
179    
180            /**
181             * <!-- begin-user-doc -->
182             * <!-- end-user-doc -->
183             * @generated
184             */
185            public NotificationChain basicSetSource(Inspector newSource, NotificationChain msgs) {
186                    msgs = eBasicSetContainer((InternalEObject)newSource, ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE, msgs);
187                    return msgs;
188            }
189    
190            /**
191             * <!-- begin-user-doc -->
192             * <!-- end-user-doc -->
193             * @generated
194             */
195            public void setSource(Inspector newSource) {
196                    if (newSource != eInternalContainer() || (eContainerFeatureID() != ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE && newSource != null)) {
197                            if (EcoreUtil.isAncestor(this, newSource))
198                                    throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
199                            NotificationChain msgs = null;
200                            if (eInternalContainer() != null)
201                                    msgs = eBasicRemoveFromContainer(msgs);
202                            if (newSource != null)
203                                    msgs = ((InternalEObject)newSource).eInverseAdd(this, ReviewPackage.INSPECTOR__OUTBOUND_RELATIONSHIPS, Inspector.class, msgs);
204                            msgs = basicSetSource(newSource, msgs);
205                            if (msgs != null) msgs.dispatch();
206                    }
207                    else if (eNotificationRequired())
208                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE, newSource, newSource));
209            }
210    
211            /**
212             * <!-- begin-user-doc -->
213             * <!-- end-user-doc -->
214             * @generated
215             */
216            @Override
217            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
218                    switch (featureID) {
219                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
220                                    if (target != null)
221                                            msgs = ((InternalEObject)target).eInverseRemove(this, ReviewPackage.INSPECTOR__INBOUND_RELATIONSHIPS, Inspector.class, msgs);
222                                    return basicSetTarget((Inspector)otherEnd, msgs);
223                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
224                                    if (eInternalContainer() != null)
225                                            msgs = eBasicRemoveFromContainer(msgs);
226                                    return basicSetSource((Inspector)otherEnd, msgs);
227                    }
228                    return super.eInverseAdd(otherEnd, featureID, msgs);
229            }
230    
231            /**
232             * <!-- begin-user-doc -->
233             * <!-- end-user-doc -->
234             * @generated
235             */
236            @Override
237            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
238                    switch (featureID) {
239                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
240                                    return basicSetTarget(null, msgs);
241                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
242                                    return basicSetSource(null, msgs);
243                    }
244                    return super.eInverseRemove(otherEnd, featureID, msgs);
245            }
246    
247            /**
248             * <!-- begin-user-doc -->
249             * <!-- end-user-doc -->
250             * @generated
251             */
252            @Override
253            public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
254                    switch (eContainerFeatureID()) {
255                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
256                                    return eInternalContainer().eInverseRemove(this, ReviewPackage.INSPECTOR__OUTBOUND_RELATIONSHIPS, Inspector.class, msgs);
257                    }
258                    return super.eBasicRemoveFromContainerFeature(msgs);
259            }
260    
261            /**
262             * <!-- begin-user-doc -->
263             * <!-- end-user-doc -->
264             * @generated
265             */
266            @Override
267            public Object eGet(int featureID, boolean resolve, boolean coreType) {
268                    switch (featureID) {
269                            case ReviewPackage.INSPECTOR_RELATIONSHIP__DESCRIPTION:
270                                    return getDescription();
271                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
272                                    if (resolve) return getTarget();
273                                    return basicGetTarget();
274                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
275                                    return getSource();
276                    }
277                    return super.eGet(featureID, resolve, coreType);
278            }
279    
280            /**
281             * <!-- begin-user-doc -->
282             * <!-- end-user-doc -->
283             * @generated
284             */
285            @Override
286            public void eSet(int featureID, Object newValue) {
287                    switch (featureID) {
288                            case ReviewPackage.INSPECTOR_RELATIONSHIP__DESCRIPTION:
289                                    setDescription((String)newValue);
290                                    return;
291                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
292                                    setTarget((Inspector)newValue);
293                                    return;
294                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
295                                    setSource((Inspector)newValue);
296                                    return;
297                    }
298                    super.eSet(featureID, newValue);
299            }
300    
301            /**
302             * <!-- begin-user-doc -->
303             * <!-- end-user-doc -->
304             * @generated
305             */
306            @Override
307            public void eUnset(int featureID) {
308                    switch (featureID) {
309                            case ReviewPackage.INSPECTOR_RELATIONSHIP__DESCRIPTION:
310                                    setDescription(DESCRIPTION_EDEFAULT);
311                                    return;
312                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
313                                    setTarget((Inspector)null);
314                                    return;
315                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
316                                    setSource((Inspector)null);
317                                    return;
318                    }
319                    super.eUnset(featureID);
320            }
321    
322            /**
323             * <!-- begin-user-doc -->
324             * <!-- end-user-doc -->
325             * @generated
326             */
327            @Override
328            public boolean eIsSet(int featureID) {
329                    switch (featureID) {
330                            case ReviewPackage.INSPECTOR_RELATIONSHIP__DESCRIPTION:
331                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
332                            case ReviewPackage.INSPECTOR_RELATIONSHIP__TARGET:
333                                    return target != null;
334                            case ReviewPackage.INSPECTOR_RELATIONSHIP__SOURCE:
335                                    return getSource() != null;
336                    }
337                    return super.eIsSet(featureID);
338            }
339    
340            /**
341             * <!-- begin-user-doc -->
342             * <!-- end-user-doc -->
343             * @generated
344             */
345            @Override
346            public String toString() {
347                    if (eIsProxy()) return super.toString();
348    
349                    StringBuffer result = new StringBuffer(super.toString());
350                    result.append(" (description: ");
351                    result.append(description);
352                    result.append(')');
353                    return result.toString();
354            }
355    
356    } //InspectorRelationshipImpl