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.util.EObjectContainmentEList;
018    import org.eclipse.emf.ecore.util.InternalEList;
019    
020    import com.hammurapi.config.Factory;
021    import com.hammurapi.config.impl.ObjectDefinitionImpl;
022    import com.hammurapi.review.Component;
023    import com.hammurapi.review.Module;
024    import com.hammurapi.review.ReviewPackage;
025    import com.hammurapi.review.Waiver;
026    
027    /**
028     * <!-- begin-user-doc -->
029     * An implementation of the model object '<em><b>Component</b></em>'.
030     * <!-- end-user-doc -->
031     * <p>
032     * The following features are implemented:
033     * <ul>
034     *   <li>{@link com.hammurapi.review.impl.ComponentImpl#getModule <em>Module</em>}</li>
035     *   <li>{@link com.hammurapi.review.impl.ComponentImpl#getName <em>Name</em>}</li>
036     *   <li>{@link com.hammurapi.review.impl.ComponentImpl#getReporter <em>Reporter</em>}</li>
037     *   <li>{@link com.hammurapi.review.impl.ComponentImpl#getWaivers <em>Waivers</em>}</li>
038     * </ul>
039     * </p>
040     *
041     * @generated
042     */
043    public class ComponentImpl extends ObjectDefinitionImpl implements Component {
044            /**
045             * The cached value of the '{@link #getModule() <em>Module</em>}' containment reference list.
046             * <!-- begin-user-doc -->
047             * <!-- end-user-doc -->
048             * @see #getModule()
049             * @generated
050             * @ordered
051             */
052            protected EList<Module> module;
053    
054            /**
055             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
056             * <!-- begin-user-doc -->
057             * <!-- end-user-doc -->
058             * @see #getName()
059             * @generated
060             * @ordered
061             */
062            protected static final String NAME_EDEFAULT = null;
063    
064            /**
065             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
066             * <!-- begin-user-doc -->
067             * <!-- end-user-doc -->
068             * @see #getName()
069             * @generated
070             * @ordered
071             */
072            protected String name = NAME_EDEFAULT;
073    
074            /**
075             * The cached value of the '{@link #getReporter() <em>Reporter</em>}' containment reference list.
076             * <!-- begin-user-doc -->
077             * <!-- end-user-doc -->
078             * @see #getReporter()
079             * @generated
080             * @ordered
081             */
082            protected EList<Factory> reporter;
083    
084            /**
085             * The cached value of the '{@link #getWaivers() <em>Waivers</em>}' containment reference list.
086             * <!-- begin-user-doc -->
087             * <!-- end-user-doc -->
088             * @see #getWaivers()
089             * @generated
090             * @ordered
091             */
092            protected EList<Waiver> waivers;
093    
094            /**
095             * <!-- begin-user-doc -->
096             * <!-- end-user-doc -->
097             * @generated
098             */
099            protected ComponentImpl() {
100                    super();
101            }
102    
103            /**
104             * <!-- begin-user-doc -->
105             * <!-- end-user-doc -->
106             * @generated
107             */
108            @Override
109            protected EClass eStaticClass() {
110                    return ReviewPackage.Literals.COMPONENT;
111            }
112    
113            /**
114             * <!-- begin-user-doc -->
115             * <!-- end-user-doc -->
116             * @generated
117             */
118            public EList<Module> getModule() {
119                    if (module == null) {
120                            module = new EObjectContainmentEList<Module>(Module.class, this, ReviewPackage.COMPONENT__MODULE);
121                    }
122                    return module;
123            }
124    
125            /**
126             * <!-- begin-user-doc -->
127             * <!-- end-user-doc -->
128             * @generated
129             */
130            public String getName() {
131                    return name;
132            }
133    
134            /**
135             * <!-- begin-user-doc -->
136             * <!-- end-user-doc -->
137             * @generated
138             */
139            public void setName(String newName) {
140                    String oldName = name;
141                    name = newName;
142                    if (eNotificationRequired())
143                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.COMPONENT__NAME, oldName, name));
144            }
145    
146            /**
147             * <!-- begin-user-doc -->
148             * <!-- end-user-doc -->
149             * @generated
150             */
151            public EList<Factory> getReporter() {
152                    if (reporter == null) {
153                            reporter = new EObjectContainmentEList<Factory>(Factory.class, this, ReviewPackage.COMPONENT__REPORTER);
154                    }
155                    return reporter;
156            }
157    
158            /**
159             * <!-- begin-user-doc -->
160             * <!-- end-user-doc -->
161             * @generated
162             */
163            public EList<Waiver> getWaivers() {
164                    if (waivers == null) {
165                            waivers = new EObjectContainmentEList<Waiver>(Waiver.class, this, ReviewPackage.COMPONENT__WAIVERS);
166                    }
167                    return waivers;
168            }
169    
170            /**
171             * <!-- begin-user-doc -->
172             * <!-- end-user-doc -->
173             * @generated
174             */
175            @Override
176            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
177                    switch (featureID) {
178                            case ReviewPackage.COMPONENT__MODULE:
179                                    return ((InternalEList<?>)getModule()).basicRemove(otherEnd, msgs);
180                            case ReviewPackage.COMPONENT__REPORTER:
181                                    return ((InternalEList<?>)getReporter()).basicRemove(otherEnd, msgs);
182                            case ReviewPackage.COMPONENT__WAIVERS:
183                                    return ((InternalEList<?>)getWaivers()).basicRemove(otherEnd, msgs);
184                    }
185                    return super.eInverseRemove(otherEnd, featureID, msgs);
186            }
187    
188            /**
189             * <!-- begin-user-doc -->
190             * <!-- end-user-doc -->
191             * @generated
192             */
193            @Override
194            public Object eGet(int featureID, boolean resolve, boolean coreType) {
195                    switch (featureID) {
196                            case ReviewPackage.COMPONENT__MODULE:
197                                    return getModule();
198                            case ReviewPackage.COMPONENT__NAME:
199                                    return getName();
200                            case ReviewPackage.COMPONENT__REPORTER:
201                                    return getReporter();
202                            case ReviewPackage.COMPONENT__WAIVERS:
203                                    return getWaivers();
204                    }
205                    return super.eGet(featureID, resolve, coreType);
206            }
207    
208            /**
209             * <!-- begin-user-doc -->
210             * <!-- end-user-doc -->
211             * @generated
212             */
213            @SuppressWarnings("unchecked")
214            @Override
215            public void eSet(int featureID, Object newValue) {
216                    switch (featureID) {
217                            case ReviewPackage.COMPONENT__MODULE:
218                                    getModule().clear();
219                                    getModule().addAll((Collection<? extends Module>)newValue);
220                                    return;
221                            case ReviewPackage.COMPONENT__NAME:
222                                    setName((String)newValue);
223                                    return;
224                            case ReviewPackage.COMPONENT__REPORTER:
225                                    getReporter().clear();
226                                    getReporter().addAll((Collection<? extends Factory>)newValue);
227                                    return;
228                            case ReviewPackage.COMPONENT__WAIVERS:
229                                    getWaivers().clear();
230                                    getWaivers().addAll((Collection<? extends Waiver>)newValue);
231                                    return;
232                    }
233                    super.eSet(featureID, newValue);
234            }
235    
236            /**
237             * <!-- begin-user-doc -->
238             * <!-- end-user-doc -->
239             * @generated
240             */
241            @Override
242            public void eUnset(int featureID) {
243                    switch (featureID) {
244                            case ReviewPackage.COMPONENT__MODULE:
245                                    getModule().clear();
246                                    return;
247                            case ReviewPackage.COMPONENT__NAME:
248                                    setName(NAME_EDEFAULT);
249                                    return;
250                            case ReviewPackage.COMPONENT__REPORTER:
251                                    getReporter().clear();
252                                    return;
253                            case ReviewPackage.COMPONENT__WAIVERS:
254                                    getWaivers().clear();
255                                    return;
256                    }
257                    super.eUnset(featureID);
258            }
259    
260            /**
261             * <!-- begin-user-doc -->
262             * <!-- end-user-doc -->
263             * @generated
264             */
265            @Override
266            public boolean eIsSet(int featureID) {
267                    switch (featureID) {
268                            case ReviewPackage.COMPONENT__MODULE:
269                                    return module != null && !module.isEmpty();
270                            case ReviewPackage.COMPONENT__NAME:
271                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
272                            case ReviewPackage.COMPONENT__REPORTER:
273                                    return reporter != null && !reporter.isEmpty();
274                            case ReviewPackage.COMPONENT__WAIVERS:
275                                    return waivers != null && !waivers.isEmpty();
276                    }
277                    return super.eIsSet(featureID);
278            }
279    
280            /**
281             * <!-- begin-user-doc -->
282             * <!-- end-user-doc -->
283             * @generated
284             */
285            @Override
286            public String toString() {
287                    if (eIsProxy()) return super.toString();
288    
289                    StringBuffer result = new StringBuffer(super.toString());
290                    result.append(" (name: ");
291                    result.append(name);
292                    result.append(')');
293                    return result.toString();
294            }
295    
296    } //ComponentImpl