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