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.EObjectContainmentEList;
019    import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
020    import org.eclipse.emf.ecore.util.InternalEList;
021    
022    import com.hammurapi.review.Baseline;
023    import com.hammurapi.review.Report;
024    import com.hammurapi.review.ReviewPackage;
025    import com.hammurapi.review.Revision;
026    
027    /**
028     * <!-- begin-user-doc -->
029     * An implementation of the model object '<em><b>Baseline</b></em>'.
030     * <!-- end-user-doc -->
031     * <p>
032     * The following features are implemented:
033     * <ul>
034     *   <li>{@link com.hammurapi.review.impl.BaselineImpl#getRoots <em>Roots</em>}</li>
035     *   <li>{@link com.hammurapi.review.impl.BaselineImpl#getTimestamp <em>Timestamp</em>}</li>
036     *   <li>{@link com.hammurapi.review.impl.BaselineImpl#getDescription <em>Description</em>}</li>
037     *   <li>{@link com.hammurapi.review.impl.BaselineImpl#getReports <em>Reports</em>}</li>
038     * </ul>
039     * </p>
040     *
041     * @generated
042     */
043    public class BaselineImpl extends EObjectImpl implements Baseline {
044            /**
045             * The cached value of the '{@link #getRoots() <em>Roots</em>}' containment reference list.
046             * <!-- begin-user-doc -->
047             * <!-- end-user-doc -->
048             * @see #getRoots()
049             * @generated
050             * @ordered
051             */
052            protected EList<Revision> roots;
053    
054            /**
055             * The default value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
056             * <!-- begin-user-doc -->
057             * <!-- end-user-doc -->
058             * @see #getTimestamp()
059             * @generated
060             * @ordered
061             */
062            protected static final long TIMESTAMP_EDEFAULT = 0L;
063    
064            /**
065             * The cached value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
066             * <!-- begin-user-doc -->
067             * <!-- end-user-doc -->
068             * @see #getTimestamp()
069             * @generated
070             * @ordered
071             */
072            protected long timestamp = TIMESTAMP_EDEFAULT;
073    
074            /**
075             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
076             * <!-- begin-user-doc -->
077             * <!-- end-user-doc -->
078             * @see #getDescription()
079             * @generated
080             * @ordered
081             */
082            protected static final String DESCRIPTION_EDEFAULT = null;
083    
084            /**
085             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
086             * <!-- begin-user-doc -->
087             * <!-- end-user-doc -->
088             * @see #getDescription()
089             * @generated
090             * @ordered
091             */
092            protected String description = DESCRIPTION_EDEFAULT;
093    
094            /**
095             * The cached value of the '{@link #getReports() <em>Reports</em>}' containment reference list.
096             * <!-- begin-user-doc -->
097             * <!-- end-user-doc -->
098             * @see #getReports()
099             * @generated
100             * @ordered
101             */
102            protected EList<Report> reports;
103    
104            /**
105             * <!-- begin-user-doc -->
106             * <!-- end-user-doc -->
107             * @generated
108             */
109            protected BaselineImpl() {
110                    super();
111            }
112    
113            /**
114             * <!-- begin-user-doc -->
115             * <!-- end-user-doc -->
116             * @generated
117             */
118            @Override
119            protected EClass eStaticClass() {
120                    return ReviewPackage.Literals.BASELINE;
121            }
122    
123            /**
124             * <!-- begin-user-doc -->
125             * <!-- end-user-doc -->
126             * @generated
127             */
128            public EList<Revision> getRoots() {
129                    if (roots == null) {
130                            roots = new EObjectContainmentEList<Revision>(Revision.class, this, ReviewPackage.BASELINE__ROOTS);
131                    }
132                    return roots;
133            }
134    
135            /**
136             * <!-- begin-user-doc -->
137             * <!-- end-user-doc -->
138             * @generated
139             */
140            public long getTimestamp() {
141                    return timestamp;
142            }
143    
144            /**
145             * <!-- begin-user-doc -->
146             * <!-- end-user-doc -->
147             * @generated
148             */
149            public void setTimestamp(long newTimestamp) {
150                    long oldTimestamp = timestamp;
151                    timestamp = newTimestamp;
152                    if (eNotificationRequired())
153                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.BASELINE__TIMESTAMP, oldTimestamp, timestamp));
154            }
155    
156            /**
157             * <!-- begin-user-doc -->
158             * <!-- end-user-doc -->
159             * @generated
160             */
161            public String getDescription() {
162                    return description;
163            }
164    
165            /**
166             * <!-- begin-user-doc -->
167             * <!-- end-user-doc -->
168             * @generated
169             */
170            public void setDescription(String newDescription) {
171                    String oldDescription = description;
172                    description = newDescription;
173                    if (eNotificationRequired())
174                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.BASELINE__DESCRIPTION, oldDescription, description));
175            }
176    
177            /**
178             * <!-- begin-user-doc -->
179             * <!-- end-user-doc -->
180             * @generated
181             */
182            public EList<Report> getReports() {
183                    if (reports == null) {
184                            reports = new EObjectContainmentWithInverseEList<Report>(Report.class, this, ReviewPackage.BASELINE__REPORTS, ReviewPackage.REPORT__BASELINE);
185                    }
186                    return reports;
187            }
188    
189            /**
190             * <!-- begin-user-doc -->
191             * <!-- end-user-doc -->
192             * @generated
193             */
194            @SuppressWarnings("unchecked")
195            @Override
196            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
197                    switch (featureID) {
198                            case ReviewPackage.BASELINE__REPORTS:
199                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getReports()).basicAdd(otherEnd, msgs);
200                    }
201                    return super.eInverseAdd(otherEnd, featureID, msgs);
202            }
203    
204            /**
205             * <!-- begin-user-doc -->
206             * <!-- end-user-doc -->
207             * @generated
208             */
209            @Override
210            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
211                    switch (featureID) {
212                            case ReviewPackage.BASELINE__ROOTS:
213                                    return ((InternalEList<?>)getRoots()).basicRemove(otherEnd, msgs);
214                            case ReviewPackage.BASELINE__REPORTS:
215                                    return ((InternalEList<?>)getReports()).basicRemove(otherEnd, msgs);
216                    }
217                    return super.eInverseRemove(otherEnd, featureID, msgs);
218            }
219    
220            /**
221             * <!-- begin-user-doc -->
222             * <!-- end-user-doc -->
223             * @generated
224             */
225            @Override
226            public Object eGet(int featureID, boolean resolve, boolean coreType) {
227                    switch (featureID) {
228                            case ReviewPackage.BASELINE__ROOTS:
229                                    return getRoots();
230                            case ReviewPackage.BASELINE__TIMESTAMP:
231                                    return getTimestamp();
232                            case ReviewPackage.BASELINE__DESCRIPTION:
233                                    return getDescription();
234                            case ReviewPackage.BASELINE__REPORTS:
235                                    return getReports();
236                    }
237                    return super.eGet(featureID, resolve, coreType);
238            }
239    
240            /**
241             * <!-- begin-user-doc -->
242             * <!-- end-user-doc -->
243             * @generated
244             */
245            @SuppressWarnings("unchecked")
246            @Override
247            public void eSet(int featureID, Object newValue) {
248                    switch (featureID) {
249                            case ReviewPackage.BASELINE__ROOTS:
250                                    getRoots().clear();
251                                    getRoots().addAll((Collection<? extends Revision>)newValue);
252                                    return;
253                            case ReviewPackage.BASELINE__TIMESTAMP:
254                                    setTimestamp((Long)newValue);
255                                    return;
256                            case ReviewPackage.BASELINE__DESCRIPTION:
257                                    setDescription((String)newValue);
258                                    return;
259                            case ReviewPackage.BASELINE__REPORTS:
260                                    getReports().clear();
261                                    getReports().addAll((Collection<? extends Report>)newValue);
262                                    return;
263                    }
264                    super.eSet(featureID, newValue);
265            }
266    
267            /**
268             * <!-- begin-user-doc -->
269             * <!-- end-user-doc -->
270             * @generated
271             */
272            @Override
273            public void eUnset(int featureID) {
274                    switch (featureID) {
275                            case ReviewPackage.BASELINE__ROOTS:
276                                    getRoots().clear();
277                                    return;
278                            case ReviewPackage.BASELINE__TIMESTAMP:
279                                    setTimestamp(TIMESTAMP_EDEFAULT);
280                                    return;
281                            case ReviewPackage.BASELINE__DESCRIPTION:
282                                    setDescription(DESCRIPTION_EDEFAULT);
283                                    return;
284                            case ReviewPackage.BASELINE__REPORTS:
285                                    getReports().clear();
286                                    return;
287                    }
288                    super.eUnset(featureID);
289            }
290    
291            /**
292             * <!-- begin-user-doc -->
293             * <!-- end-user-doc -->
294             * @generated
295             */
296            @Override
297            public boolean eIsSet(int featureID) {
298                    switch (featureID) {
299                            case ReviewPackage.BASELINE__ROOTS:
300                                    return roots != null && !roots.isEmpty();
301                            case ReviewPackage.BASELINE__TIMESTAMP:
302                                    return timestamp != TIMESTAMP_EDEFAULT;
303                            case ReviewPackage.BASELINE__DESCRIPTION:
304                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
305                            case ReviewPackage.BASELINE__REPORTS:
306                                    return reports != null && !reports.isEmpty();
307                    }
308                    return super.eIsSet(featureID);
309            }
310    
311            /**
312             * <!-- begin-user-doc -->
313             * <!-- end-user-doc -->
314             * @generated
315             */
316            @Override
317            public String toString() {
318                    if (eIsProxy()) return super.toString();
319    
320                    StringBuffer result = new StringBuffer(super.toString());
321                    result.append(" (timestamp: ");
322                    result.append(timestamp);
323                    result.append(", description: ");
324                    result.append(description);
325                    result.append(')');
326                    return result.toString();
327            }
328    
329    } //BaselineImpl