001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.review.impl;
008    
009    import java.util.Collection;
010    
011    import org.eclipse.emf.common.notify.Notification;
012    import org.eclipse.emf.common.notify.NotificationChain;
013    import org.eclipse.emf.common.util.EList;
014    import org.eclipse.emf.ecore.EClass;
015    import org.eclipse.emf.ecore.InternalEObject;
016    import org.eclipse.emf.ecore.impl.ENotificationImpl;
017    import org.eclipse.emf.ecore.impl.EObjectImpl;
018    import org.eclipse.emf.ecore.util.EObjectResolvingEList;
019    import org.eclipse.emf.ecore.util.EcoreUtil;
020    
021    import com.hammurapi.review.Baseline;
022    import com.hammurapi.review.InspectorSet;
023    import com.hammurapi.review.Observation;
024    import com.hammurapi.review.Report;
025    import com.hammurapi.review.ReviewPackage;
026    
027    /**
028     * <!-- begin-user-doc -->
029     * An implementation of the model object '<em><b>Report</b></em>'.
030     * <!-- end-user-doc -->
031     * <p>
032     * The following features are implemented:
033     * <ul>
034     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getObservations <em>Observations</em>}</li>
035     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getInspectorSets <em>Inspector Sets</em>}</li>
036     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getBaseline <em>Baseline</em>}</li>
037     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getDescription <em>Description</em>}</li>
038     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getName <em>Name</em>}</li>
039     *   <li>{@link com.hammurapi.review.impl.ReportImpl#getTimestamp <em>Timestamp</em>}</li>
040     * </ul>
041     * </p>
042     *
043     * @generated
044     */
045    public class ReportImpl extends EObjectImpl implements Report {
046            /**
047             * The cached value of the '{@link #getObservations() <em>Observations</em>}' reference.
048             * <!-- begin-user-doc -->
049             * <!-- end-user-doc -->
050             * @see #getObservations()
051             * @generated
052             * @ordered
053             */
054            protected Observation observations;
055    
056            /**
057             * The cached value of the '{@link #getInspectorSets() <em>Inspector Sets</em>}' reference list.
058             * <!-- begin-user-doc -->
059             * <!-- end-user-doc -->
060             * @see #getInspectorSets()
061             * @generated
062             * @ordered
063             */
064            protected EList<InspectorSet> inspectorSets;
065    
066            /**
067             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
068             * <!-- begin-user-doc -->
069             * <!-- end-user-doc -->
070             * @see #getDescription()
071             * @generated
072             * @ordered
073             */
074            protected static final String DESCRIPTION_EDEFAULT = null;
075    
076            /**
077             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
078             * <!-- begin-user-doc -->
079             * <!-- end-user-doc -->
080             * @see #getDescription()
081             * @generated
082             * @ordered
083             */
084            protected String description = DESCRIPTION_EDEFAULT;
085    
086            /**
087             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
088             * <!-- begin-user-doc -->
089             * <!-- end-user-doc -->
090             * @see #getName()
091             * @generated
092             * @ordered
093             */
094            protected static final String NAME_EDEFAULT = null;
095    
096            /**
097             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
098             * <!-- begin-user-doc -->
099             * <!-- end-user-doc -->
100             * @see #getName()
101             * @generated
102             * @ordered
103             */
104            protected String name = NAME_EDEFAULT;
105    
106            /**
107             * The default value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
108             * <!-- begin-user-doc -->
109             * <!-- end-user-doc -->
110             * @see #getTimestamp()
111             * @generated
112             * @ordered
113             */
114            protected static final String TIMESTAMP_EDEFAULT = null;
115    
116            /**
117             * The cached value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
118             * <!-- begin-user-doc -->
119             * <!-- end-user-doc -->
120             * @see #getTimestamp()
121             * @generated
122             * @ordered
123             */
124            protected String timestamp = TIMESTAMP_EDEFAULT;
125    
126            /**
127             * <!-- begin-user-doc -->
128             * <!-- end-user-doc -->
129             * @generated
130             */
131            protected ReportImpl() {
132                    super();
133            }
134    
135            /**
136             * <!-- begin-user-doc -->
137             * <!-- end-user-doc -->
138             * @generated
139             */
140            @Override
141            protected EClass eStaticClass() {
142                    return ReviewPackage.Literals.REPORT;
143            }
144    
145            /**
146             * <!-- begin-user-doc -->
147             * <!-- end-user-doc -->
148             * @generated
149             */
150            public Observation getObservations() {
151                    if (observations != null && observations.eIsProxy()) {
152                            InternalEObject oldObservations = (InternalEObject)observations;
153                            observations = (Observation)eResolveProxy(oldObservations);
154                            if (observations != oldObservations) {
155                                    if (eNotificationRequired())
156                                            eNotify(new ENotificationImpl(this, Notification.RESOLVE, ReviewPackage.REPORT__OBSERVATIONS, oldObservations, observations));
157                            }
158                    }
159                    return observations;
160            }
161    
162            /**
163             * <!-- begin-user-doc -->
164             * <!-- end-user-doc -->
165             * @generated
166             */
167            public Observation basicGetObservations() {
168                    return observations;
169            }
170    
171            /**
172             * <!-- begin-user-doc -->
173             * <!-- end-user-doc -->
174             * @generated
175             */
176            public NotificationChain basicSetObservations(Observation newObservations, NotificationChain msgs) {
177                    Observation oldObservations = observations;
178                    observations = newObservations;
179                    if (eNotificationRequired()) {
180                            ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__OBSERVATIONS, oldObservations, newObservations);
181                            if (msgs == null) msgs = notification; else msgs.add(notification);
182                    }
183                    return msgs;
184            }
185    
186            /**
187             * <!-- begin-user-doc -->
188             * <!-- end-user-doc -->
189             * @generated
190             */
191            public void setObservations(Observation newObservations) {
192                    if (newObservations != observations) {
193                            NotificationChain msgs = null;
194                            if (observations != null)
195                                    msgs = ((InternalEObject)observations).eInverseRemove(this, ReviewPackage.OBSERVATION__REPORT, Observation.class, msgs);
196                            if (newObservations != null)
197                                    msgs = ((InternalEObject)newObservations).eInverseAdd(this, ReviewPackage.OBSERVATION__REPORT, Observation.class, msgs);
198                            msgs = basicSetObservations(newObservations, msgs);
199                            if (msgs != null) msgs.dispatch();
200                    }
201                    else if (eNotificationRequired())
202                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__OBSERVATIONS, newObservations, newObservations));
203            }
204    
205            /**
206             * <!-- begin-user-doc -->
207             * <!-- end-user-doc -->
208             * @generated
209             */
210            public EList<InspectorSet> getInspectorSets() {
211                    if (inspectorSets == null) {
212                            inspectorSets = new EObjectResolvingEList<InspectorSet>(InspectorSet.class, this, ReviewPackage.REPORT__INSPECTOR_SETS);
213                    }
214                    return inspectorSets;
215            }
216    
217            /**
218             * <!-- begin-user-doc -->
219             * <!-- end-user-doc -->
220             * @generated
221             */
222            public Baseline getBaseline() {
223                    if (eContainerFeatureID() != ReviewPackage.REPORT__BASELINE) return null;
224                    return (Baseline)eContainer();
225            }
226    
227            /**
228             * <!-- begin-user-doc -->
229             * <!-- end-user-doc -->
230             * @generated
231             */
232            public NotificationChain basicSetBaseline(Baseline newBaseline, NotificationChain msgs) {
233                    msgs = eBasicSetContainer((InternalEObject)newBaseline, ReviewPackage.REPORT__BASELINE, msgs);
234                    return msgs;
235            }
236    
237            /**
238             * <!-- begin-user-doc -->
239             * <!-- end-user-doc -->
240             * @generated
241             */
242            public void setBaseline(Baseline newBaseline) {
243                    if (newBaseline != eInternalContainer() || (eContainerFeatureID() != ReviewPackage.REPORT__BASELINE && newBaseline != null)) {
244                            if (EcoreUtil.isAncestor(this, newBaseline))
245                                    throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
246                            NotificationChain msgs = null;
247                            if (eInternalContainer() != null)
248                                    msgs = eBasicRemoveFromContainer(msgs);
249                            if (newBaseline != null)
250                                    msgs = ((InternalEObject)newBaseline).eInverseAdd(this, ReviewPackage.BASELINE__REPORTS, Baseline.class, msgs);
251                            msgs = basicSetBaseline(newBaseline, msgs);
252                            if (msgs != null) msgs.dispatch();
253                    }
254                    else if (eNotificationRequired())
255                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__BASELINE, newBaseline, newBaseline));
256            }
257    
258            /**
259             * <!-- begin-user-doc -->
260             * <!-- end-user-doc -->
261             * @generated
262             */
263            public String getDescription() {
264                    return description;
265            }
266    
267            /**
268             * <!-- begin-user-doc -->
269             * <!-- end-user-doc -->
270             * @generated
271             */
272            public void setDescription(String newDescription) {
273                    String oldDescription = description;
274                    description = newDescription;
275                    if (eNotificationRequired())
276                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__DESCRIPTION, oldDescription, description));
277            }
278    
279            /**
280             * <!-- begin-user-doc -->
281             * <!-- end-user-doc -->
282             * @generated
283             */
284            public String getName() {
285                    return name;
286            }
287    
288            /**
289             * <!-- begin-user-doc -->
290             * <!-- end-user-doc -->
291             * @generated
292             */
293            public void setName(String newName) {
294                    String oldName = name;
295                    name = newName;
296                    if (eNotificationRequired())
297                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__NAME, oldName, name));
298            }
299    
300            /**
301             * <!-- begin-user-doc -->
302             * <!-- end-user-doc -->
303             * @generated
304             */
305            public String getTimestamp() {
306                    return timestamp;
307            }
308    
309            /**
310             * <!-- begin-user-doc -->
311             * <!-- end-user-doc -->
312             * @generated
313             */
314            public void setTimestamp(String newTimestamp) {
315                    String oldTimestamp = timestamp;
316                    timestamp = newTimestamp;
317                    if (eNotificationRequired())
318                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.REPORT__TIMESTAMP, oldTimestamp, timestamp));
319            }
320    
321            /**
322             * <!-- begin-user-doc -->
323             * <!-- end-user-doc -->
324             * @generated
325             */
326            @Override
327            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
328                    switch (featureID) {
329                            case ReviewPackage.REPORT__OBSERVATIONS:
330                                    if (observations != null)
331                                            msgs = ((InternalEObject)observations).eInverseRemove(this, ReviewPackage.OBSERVATION__REPORT, Observation.class, msgs);
332                                    return basicSetObservations((Observation)otherEnd, msgs);
333                            case ReviewPackage.REPORT__BASELINE:
334                                    if (eInternalContainer() != null)
335                                            msgs = eBasicRemoveFromContainer(msgs);
336                                    return basicSetBaseline((Baseline)otherEnd, msgs);
337                    }
338                    return super.eInverseAdd(otherEnd, featureID, msgs);
339            }
340    
341            /**
342             * <!-- begin-user-doc -->
343             * <!-- end-user-doc -->
344             * @generated
345             */
346            @Override
347            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
348                    switch (featureID) {
349                            case ReviewPackage.REPORT__OBSERVATIONS:
350                                    return basicSetObservations(null, msgs);
351                            case ReviewPackage.REPORT__BASELINE:
352                                    return basicSetBaseline(null, msgs);
353                    }
354                    return super.eInverseRemove(otherEnd, featureID, msgs);
355            }
356    
357            /**
358             * <!-- begin-user-doc -->
359             * <!-- end-user-doc -->
360             * @generated
361             */
362            @Override
363            public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
364                    switch (eContainerFeatureID()) {
365                            case ReviewPackage.REPORT__BASELINE:
366                                    return eInternalContainer().eInverseRemove(this, ReviewPackage.BASELINE__REPORTS, Baseline.class, msgs);
367                    }
368                    return super.eBasicRemoveFromContainerFeature(msgs);
369            }
370    
371            /**
372             * <!-- begin-user-doc -->
373             * <!-- end-user-doc -->
374             * @generated
375             */
376            @Override
377            public Object eGet(int featureID, boolean resolve, boolean coreType) {
378                    switch (featureID) {
379                            case ReviewPackage.REPORT__OBSERVATIONS:
380                                    if (resolve) return getObservations();
381                                    return basicGetObservations();
382                            case ReviewPackage.REPORT__INSPECTOR_SETS:
383                                    return getInspectorSets();
384                            case ReviewPackage.REPORT__BASELINE:
385                                    return getBaseline();
386                            case ReviewPackage.REPORT__DESCRIPTION:
387                                    return getDescription();
388                            case ReviewPackage.REPORT__NAME:
389                                    return getName();
390                            case ReviewPackage.REPORT__TIMESTAMP:
391                                    return getTimestamp();
392                    }
393                    return super.eGet(featureID, resolve, coreType);
394            }
395    
396            /**
397             * <!-- begin-user-doc -->
398             * <!-- end-user-doc -->
399             * @generated
400             */
401            @SuppressWarnings("unchecked")
402            @Override
403            public void eSet(int featureID, Object newValue) {
404                    switch (featureID) {
405                            case ReviewPackage.REPORT__OBSERVATIONS:
406                                    setObservations((Observation)newValue);
407                                    return;
408                            case ReviewPackage.REPORT__INSPECTOR_SETS:
409                                    getInspectorSets().clear();
410                                    getInspectorSets().addAll((Collection<? extends InspectorSet>)newValue);
411                                    return;
412                            case ReviewPackage.REPORT__BASELINE:
413                                    setBaseline((Baseline)newValue);
414                                    return;
415                            case ReviewPackage.REPORT__DESCRIPTION:
416                                    setDescription((String)newValue);
417                                    return;
418                            case ReviewPackage.REPORT__NAME:
419                                    setName((String)newValue);
420                                    return;
421                            case ReviewPackage.REPORT__TIMESTAMP:
422                                    setTimestamp((String)newValue);
423                                    return;
424                    }
425                    super.eSet(featureID, newValue);
426            }
427    
428            /**
429             * <!-- begin-user-doc -->
430             * <!-- end-user-doc -->
431             * @generated
432             */
433            @Override
434            public void eUnset(int featureID) {
435                    switch (featureID) {
436                            case ReviewPackage.REPORT__OBSERVATIONS:
437                                    setObservations((Observation)null);
438                                    return;
439                            case ReviewPackage.REPORT__INSPECTOR_SETS:
440                                    getInspectorSets().clear();
441                                    return;
442                            case ReviewPackage.REPORT__BASELINE:
443                                    setBaseline((Baseline)null);
444                                    return;
445                            case ReviewPackage.REPORT__DESCRIPTION:
446                                    setDescription(DESCRIPTION_EDEFAULT);
447                                    return;
448                            case ReviewPackage.REPORT__NAME:
449                                    setName(NAME_EDEFAULT);
450                                    return;
451                            case ReviewPackage.REPORT__TIMESTAMP:
452                                    setTimestamp(TIMESTAMP_EDEFAULT);
453                                    return;
454                    }
455                    super.eUnset(featureID);
456            }
457    
458            /**
459             * <!-- begin-user-doc -->
460             * <!-- end-user-doc -->
461             * @generated
462             */
463            @Override
464            public boolean eIsSet(int featureID) {
465                    switch (featureID) {
466                            case ReviewPackage.REPORT__OBSERVATIONS:
467                                    return observations != null;
468                            case ReviewPackage.REPORT__INSPECTOR_SETS:
469                                    return inspectorSets != null && !inspectorSets.isEmpty();
470                            case ReviewPackage.REPORT__BASELINE:
471                                    return getBaseline() != null;
472                            case ReviewPackage.REPORT__DESCRIPTION:
473                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
474                            case ReviewPackage.REPORT__NAME:
475                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
476                            case ReviewPackage.REPORT__TIMESTAMP:
477                                    return TIMESTAMP_EDEFAULT == null ? timestamp != null : !TIMESTAMP_EDEFAULT.equals(timestamp);
478                    }
479                    return super.eIsSet(featureID);
480            }
481    
482            /**
483             * <!-- begin-user-doc -->
484             * <!-- end-user-doc -->
485             * @generated
486             */
487            @Override
488            public String toString() {
489                    if (eIsProxy()) return super.toString();
490    
491                    StringBuffer result = new StringBuffer(super.toString());
492                    result.append(" (description: ");
493                    result.append(description);
494                    result.append(", name: ");
495                    result.append(name);
496                    result.append(", timestamp: ");
497                    result.append(timestamp);
498                    result.append(')');
499                    return result.toString();
500            }
501    
502    } //ReportImpl