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.EDataTypeUniqueEList;
019    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
020    import org.eclipse.emf.ecore.util.EObjectResolvingEList;
021    import org.eclipse.emf.ecore.util.InternalEList;
022    
023    import com.hammurapi.config.Factory;
024    import com.hammurapi.config.Path;
025    import com.hammurapi.review.InspectorSet;
026    import com.hammurapi.review.Module;
027    import com.hammurapi.review.ReviewPackage;
028    
029    /**
030     * <!-- begin-user-doc -->
031     * An implementation of the model object '<em><b>Module</b></em>'.
032     * <!-- end-user-doc -->
033     * <p>
034     * The following features are implemented:
035     * <ul>
036     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getInspectorSet <em>Inspector Set</em>}</li>
037     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getName <em>Name</em>}</li>
038     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getDescription <em>Description</em>}</li>
039     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getSource <em>Source</em>}</li>
040     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getClassPath <em>Class Path</em>}</li>
041     *   <li>{@link com.hammurapi.review.impl.ModuleImpl#getModel <em>Model</em>}</li>
042     * </ul>
043     * </p>
044     *
045     * @generated
046     */
047    public class ModuleImpl extends EObjectImpl implements Module {
048            /**
049             * The cached value of the '{@link #getInspectorSet() <em>Inspector Set</em>}' reference list.
050             * <!-- begin-user-doc -->
051             * <!-- end-user-doc -->
052             * @see #getInspectorSet()
053             * @generated
054             * @ordered
055             */
056            protected EList<InspectorSet> inspectorSet;
057    
058            /**
059             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
060             * <!-- begin-user-doc -->
061             * <!-- end-user-doc -->
062             * @see #getName()
063             * @generated
064             * @ordered
065             */
066            protected static final String NAME_EDEFAULT = null;
067    
068            /**
069             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
070             * <!-- begin-user-doc -->
071             * <!-- end-user-doc -->
072             * @see #getName()
073             * @generated
074             * @ordered
075             */
076            protected String name = NAME_EDEFAULT;
077    
078            /**
079             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
080             * <!-- begin-user-doc -->
081             * <!-- end-user-doc -->
082             * @see #getDescription()
083             * @generated
084             * @ordered
085             */
086            protected static final String DESCRIPTION_EDEFAULT = null;
087    
088            /**
089             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
090             * <!-- begin-user-doc -->
091             * <!-- end-user-doc -->
092             * @see #getDescription()
093             * @generated
094             * @ordered
095             */
096            protected String description = DESCRIPTION_EDEFAULT;
097    
098            /**
099             * The cached value of the '{@link #getSource() <em>Source</em>}' containment reference list.
100             * <!-- begin-user-doc -->
101             * <!-- end-user-doc -->
102             * @see #getSource()
103             * @generated
104             * @ordered
105             */
106            protected EList<Factory> source;
107    
108            /**
109             * The cached value of the '{@link #getClassPath() <em>Class Path</em>}' containment reference list.
110             * <!-- begin-user-doc -->
111             * <!-- end-user-doc -->
112             * @see #getClassPath()
113             * @generated
114             * @ordered
115             */
116            protected EList<Path> classPath;
117    
118            /**
119             * The cached value of the '{@link #getModel() <em>Model</em>}' attribute list.
120             * <!-- begin-user-doc -->
121             * <!-- end-user-doc -->
122             * @see #getModel()
123             * @generated
124             * @ordered
125             */
126            protected EList<Object> model;
127    
128            /**
129             * <!-- begin-user-doc -->
130             * <!-- end-user-doc -->
131             * @generated
132             */
133            protected ModuleImpl() {
134                    super();
135            }
136    
137            /**
138             * <!-- begin-user-doc -->
139             * <!-- end-user-doc -->
140             * @generated
141             */
142            @Override
143            protected EClass eStaticClass() {
144                    return ReviewPackage.Literals.MODULE;
145            }
146    
147            /**
148             * <!-- begin-user-doc -->
149             * <!-- end-user-doc -->
150             * @generated
151             */
152            public EList<InspectorSet> getInspectorSet() {
153                    if (inspectorSet == null) {
154                            inspectorSet = new EObjectResolvingEList<InspectorSet>(InspectorSet.class, this, ReviewPackage.MODULE__INSPECTOR_SET);
155                    }
156                    return inspectorSet;
157            }
158    
159            /**
160             * <!-- begin-user-doc -->
161             * <!-- end-user-doc -->
162             * @generated
163             */
164            public String getName() {
165                    return name;
166            }
167    
168            /**
169             * <!-- begin-user-doc -->
170             * <!-- end-user-doc -->
171             * @generated
172             */
173            public void setName(String newName) {
174                    String oldName = name;
175                    name = newName;
176                    if (eNotificationRequired())
177                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.MODULE__NAME, oldName, name));
178            }
179    
180            /**
181             * <!-- begin-user-doc -->
182             * <!-- end-user-doc -->
183             * @generated
184             */
185            public String getDescription() {
186                    return description;
187            }
188    
189            /**
190             * <!-- begin-user-doc -->
191             * <!-- end-user-doc -->
192             * @generated
193             */
194            public void setDescription(String newDescription) {
195                    String oldDescription = description;
196                    description = newDescription;
197                    if (eNotificationRequired())
198                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.MODULE__DESCRIPTION, oldDescription, description));
199            }
200    
201            /**
202             * <!-- begin-user-doc -->
203             * <!-- end-user-doc -->
204             * @generated
205             */
206            public EList<Factory> getSource() {
207                    if (source == null) {
208                            source = new EObjectContainmentEList<Factory>(Factory.class, this, ReviewPackage.MODULE__SOURCE);
209                    }
210                    return source;
211            }
212    
213            /**
214             * <!-- begin-user-doc -->
215             * <!-- end-user-doc -->
216             * @generated
217             */
218            public EList<Path> getClassPath() {
219                    if (classPath == null) {
220                            classPath = new EObjectContainmentEList<Path>(Path.class, this, ReviewPackage.MODULE__CLASS_PATH);
221                    }
222                    return classPath;
223            }
224    
225            /**
226             * <!-- begin-user-doc -->
227             * <!-- end-user-doc -->
228             * @generated
229             */
230            public EList<Object> getModel() {
231                    if (model == null) {
232                            model = new EDataTypeUniqueEList<Object>(Object.class, this, ReviewPackage.MODULE__MODEL);
233                    }
234                    return model;
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.MODULE__SOURCE:
246                                    return ((InternalEList<?>)getSource()).basicRemove(otherEnd, msgs);
247                            case ReviewPackage.MODULE__CLASS_PATH:
248                                    return ((InternalEList<?>)getClassPath()).basicRemove(otherEnd, 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 Object eGet(int featureID, boolean resolve, boolean coreType) {
260                    switch (featureID) {
261                            case ReviewPackage.MODULE__INSPECTOR_SET:
262                                    return getInspectorSet();
263                            case ReviewPackage.MODULE__NAME:
264                                    return getName();
265                            case ReviewPackage.MODULE__DESCRIPTION:
266                                    return getDescription();
267                            case ReviewPackage.MODULE__SOURCE:
268                                    return getSource();
269                            case ReviewPackage.MODULE__CLASS_PATH:
270                                    return getClassPath();
271                            case ReviewPackage.MODULE__MODEL:
272                                    return getModel();
273                    }
274                    return super.eGet(featureID, resolve, coreType);
275            }
276    
277            /**
278             * <!-- begin-user-doc -->
279             * <!-- end-user-doc -->
280             * @generated
281             */
282            @SuppressWarnings("unchecked")
283            @Override
284            public void eSet(int featureID, Object newValue) {
285                    switch (featureID) {
286                            case ReviewPackage.MODULE__INSPECTOR_SET:
287                                    getInspectorSet().clear();
288                                    getInspectorSet().addAll((Collection<? extends InspectorSet>)newValue);
289                                    return;
290                            case ReviewPackage.MODULE__NAME:
291                                    setName((String)newValue);
292                                    return;
293                            case ReviewPackage.MODULE__DESCRIPTION:
294                                    setDescription((String)newValue);
295                                    return;
296                            case ReviewPackage.MODULE__SOURCE:
297                                    getSource().clear();
298                                    getSource().addAll((Collection<? extends Factory>)newValue);
299                                    return;
300                            case ReviewPackage.MODULE__CLASS_PATH:
301                                    getClassPath().clear();
302                                    getClassPath().addAll((Collection<? extends Path>)newValue);
303                                    return;
304                            case ReviewPackage.MODULE__MODEL:
305                                    getModel().clear();
306                                    getModel().addAll((Collection<? extends Object>)newValue);
307                                    return;
308                    }
309                    super.eSet(featureID, newValue);
310            }
311    
312            /**
313             * <!-- begin-user-doc -->
314             * <!-- end-user-doc -->
315             * @generated
316             */
317            @Override
318            public void eUnset(int featureID) {
319                    switch (featureID) {
320                            case ReviewPackage.MODULE__INSPECTOR_SET:
321                                    getInspectorSet().clear();
322                                    return;
323                            case ReviewPackage.MODULE__NAME:
324                                    setName(NAME_EDEFAULT);
325                                    return;
326                            case ReviewPackage.MODULE__DESCRIPTION:
327                                    setDescription(DESCRIPTION_EDEFAULT);
328                                    return;
329                            case ReviewPackage.MODULE__SOURCE:
330                                    getSource().clear();
331                                    return;
332                            case ReviewPackage.MODULE__CLASS_PATH:
333                                    getClassPath().clear();
334                                    return;
335                            case ReviewPackage.MODULE__MODEL:
336                                    getModel().clear();
337                                    return;
338                    }
339                    super.eUnset(featureID);
340            }
341    
342            /**
343             * <!-- begin-user-doc -->
344             * <!-- end-user-doc -->
345             * @generated
346             */
347            @Override
348            public boolean eIsSet(int featureID) {
349                    switch (featureID) {
350                            case ReviewPackage.MODULE__INSPECTOR_SET:
351                                    return inspectorSet != null && !inspectorSet.isEmpty();
352                            case ReviewPackage.MODULE__NAME:
353                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
354                            case ReviewPackage.MODULE__DESCRIPTION:
355                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
356                            case ReviewPackage.MODULE__SOURCE:
357                                    return source != null && !source.isEmpty();
358                            case ReviewPackage.MODULE__CLASS_PATH:
359                                    return classPath != null && !classPath.isEmpty();
360                            case ReviewPackage.MODULE__MODEL:
361                                    return model != null && !model.isEmpty();
362                    }
363                    return super.eIsSet(featureID);
364            }
365    
366            /**
367             * <!-- begin-user-doc -->
368             * <!-- end-user-doc -->
369             * @generated
370             */
371            @Override
372            public String toString() {
373                    if (eIsProxy()) return super.toString();
374    
375                    StringBuffer result = new StringBuffer(super.toString());
376                    result.append(" (name: ");
377                    result.append(name);
378                    result.append(", description: ");
379                    result.append(description);
380                    result.append(", model: ");
381                    result.append(model);
382                    result.append(')');
383                    return result.toString();
384            }
385    
386    } //ModuleImpl