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.CallParameterDeviation; |
10 | import de.fzi.se.quality.qualityannotation.InternalStateInfluenceAnalysisAggregation; |
11 | import de.fzi.se.quality.qualityannotation.NumberOfCallsDeviation; |
12 | import de.fzi.se.quality.qualityannotation.QualityAnnotation; |
13 | import de.fzi.se.quality.qualityannotation.QualityAnnotationPackage; |
14 | |
15 | import de.uka.ipd.sdq.identifier.impl.IdentifierImpl; |
16 | |
17 | import java.util.Collection; |
18 | |
19 | import org.eclipse.emf.common.notify.Notification; |
20 | import org.eclipse.emf.common.notify.NotificationChain; |
21 | |
22 | import org.eclipse.emf.common.util.EList; |
23 | |
24 | import org.eclipse.emf.ecore.EClass; |
25 | import org.eclipse.emf.ecore.InternalEObject; |
26 | |
27 | import org.eclipse.emf.ecore.impl.ENotificationImpl; |
28 | |
29 | import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList; |
30 | import org.eclipse.emf.ecore.util.EcoreUtil; |
31 | import org.eclipse.emf.ecore.util.InternalEList; |
32 | |
33 | /** |
34 | * <!-- begin-user-doc --> |
35 | * An implementation of the model object '<em><b>Internal State Influence Analysis Aggregation</b></em>'. |
36 | * <!-- end-user-doc --> |
37 | * <p> |
38 | * The following features are implemented: |
39 | * <ul> |
40 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.InternalStateInfluenceAnalysisAggregationImpl#getQualityAnnotation <em>Quality Annotation</em>}</li> |
41 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.InternalStateInfluenceAnalysisAggregationImpl#getCallParameterDeviation <em>Call Parameter Deviation</em>}</li> |
42 | * <li>{@link de.fzi.se.quality.qualityannotation.impl.InternalStateInfluenceAnalysisAggregationImpl#getNumberOfCallsDeviation <em>Number Of Calls Deviation</em>}</li> |
43 | * </ul> |
44 | * </p> |
45 | * |
46 | * @generated |
47 | */ |
48 | public class InternalStateInfluenceAnalysisAggregationImpl extends IdentifierImpl implements InternalStateInfluenceAnalysisAggregation { |
49 | /** |
50 | * The cached value of the '{@link #getCallParameterDeviation() <em>Call Parameter Deviation</em>}' containment reference list. |
51 | * <!-- begin-user-doc --> |
52 | * <!-- end-user-doc --> |
53 | * @see #getCallParameterDeviation() |
54 | * @generated |
55 | * @ordered |
56 | */ |
57 | protected EList<CallParameterDeviation> callParameterDeviation; |
58 | |
59 | /** |
60 | * The cached value of the '{@link #getNumberOfCallsDeviation() <em>Number Of Calls Deviation</em>}' containment reference list. |
61 | * <!-- begin-user-doc --> |
62 | * <!-- end-user-doc --> |
63 | * @see #getNumberOfCallsDeviation() |
64 | * @generated |
65 | * @ordered |
66 | */ |
67 | protected EList<NumberOfCallsDeviation> numberOfCallsDeviation; |
68 | |
69 | /** |
70 | * <!-- begin-user-doc --> |
71 | * <!-- end-user-doc --> |
72 | * @generated |
73 | */ |
74 | protected InternalStateInfluenceAnalysisAggregationImpl() { |
75 | super(); |
76 | } |
77 | |
78 | /** |
79 | * <!-- begin-user-doc --> |
80 | * <!-- end-user-doc --> |
81 | * @generated |
82 | */ |
83 | @Override |
84 | protected EClass eStaticClass() { |
85 | return QualityAnnotationPackage.Literals.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION; |
86 | } |
87 | |
88 | /** |
89 | * <!-- begin-user-doc --> |
90 | * <!-- end-user-doc --> |
91 | * @generated |
92 | */ |
93 | public QualityAnnotation getQualityAnnotation() { |
94 | if (eContainerFeatureID() != QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION) return null; |
95 | return (QualityAnnotation)eContainer(); |
96 | } |
97 | |
98 | /** |
99 | * <!-- begin-user-doc --> |
100 | * <!-- end-user-doc --> |
101 | * @generated |
102 | */ |
103 | public NotificationChain basicSetQualityAnnotation(QualityAnnotation newQualityAnnotation, NotificationChain msgs) { |
104 | msgs = eBasicSetContainer((InternalEObject)newQualityAnnotation, QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION, msgs); |
105 | return msgs; |
106 | } |
107 | |
108 | /** |
109 | * <!-- begin-user-doc --> |
110 | * <!-- end-user-doc --> |
111 | * @generated |
112 | */ |
113 | public void setQualityAnnotation(QualityAnnotation newQualityAnnotation) { |
114 | if (newQualityAnnotation != eInternalContainer() || (eContainerFeatureID() != QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION && newQualityAnnotation != null)) { |
115 | if (EcoreUtil.isAncestor(this, newQualityAnnotation)) |
116 | throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); |
117 | NotificationChain msgs = null; |
118 | if (eInternalContainer() != null) |
119 | msgs = eBasicRemoveFromContainer(msgs); |
120 | if (newQualityAnnotation != null) |
121 | msgs = ((InternalEObject)newQualityAnnotation).eInverseAdd(this, QualityAnnotationPackage.QUALITY_ANNOTATION__INTERNAL_STATE_INFLUENCE_ANALYSIS_RESULT, QualityAnnotation.class, msgs); |
122 | msgs = basicSetQualityAnnotation(newQualityAnnotation, msgs); |
123 | if (msgs != null) msgs.dispatch(); |
124 | } |
125 | else if (eNotificationRequired()) |
126 | eNotify(new ENotificationImpl(this, Notification.SET, QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION, newQualityAnnotation, newQualityAnnotation)); |
127 | } |
128 | |
129 | /** |
130 | * <!-- begin-user-doc --> |
131 | * <!-- end-user-doc --> |
132 | * @generated |
133 | */ |
134 | public EList<CallParameterDeviation> getCallParameterDeviation() { |
135 | if (callParameterDeviation == null) { |
136 | callParameterDeviation = new EObjectContainmentWithInverseEList<CallParameterDeviation>(CallParameterDeviation.class, this, QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION, QualityAnnotationPackage.CALL_PARAMETER_DEVIATION__INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION); |
137 | } |
138 | return callParameterDeviation; |
139 | } |
140 | |
141 | /** |
142 | * <!-- begin-user-doc --> |
143 | * <!-- end-user-doc --> |
144 | * @generated |
145 | */ |
146 | public EList<NumberOfCallsDeviation> getNumberOfCallsDeviation() { |
147 | if (numberOfCallsDeviation == null) { |
148 | numberOfCallsDeviation = new EObjectContainmentWithInverseEList<NumberOfCallsDeviation>(NumberOfCallsDeviation.class, this, QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION, QualityAnnotationPackage.NUMBER_OF_CALLS_DEVIATION__INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION); |
149 | } |
150 | return numberOfCallsDeviation; |
151 | } |
152 | |
153 | /** |
154 | * <!-- begin-user-doc --> |
155 | * <!-- end-user-doc --> |
156 | * @generated |
157 | */ |
158 | @SuppressWarnings("unchecked") |
159 | @Override |
160 | public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { |
161 | switch (featureID) { |
162 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
163 | if (eInternalContainer() != null) |
164 | msgs = eBasicRemoveFromContainer(msgs); |
165 | return basicSetQualityAnnotation((QualityAnnotation)otherEnd, msgs); |
166 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
167 | return ((InternalEList<InternalEObject>)(InternalEList<?>)getCallParameterDeviation()).basicAdd(otherEnd, msgs); |
168 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
169 | return ((InternalEList<InternalEObject>)(InternalEList<?>)getNumberOfCallsDeviation()).basicAdd(otherEnd, msgs); |
170 | } |
171 | return super.eInverseAdd(otherEnd, featureID, msgs); |
172 | } |
173 | |
174 | /** |
175 | * <!-- begin-user-doc --> |
176 | * <!-- end-user-doc --> |
177 | * @generated |
178 | */ |
179 | @Override |
180 | public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { |
181 | switch (featureID) { |
182 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
183 | return basicSetQualityAnnotation(null, msgs); |
184 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
185 | return ((InternalEList<?>)getCallParameterDeviation()).basicRemove(otherEnd, msgs); |
186 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
187 | return ((InternalEList<?>)getNumberOfCallsDeviation()).basicRemove(otherEnd, msgs); |
188 | } |
189 | return super.eInverseRemove(otherEnd, featureID, msgs); |
190 | } |
191 | |
192 | /** |
193 | * <!-- begin-user-doc --> |
194 | * <!-- end-user-doc --> |
195 | * @generated |
196 | */ |
197 | @Override |
198 | public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { |
199 | switch (eContainerFeatureID()) { |
200 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
201 | return eInternalContainer().eInverseRemove(this, QualityAnnotationPackage.QUALITY_ANNOTATION__INTERNAL_STATE_INFLUENCE_ANALYSIS_RESULT, QualityAnnotation.class, msgs); |
202 | } |
203 | return super.eBasicRemoveFromContainerFeature(msgs); |
204 | } |
205 | |
206 | /** |
207 | * <!-- begin-user-doc --> |
208 | * <!-- end-user-doc --> |
209 | * @generated |
210 | */ |
211 | @Override |
212 | public Object eGet(int featureID, boolean resolve, boolean coreType) { |
213 | switch (featureID) { |
214 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
215 | return getQualityAnnotation(); |
216 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
217 | return getCallParameterDeviation(); |
218 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
219 | return getNumberOfCallsDeviation(); |
220 | } |
221 | return super.eGet(featureID, resolve, coreType); |
222 | } |
223 | |
224 | /** |
225 | * <!-- begin-user-doc --> |
226 | * <!-- end-user-doc --> |
227 | * @generated |
228 | */ |
229 | @SuppressWarnings("unchecked") |
230 | @Override |
231 | public void eSet(int featureID, Object newValue) { |
232 | switch (featureID) { |
233 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
234 | setQualityAnnotation((QualityAnnotation)newValue); |
235 | return; |
236 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
237 | getCallParameterDeviation().clear(); |
238 | getCallParameterDeviation().addAll((Collection<? extends CallParameterDeviation>)newValue); |
239 | return; |
240 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
241 | getNumberOfCallsDeviation().clear(); |
242 | getNumberOfCallsDeviation().addAll((Collection<? extends NumberOfCallsDeviation>)newValue); |
243 | return; |
244 | } |
245 | super.eSet(featureID, newValue); |
246 | } |
247 | |
248 | /** |
249 | * <!-- begin-user-doc --> |
250 | * <!-- end-user-doc --> |
251 | * @generated |
252 | */ |
253 | @Override |
254 | public void eUnset(int featureID) { |
255 | switch (featureID) { |
256 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
257 | setQualityAnnotation((QualityAnnotation)null); |
258 | return; |
259 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
260 | getCallParameterDeviation().clear(); |
261 | return; |
262 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
263 | getNumberOfCallsDeviation().clear(); |
264 | return; |
265 | } |
266 | super.eUnset(featureID); |
267 | } |
268 | |
269 | /** |
270 | * <!-- begin-user-doc --> |
271 | * <!-- end-user-doc --> |
272 | * @generated |
273 | */ |
274 | @Override |
275 | public boolean eIsSet(int featureID) { |
276 | switch (featureID) { |
277 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__QUALITY_ANNOTATION: |
278 | return getQualityAnnotation() != null; |
279 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__CALL_PARAMETER_DEVIATION: |
280 | return callParameterDeviation != null && !callParameterDeviation.isEmpty(); |
281 | case QualityAnnotationPackage.INTERNAL_STATE_INFLUENCE_ANALYSIS_AGGREGATION__NUMBER_OF_CALLS_DEVIATION: |
282 | return numberOfCallsDeviation != null && !numberOfCallsDeviation.isEmpty(); |
283 | } |
284 | return super.eIsSet(featureID); |
285 | } |
286 | |
287 | } //InternalStateInfluenceAnalysisAggregationImpl |