001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.review.impl;
008    
009    import com.hammurapi.config.Named;
010    import com.hammurapi.config.Factory;
011    import java.util.Collection;
012    
013    import org.eclipse.emf.common.notify.Notification;
014    import org.eclipse.emf.common.notify.NotificationChain;
015    import org.eclipse.emf.common.util.EList;
016    import org.eclipse.emf.ecore.EClass;
017    import org.eclipse.emf.ecore.InternalEObject;
018    import org.eclipse.emf.ecore.impl.ENotificationImpl;
019    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
020    import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
021    import org.eclipse.emf.ecore.util.EObjectResolvingEList;
022    import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
023    import org.eclipse.emf.ecore.util.InternalEList;
024    
025    import com.hammurapi.config.impl.NamedObjectDefinitionImpl;
026    import com.hammurapi.review.Inspector;
027    import com.hammurapi.review.InspectorCategory;
028    import com.hammurapi.review.InspectorSet;
029    import com.hammurapi.review.ReviewPackage;
030    import com.hammurapi.review.ToolVersion;
031    
032    /**
033     * <!-- begin-user-doc -->
034     * An implementation of the model object '<em><b>Inspector Set</b></em>'.
035     * <!-- end-user-doc -->
036     * <p>
037     * The following features are implemented:
038     * <ul>
039     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getLanguageModules <em>Language Modules</em>}</li>
040     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getEnforcedBy <em>Enforced By</em>}</li>
041     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getInspectors <em>Inspectors</em>}</li>
042     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getCategories <em>Categories</em>}</li>
043     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getBase <em>Base</em>}</li>
044     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getVersion <em>Version</em>}</li>
045     *   <li>{@link com.hammurapi.review.impl.InspectorSetImpl#getIncludedInspectors <em>Included Inspectors</em>}</li>
046     * </ul>
047     * </p>
048     *
049     * @generated
050     */
051    public class InspectorSetImpl extends NamedObjectDefinitionImpl implements InspectorSet {
052            /**
053             * The cached value of the '{@link #getLanguageModules() <em>Language Modules</em>}' reference list.
054             * <!-- begin-user-doc -->
055             * <!-- end-user-doc -->
056             * @see #getLanguageModules()
057             * @generated
058             * @ordered
059             */
060            protected EList<Named> languageModules;
061    
062            /**
063             * The cached value of the '{@link #getEnforcedBy() <em>Enforced By</em>}' reference list.
064             * <!-- begin-user-doc -->
065             * <!-- end-user-doc -->
066             * @see #getEnforcedBy()
067             * @generated
068             * @ordered
069             */
070            protected EList<ToolVersion> enforcedBy;
071    
072            /**
073             * The cached value of the '{@link #getInspectors() <em>Inspectors</em>}' containment reference list.
074             * <!-- begin-user-doc -->
075             * <!-- end-user-doc -->
076             * @see #getInspectors()
077             * @generated
078             * @ordered
079             */
080            protected EList<Inspector> inspectors;
081    
082            /**
083             * The cached value of the '{@link #getCategories() <em>Categories</em>}' containment reference list.
084             * <!-- begin-user-doc -->
085             * <!-- end-user-doc -->
086             * @see #getCategories()
087             * @generated
088             * @ordered
089             */
090            protected EList<InspectorCategory> categories;
091    
092            /**
093             * The cached value of the '{@link #getBase() <em>Base</em>}' reference list.
094             * <!-- begin-user-doc -->
095             * <!-- end-user-doc -->
096             * @see #getBase()
097             * @generated
098             * @ordered
099             */
100            protected EList<InspectorSet> base;
101    
102            /**
103             * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
104             * <!-- begin-user-doc -->
105             * <!-- end-user-doc -->
106             * @see #getVersion()
107             * @generated
108             * @ordered
109             */
110            protected static final String VERSION_EDEFAULT = null;
111    
112            /**
113             * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
114             * <!-- begin-user-doc -->
115             * <!-- end-user-doc -->
116             * @see #getVersion()
117             * @generated
118             * @ordered
119             */
120            protected String version = VERSION_EDEFAULT;
121    
122            /**
123             * The cached value of the '{@link #getIncludedInspectors() <em>Included Inspectors</em>}' reference list.
124             * <!-- begin-user-doc -->
125             * <!-- end-user-doc -->
126             * @see #getIncludedInspectors()
127             * @generated
128             * @ordered
129             */
130            protected EList<Inspector> includedInspectors;
131    
132            /**
133             * <!-- begin-user-doc -->
134             * <!-- end-user-doc -->
135             * @generated
136             */
137            protected InspectorSetImpl() {
138                    super();
139            }
140    
141            /**
142             * <!-- begin-user-doc -->
143             * <!-- end-user-doc -->
144             * @generated
145             */
146            @Override
147            protected EClass eStaticClass() {
148                    return ReviewPackage.Literals.INSPECTOR_SET;
149            }
150    
151            /**
152             * <!-- begin-user-doc -->
153             * <!-- end-user-doc -->
154             * @generated
155             */
156            public EList<Named> getLanguageModules() {
157                    if (languageModules == null) {
158                            languageModules = new EObjectResolvingEList<Named>(Named.class, this, ReviewPackage.INSPECTOR_SET__LANGUAGE_MODULES);
159                    }
160                    return languageModules;
161            }
162    
163            /**
164             * <!-- begin-user-doc -->
165             * <!-- end-user-doc -->
166             * @generated
167             */
168            public EList<ToolVersion> getEnforcedBy() {
169                    if (enforcedBy == null) {
170                            enforcedBy = new EObjectWithInverseResolvingEList.ManyInverse<ToolVersion>(ToolVersion.class, this, ReviewPackage.INSPECTOR_SET__ENFORCED_BY, ReviewPackage.TOOL_VERSION__ENFORCES);
171                    }
172                    return enforcedBy;
173            }
174    
175            /**
176             * <!-- begin-user-doc -->
177             * <!-- end-user-doc -->
178             * @generated
179             */
180            public EList<Inspector> getInspectors() {
181                    if (inspectors == null) {
182                            inspectors = new EObjectContainmentWithInverseEList<Inspector>(Inspector.class, this, ReviewPackage.INSPECTOR_SET__INSPECTORS, ReviewPackage.INSPECTOR__INSPECTOR_SET);
183                    }
184                    return inspectors;
185            }
186    
187            /**
188             * <!-- begin-user-doc -->
189             * <!-- end-user-doc -->
190             * @generated
191             */
192            public EList<InspectorCategory> getCategories() {
193                    if (categories == null) {
194                            categories = new EObjectContainmentEList<InspectorCategory>(InspectorCategory.class, this, ReviewPackage.INSPECTOR_SET__CATEGORIES);
195                    }
196                    return categories;
197            }
198    
199            /**
200             * <!-- begin-user-doc -->
201             * <!-- end-user-doc -->
202             * @generated
203             */
204            public EList<InspectorSet> getBase() {
205                    if (base == null) {
206                            base = new EObjectResolvingEList<InspectorSet>(InspectorSet.class, this, ReviewPackage.INSPECTOR_SET__BASE);
207                    }
208                    return base;
209            }
210    
211            /**
212             * <!-- begin-user-doc -->
213             * <!-- end-user-doc -->
214             * @generated
215             */
216            public String getVersion() {
217                    return version;
218            }
219    
220            /**
221             * <!-- begin-user-doc -->
222             * <!-- end-user-doc -->
223             * @generated
224             */
225            public void setVersion(String newVersion) {
226                    String oldVersion = version;
227                    version = newVersion;
228                    if (eNotificationRequired())
229                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.INSPECTOR_SET__VERSION, oldVersion, version));
230            }
231    
232            /**
233             * <!-- begin-user-doc -->
234             * <!-- end-user-doc -->
235             * @generated
236             */
237            public EList<Inspector> getIncludedInspectors() {
238                    if (includedInspectors == null) {
239                            includedInspectors = new EObjectResolvingEList<Inspector>(Inspector.class, this, ReviewPackage.INSPECTOR_SET__INCLUDED_INSPECTORS);
240                    }
241                    return includedInspectors;
242            }
243    
244            /**
245             * <!-- begin-user-doc -->
246             * <!-- end-user-doc -->
247             * @generated
248             */
249            @SuppressWarnings("unchecked")
250            @Override
251            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
252                    switch (featureID) {
253                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
254                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getEnforcedBy()).basicAdd(otherEnd, msgs);
255                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
256                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getInspectors()).basicAdd(otherEnd, msgs);
257                    }
258                    return super.eInverseAdd(otherEnd, featureID, msgs);
259            }
260    
261            /**
262             * <!-- begin-user-doc -->
263             * <!-- end-user-doc -->
264             * @generated
265             */
266            @Override
267            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
268                    switch (featureID) {
269                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
270                                    return ((InternalEList<?>)getEnforcedBy()).basicRemove(otherEnd, msgs);
271                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
272                                    return ((InternalEList<?>)getInspectors()).basicRemove(otherEnd, msgs);
273                            case ReviewPackage.INSPECTOR_SET__CATEGORIES:
274                                    return ((InternalEList<?>)getCategories()).basicRemove(otherEnd, msgs);
275                    }
276                    return super.eInverseRemove(otherEnd, featureID, msgs);
277            }
278    
279            /**
280             * <!-- begin-user-doc -->
281             * <!-- end-user-doc -->
282             * @generated
283             */
284            @Override
285            public Object eGet(int featureID, boolean resolve, boolean coreType) {
286                    switch (featureID) {
287                            case ReviewPackage.INSPECTOR_SET__LANGUAGE_MODULES:
288                                    return getLanguageModules();
289                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
290                                    return getEnforcedBy();
291                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
292                                    return getInspectors();
293                            case ReviewPackage.INSPECTOR_SET__CATEGORIES:
294                                    return getCategories();
295                            case ReviewPackage.INSPECTOR_SET__BASE:
296                                    return getBase();
297                            case ReviewPackage.INSPECTOR_SET__VERSION:
298                                    return getVersion();
299                            case ReviewPackage.INSPECTOR_SET__INCLUDED_INSPECTORS:
300                                    return getIncludedInspectors();
301                    }
302                    return super.eGet(featureID, resolve, coreType);
303            }
304    
305            /**
306             * <!-- begin-user-doc -->
307             * <!-- end-user-doc -->
308             * @generated
309             */
310            @SuppressWarnings("unchecked")
311            @Override
312            public void eSet(int featureID, Object newValue) {
313                    switch (featureID) {
314                            case ReviewPackage.INSPECTOR_SET__LANGUAGE_MODULES:
315                                    getLanguageModules().clear();
316                                    getLanguageModules().addAll((Collection<? extends Named>)newValue);
317                                    return;
318                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
319                                    getEnforcedBy().clear();
320                                    getEnforcedBy().addAll((Collection<? extends ToolVersion>)newValue);
321                                    return;
322                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
323                                    getInspectors().clear();
324                                    getInspectors().addAll((Collection<? extends Inspector>)newValue);
325                                    return;
326                            case ReviewPackage.INSPECTOR_SET__CATEGORIES:
327                                    getCategories().clear();
328                                    getCategories().addAll((Collection<? extends InspectorCategory>)newValue);
329                                    return;
330                            case ReviewPackage.INSPECTOR_SET__BASE:
331                                    getBase().clear();
332                                    getBase().addAll((Collection<? extends InspectorSet>)newValue);
333                                    return;
334                            case ReviewPackage.INSPECTOR_SET__VERSION:
335                                    setVersion((String)newValue);
336                                    return;
337                            case ReviewPackage.INSPECTOR_SET__INCLUDED_INSPECTORS:
338                                    getIncludedInspectors().clear();
339                                    getIncludedInspectors().addAll((Collection<? extends Inspector>)newValue);
340                                    return;
341                    }
342                    super.eSet(featureID, newValue);
343            }
344    
345            /**
346             * <!-- begin-user-doc -->
347             * <!-- end-user-doc -->
348             * @generated
349             */
350            @Override
351            public void eUnset(int featureID) {
352                    switch (featureID) {
353                            case ReviewPackage.INSPECTOR_SET__LANGUAGE_MODULES:
354                                    getLanguageModules().clear();
355                                    return;
356                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
357                                    getEnforcedBy().clear();
358                                    return;
359                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
360                                    getInspectors().clear();
361                                    return;
362                            case ReviewPackage.INSPECTOR_SET__CATEGORIES:
363                                    getCategories().clear();
364                                    return;
365                            case ReviewPackage.INSPECTOR_SET__BASE:
366                                    getBase().clear();
367                                    return;
368                            case ReviewPackage.INSPECTOR_SET__VERSION:
369                                    setVersion(VERSION_EDEFAULT);
370                                    return;
371                            case ReviewPackage.INSPECTOR_SET__INCLUDED_INSPECTORS:
372                                    getIncludedInspectors().clear();
373                                    return;
374                    }
375                    super.eUnset(featureID);
376            }
377    
378            /**
379             * <!-- begin-user-doc -->
380             * <!-- end-user-doc -->
381             * @generated
382             */
383            @Override
384            public boolean eIsSet(int featureID) {
385                    switch (featureID) {
386                            case ReviewPackage.INSPECTOR_SET__LANGUAGE_MODULES:
387                                    return languageModules != null && !languageModules.isEmpty();
388                            case ReviewPackage.INSPECTOR_SET__ENFORCED_BY:
389                                    return enforcedBy != null && !enforcedBy.isEmpty();
390                            case ReviewPackage.INSPECTOR_SET__INSPECTORS:
391                                    return inspectors != null && !inspectors.isEmpty();
392                            case ReviewPackage.INSPECTOR_SET__CATEGORIES:
393                                    return categories != null && !categories.isEmpty();
394                            case ReviewPackage.INSPECTOR_SET__BASE:
395                                    return base != null && !base.isEmpty();
396                            case ReviewPackage.INSPECTOR_SET__VERSION:
397                                    return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
398                            case ReviewPackage.INSPECTOR_SET__INCLUDED_INSPECTORS:
399                                    return includedInspectors != null && !includedInspectors.isEmpty();
400                    }
401                    return super.eIsSet(featureID);
402            }
403    
404            /**
405             * <!-- begin-user-doc -->
406             * <!-- end-user-doc -->
407             * @generated
408             */
409            @Override
410            public String toString() {
411                    if (eIsProxy()) return super.toString();
412    
413                    StringBuffer result = new StringBuffer(super.toString());
414                    result.append(" (version: ");
415                    result.append(version);
416                    result.append(')');
417                    return result.toString();
418            }
419    
420    } //InspectorSetImpl