1 | /** |
2 | * <copyright> |
3 | * </copyright> |
4 | * |
5 | * $Id$ |
6 | */ |
7 | package de.fzi.se.quality.qualityannotation.impl; |
8 | |
9 | import de.fzi.se.quality.qualityannotation.NumberOfCallsDeviation; |
10 | import de.fzi.se.quality.qualityannotation.QualityAnnotation; |
11 | import de.fzi.se.quality.qualityannotation.QualityAnnotationPackage; |
12 | import de.fzi.se.quality.qualityannotation.REPrecision; |
13 | import de.fzi.se.quality.qualityannotation.RequiredElement; |
14 | |
15 | import de.fzi.se.quality.qualityannotation.util.QualityAnnotationValidator; |
16 | |
17 | import de.uka.ipd.sdq.identifier.impl.IdentifierImpl; |
18 | |
19 | import java.util.Collection; |
20 | import java.util.Map; |
21 | |
22 | import org.eclipse.emf.common.notify.Notification; |
23 | import org.eclipse.emf.common.notify.NotificationChain; |
24 | |
25 | import org.eclipse.emf.common.util.BasicDiagnostic; |
26 | import org.eclipse.emf.common.util.Diagnostic; |
27 | import org.eclipse.emf.common.util.DiagnosticChain; |
28 | import org.eclipse.emf.common.util.EList; |
29 | |
30 | import org.eclipse.emf.ecore.EClass; |
31 | import org.eclipse.emf.ecore.InternalEObject; |
32 | |
33 | import org.eclipse.emf.ecore.impl.ENotificationImpl; |
34 | |
35 | import org.eclipse.emf.ecore.plugin.EcorePlugin; |
36 | |
37 | import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; |
38 | import org.eclipse.emf.ecore.util.EObjectValidator; |
39 | import org.eclipse.emf.ecore.util.EcoreUtil; |
40 | import org.eclipse.emf.ecore.util.InternalEList; |
41 | |
42 | /** |
43 | * <!-- begin-user-doc --> |
44 | * An implementation of the model object '<em><b>Required Element</b></em>'. |
45 | * <!-- end-user-doc --> |
46 | * <p> |
47 | * The following features are implemented: |
48 | * <ul> |
49 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.RequiredElementImpl#getNumberOfCallsDeviation <em>Number Of Calls Deviation</em>}</li> |
50 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.RequiredElementImpl#getChildREs <em>Child REs</em>}</li> |
51 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.RequiredElementImpl#getParentRE <em>Parent RE</em>}</li> |
52 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.RequiredElementImpl#getPrecision <em>Precision</em>}</li> |
53 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.RequiredElementImpl#getQualityAnnotation <em>Quality Annotation</em>}</li> |
54 | * </ul> |
55 | * </p> |
56 | * |
57 | * @generated |
58 | */ |
59 | public class RequiredElementImpl extends IdentifierImpl implements RequiredElement { |
60 | /** |
61 | * The cached value of the '{@link #getChildREs() <em>Child REs</em>}' containment reference list. |
62 | * <!-- begin-user-doc --> |
63 | * <!-- end-user-doc --> |
64 | * @see #getChildREs() |
65 | * @generated |
66 | * @ordered |
67 | */ |
68 | protected EList<RequiredElement> childREs; |
69 | |
70 | /** |
71 | * The cached value of the '{@link #getPrecision() <em>Precision</em>}' containment reference. |
72 | * <!-- begin-user-doc --> |
73 | * <!-- end-user-doc --> |
74 | * @see #getPrecision() |
75 | * @generated |
76 | * @ordered |
77 | */ |
78 | protected REPrecision precision; |
79 | |
80 | /** |
81 | * <!-- begin-user-doc --> |
82 | * <!-- end-user-doc --> |
83 | * @generated |
84 | */ |
85 | protected RequiredElementImpl() { |
86 | super(); |
87 | } |
88 | |
89 | /** |
90 | * <!-- begin-user-doc --> |
91 | * <!-- end-user-doc --> |
92 | * @generated |
93 | */ |
94 | @Override |
95 | protected EClass eStaticClass() { |
96 | return QualityAnnotationPackage.Literals.REQUIRED_ELEMENT; |
97 | } |
98 | |
99 | /** |
100 | * <!-- begin-user-doc --> |
101 | * <!-- end-user-doc --> |
102 | * @generated |
103 | */ |
104 | public NumberOfCallsDeviation getNumberOfCallsDeviation() { |
105 | if (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION) return null; |
106 | return (NumberOfCallsDeviation)eContainer(); |
107 | } |
108 | |
109 | /** |
110 | * <!-- begin-user-doc --> |
111 | * <!-- end-user-doc --> |
112 | * @generated |
113 | */ |
114 | public NotificationChain basicSetNumberOfCallsDeviation(NumberOfCallsDeviation newNumberOfCallsDeviation, NotificationChain msgs) { |
115 | msgs = eBasicSetContainer((InternalEObject)newNumberOfCallsDeviation, QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION, msgs); |
116 | return msgs; |
117 | } |
118 | |
119 | /** |
120 | * <!-- begin-user-doc --> |
121 | * <!-- end-user-doc --> |
122 | * @generated |
123 | */ |
124 | public void setNumberOfCallsDeviation(NumberOfCallsDeviation newNumberOfCallsDeviation) { |
125 | if (newNumberOfCallsDeviation != eInternalContainer() || (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION && newNumberOfCallsDeviation != null)) { |
126 | if (EcoreUtil.isAncestor(this, newNumberOfCallsDeviation)) |
127 | throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); |
128 | NotificationChain msgs = null; |
129 | if (eInternalContainer() != null) |
130 | msgs = eBasicRemoveFromContainer(msgs); |
131 | if (newNumberOfCallsDeviation != null) |
132 | msgs = ((InternalEObject)newNumberOfCallsDeviation).eInverseAdd(this, QualityAnnotationPackage.NUMBER_OF_CALLS_DEVIATION__REQUIRED_ELEMENT, NumberOfCallsDeviation.class, msgs); |
133 | msgs = basicSetNumberOfCallsDeviation(newNumberOfCallsDeviation, msgs); |
134 | if (msgs != null) msgs.dispatch(); |
135 | } |
136 | else if (eNotificationRequired()) |
137 | eNotify(new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION, newNumberOfCallsDeviation, newNumberOfCallsDeviation)); |
138 | } |
139 | |
140 | /** |
141 | * <!-- begin-user-doc --> |
142 | * <!-- end-user-doc --> |
143 | * @generated |
144 | */ |
145 | public EList<RequiredElement> getChildREs() { |
146 | if (childREs == null) { |
147 | childREs = new EObjectContainmentWithInverseEList<RequiredElement>(RequiredElement.class, this, QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES, QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE); |
148 | } |
149 | return childREs; |
150 | } |
151 | |
152 | /** |
153 | * <!-- begin-user-doc --> |
154 | * <!-- end-user-doc --> |
155 | * @generated |
156 | */ |
157 | public RequiredElement getParentRE() { |
158 | if (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE) return null; |
159 | return (RequiredElement)eContainer(); |
160 | } |
161 | |
162 | /** |
163 | * <!-- begin-user-doc --> |
164 | * <!-- end-user-doc --> |
165 | * @generated |
166 | */ |
167 | public NotificationChain basicSetParentRE(RequiredElement newParentRE, NotificationChain msgs) { |
168 | msgs = eBasicSetContainer((InternalEObject)newParentRE, QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE, msgs); |
169 | return msgs; |
170 | } |
171 | |
172 | /** |
173 | * <!-- begin-user-doc --> |
174 | * <!-- end-user-doc --> |
175 | * @generated |
176 | */ |
177 | public void setParentRE(RequiredElement newParentRE) { |
178 | if (newParentRE != eInternalContainer() || (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE && newParentRE != null)) { |
179 | if (EcoreUtil.isAncestor(this, newParentRE)) |
180 | throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); |
181 | NotificationChain msgs = null; |
182 | if (eInternalContainer() != null) |
183 | msgs = eBasicRemoveFromContainer(msgs); |
184 | if (newParentRE != null) |
185 | msgs = ((InternalEObject)newParentRE).eInverseAdd(this, QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES, RequiredElement.class, msgs); |
186 | msgs = basicSetParentRE(newParentRE, msgs); |
187 | if (msgs != null) msgs.dispatch(); |
188 | } |
189 | else if (eNotificationRequired()) |
190 | eNotify(new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE, newParentRE, newParentRE)); |
191 | } |
192 | |
193 | /** |
194 | * <!-- begin-user-doc --> |
195 | * <!-- end-user-doc --> |
196 | * @generated |
197 | */ |
198 | public REPrecision getPrecision() { |
199 | return precision; |
200 | } |
201 | |
202 | /** |
203 | * <!-- begin-user-doc --> |
204 | * <!-- end-user-doc --> |
205 | * @generated |
206 | */ |
207 | public NotificationChain basicSetPrecision(REPrecision newPrecision, NotificationChain msgs) { |
208 | REPrecision oldPrecision = precision; |
209 | precision = newPrecision; |
210 | if (eNotificationRequired()) { |
211 | ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION, oldPrecision, newPrecision); |
212 | if (msgs == null) msgs = notification; else msgs.add(notification); |
213 | } |
214 | return msgs; |
215 | } |
216 | |
217 | /** |
218 | * <!-- begin-user-doc --> |
219 | * <!-- end-user-doc --> |
220 | * @generated |
221 | */ |
222 | public void setPrecision(REPrecision newPrecision) { |
223 | if (newPrecision != precision) { |
224 | NotificationChain msgs = null; |
225 | if (precision != null) |
226 | msgs = ((InternalEObject)precision).eInverseRemove(this, QualityAnnotationPackage.RE_PRECISION__REQUIRED_ELEMENT, REPrecision.class, msgs); |
227 | if (newPrecision != null) |
228 | msgs = ((InternalEObject)newPrecision).eInverseAdd(this, QualityAnnotationPackage.RE_PRECISION__REQUIRED_ELEMENT, REPrecision.class, msgs); |
229 | msgs = basicSetPrecision(newPrecision, msgs); |
230 | if (msgs != null) msgs.dispatch(); |
231 | } |
232 | else if (eNotificationRequired()) |
233 | eNotify(new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION, newPrecision, newPrecision)); |
234 | } |
235 | |
236 | /** |
237 | * <!-- begin-user-doc --> |
238 | * <!-- end-user-doc --> |
239 | * @generated |
240 | */ |
241 | public QualityAnnotation getQualityAnnotation() { |
242 | if (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION) return null; |
243 | return (QualityAnnotation)eContainer(); |
244 | } |
245 | |
246 | /** |
247 | * <!-- begin-user-doc --> |
248 | * <!-- end-user-doc --> |
249 | * @generated |
250 | */ |
251 | public NotificationChain basicSetQualityAnnotation(QualityAnnotation newQualityAnnotation, NotificationChain msgs) { |
252 | msgs = eBasicSetContainer((InternalEObject)newQualityAnnotation, QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION, msgs); |
253 | return msgs; |
254 | } |
255 | |
256 | /** |
257 | * <!-- begin-user-doc --> |
258 | * <!-- end-user-doc --> |
259 | * @generated |
260 | */ |
261 | public void setQualityAnnotation(QualityAnnotation newQualityAnnotation) { |
262 | if (newQualityAnnotation != eInternalContainer() || (eContainerFeatureID() != QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION && newQualityAnnotation != null)) { |
263 | if (EcoreUtil.isAncestor(this, newQualityAnnotation)) |
264 | throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); |
265 | NotificationChain msgs = null; |
266 | if (eInternalContainer() != null) |
267 | msgs = eBasicRemoveFromContainer(msgs); |
268 | if (newQualityAnnotation != null) |
269 | msgs = ((InternalEObject)newQualityAnnotation).eInverseAdd(this, QualityAnnotationPackage.QUALITY_ANNOTATION__STIPULATED_RE_PRECISIONS, QualityAnnotation.class, msgs); |
270 | msgs = basicSetQualityAnnotation(newQualityAnnotation, msgs); |
271 | if (msgs != null) msgs.dispatch(); |
272 | } |
273 | else if (eNotificationRequired()) |
274 | eNotify(new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION, newQualityAnnotation, newQualityAnnotation)); |
275 | } |
276 | |
277 | /** |
278 | * <!-- begin-user-doc --> |
279 | * <!-- end-user-doc --> |
280 | * @generated |
281 | */ |
282 | public boolean StipulatedPrecisionMustBeSetInStipulationContext(DiagnosticChain diagnostics, Map<Object, Object> context) { |
283 | // TODO: implement this method |
284 | // -> specify the condition that violates the invariant |
285 | // -> verify the details of the diagnostic, including severity and message |
286 | // Ensure that you remove @generated or mark it @generated NOT |
287 | if (false) { |
288 | if (diagnostics != null) { |
289 | diagnostics.add |
290 | (new BasicDiagnostic |
291 | (Diagnostic.ERROR, |
292 | QualityAnnotationValidator.DIAGNOSTIC_SOURCE, |
293 | QualityAnnotationValidator.REQUIRED_ELEMENT__STIPULATED_PRECISION_MUST_BE_SET_IN_STIPULATION_CONTEXT, |
294 | EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "StipulatedPrecisionMustBeSetInStipulationContext", EObjectValidator.getObjectLabel(this, context) }), |
295 | new Object [] { this })); |
296 | } |
297 | return false; |
298 | } |
299 | return true; |
300 | } |
301 | |
302 | /** |
303 | * <!-- begin-user-doc --> |
304 | * <!-- end-user-doc --> |
305 | * @generated |
306 | */ |
307 | @SuppressWarnings("unchecked") |
308 | @Override |
309 | public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { |
310 | switch (featureID) { |
311 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
312 | if (eInternalContainer() != null) |
313 | msgs = eBasicRemoveFromContainer(msgs); |
314 | return basicSetNumberOfCallsDeviation((NumberOfCallsDeviation)otherEnd, msgs); |
315 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
316 | return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildREs()).basicAdd(otherEnd, msgs); |
317 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
318 | if (eInternalContainer() != null) |
319 | msgs = eBasicRemoveFromContainer(msgs); |
320 | return basicSetParentRE((RequiredElement)otherEnd, msgs); |
321 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
322 | if (precision != null) |
323 | msgs = ((InternalEObject)precision).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION, null, msgs); |
324 | return basicSetPrecision((REPrecision)otherEnd, msgs); |
325 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
326 | if (eInternalContainer() != null) |
327 | msgs = eBasicRemoveFromContainer(msgs); |
328 | return basicSetQualityAnnotation((QualityAnnotation)otherEnd, msgs); |
329 | } |
330 | return super.eInverseAdd(otherEnd, featureID, msgs); |
331 | } |
332 | |
333 | /** |
334 | * <!-- begin-user-doc --> |
335 | * <!-- end-user-doc --> |
336 | * @generated |
337 | */ |
338 | @Override |
339 | public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { |
340 | switch (featureID) { |
341 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
342 | return basicSetNumberOfCallsDeviation(null, msgs); |
343 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
344 | return ((InternalEList<?>)getChildREs()).basicRemove(otherEnd, msgs); |
345 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
346 | return basicSetParentRE(null, msgs); |
347 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
348 | return basicSetPrecision(null, msgs); |
349 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
350 | return basicSetQualityAnnotation(null, msgs); |
351 | } |
352 | return super.eInverseRemove(otherEnd, featureID, msgs); |
353 | } |
354 | |
355 | /** |
356 | * <!-- begin-user-doc --> |
357 | * <!-- end-user-doc --> |
358 | * @generated |
359 | */ |
360 | @Override |
361 | public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { |
362 | switch (eContainerFeatureID()) { |
363 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
364 | return eInternalContainer().eInverseRemove(this, QualityAnnotationPackage.NUMBER_OF_CALLS_DEVIATION__REQUIRED_ELEMENT, NumberOfCallsDeviation.class, msgs); |
365 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
366 | return eInternalContainer().eInverseRemove(this, QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES, RequiredElement.class, msgs); |
367 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
368 | return eInternalContainer().eInverseRemove(this, QualityAnnotationPackage.QUALITY_ANNOTATION__STIPULATED_RE_PRECISIONS, QualityAnnotation.class, msgs); |
369 | } |
370 | return super.eBasicRemoveFromContainerFeature(msgs); |
371 | } |
372 | |
373 | /** |
374 | * <!-- begin-user-doc --> |
375 | * <!-- end-user-doc --> |
376 | * @generated |
377 | */ |
378 | @Override |
379 | public Object eGet(int featureID, boolean resolve, boolean coreType) { |
380 | switch (featureID) { |
381 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
382 | return getNumberOfCallsDeviation(); |
383 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
384 | return getChildREs(); |
385 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
386 | return getParentRE(); |
387 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
388 | return getPrecision(); |
389 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
390 | return getQualityAnnotation(); |
391 | } |
392 | return super.eGet(featureID, resolve, coreType); |
393 | } |
394 | |
395 | /** |
396 | * <!-- begin-user-doc --> |
397 | * <!-- end-user-doc --> |
398 | * @generated |
399 | */ |
400 | @SuppressWarnings("unchecked") |
401 | @Override |
402 | public void eSet(int featureID, Object newValue) { |
403 | switch (featureID) { |
404 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
405 | setNumberOfCallsDeviation((NumberOfCallsDeviation)newValue); |
406 | return; |
407 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
408 | getChildREs().clear(); |
409 | getChildREs().addAll((Collection<? extends RequiredElement>)newValue); |
410 | return; |
411 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
412 | setParentRE((RequiredElement)newValue); |
413 | return; |
414 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
415 | setPrecision((REPrecision)newValue); |
416 | return; |
417 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
418 | setQualityAnnotation((QualityAnnotation)newValue); |
419 | return; |
420 | } |
421 | super.eSet(featureID, newValue); |
422 | } |
423 | |
424 | /** |
425 | * <!-- begin-user-doc --> |
426 | * <!-- end-user-doc --> |
427 | * @generated |
428 | */ |
429 | @Override |
430 | public void eUnset(int featureID) { |
431 | switch (featureID) { |
432 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
433 | setNumberOfCallsDeviation((NumberOfCallsDeviation)null); |
434 | return; |
435 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
436 | getChildREs().clear(); |
437 | return; |
438 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
439 | setParentRE((RequiredElement)null); |
440 | return; |
441 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
442 | setPrecision((REPrecision)null); |
443 | return; |
444 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
445 | setQualityAnnotation((QualityAnnotation)null); |
446 | return; |
447 | } |
448 | super.eUnset(featureID); |
449 | } |
450 | |
451 | /** |
452 | * <!-- begin-user-doc --> |
453 | * <!-- end-user-doc --> |
454 | * @generated |
455 | */ |
456 | @Override |
457 | public boolean eIsSet(int featureID) { |
458 | switch (featureID) { |
459 | case QualityAnnotationPackage.REQUIRED_ELEMENT__NUMBER_OF_CALLS_DEVIATION: |
460 | return getNumberOfCallsDeviation() != null; |
461 | case QualityAnnotationPackage.REQUIRED_ELEMENT__CHILD_RES: |
462 | return childREs != null && !childREs.isEmpty(); |
463 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PARENT_RE: |
464 | return getParentRE() != null; |
465 | case QualityAnnotationPackage.REQUIRED_ELEMENT__PRECISION: |
466 | return precision != null; |
467 | case QualityAnnotationPackage.REQUIRED_ELEMENT__QUALITY_ANNOTATION: |
468 | return getQualityAnnotation() != null; |
469 | } |
470 | return super.eIsSet(featureID); |
471 | } |
472 | |
473 | } //RequiredElementImpl |