001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.review.impl;
008    
009    import com.hammurapi.party.Identity;
010    
011    import com.hammurapi.party.PartyPackage;
012    import com.hammurapi.party.Role;
013    import com.hammurapi.review.ReviewPackage;
014    import com.hammurapi.review.Tool;
015    import com.hammurapi.review.ToolVersion;
016    
017    import java.util.Collection;
018    import java.util.concurrent.atomic.AtomicInteger;
019    
020    import org.eclipse.emf.common.notify.Notification;
021    import org.eclipse.emf.common.notify.NotificationChain;
022    
023    import org.eclipse.emf.common.util.EList;
024    
025    import org.eclipse.emf.ecore.EClass;
026    import org.eclipse.emf.ecore.InternalEObject;
027    
028    import org.eclipse.emf.ecore.impl.ENotificationImpl;
029    import org.eclipse.emf.ecore.impl.EObjectImpl;
030    import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
031    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
032    import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
033    import org.eclipse.emf.ecore.util.InternalEList;
034    
035    /**
036     * <!-- begin-user-doc -->
037     * An implementation of the model object '<em><b>Tool</b></em>'.
038     * <!-- end-user-doc -->
039     * <p>
040     * The following features are implemented:
041     * <ul>
042     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getRoles <em>Roles</em>}</li>
043     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getUid <em>Uid</em>}</li>
044     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getName <em>Name</em>}</li>
045     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getDescription <em>Description</em>}</li>
046     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getReferences <em>References</em>}</li>
047     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getHomePage <em>Home Page</em>}</li>
048     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getIdentity <em>Identity</em>}</li>
049     *   <li>{@link com.hammurapi.review.impl.ToolImpl#getVersions <em>Versions</em>}</li>
050     * </ul>
051     * </p>
052     *
053     * @generated
054     */
055    public class ToolImpl extends EObjectImpl implements Tool {
056            /**
057             * The cached value of the '{@link #getRoles() <em>Roles</em>}' containment reference list.
058             * <!-- begin-user-doc -->
059             * <!-- end-user-doc -->
060             * @see #getRoles()
061             * @generated
062             * @ordered
063             */
064            protected EList<Role> roles;
065    
066            /**
067             * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
068             * <!-- begin-user-doc -->
069             * <!-- end-user-doc -->
070             * @see #getUid()
071             * @generated
072             * @ordered
073             */
074            protected static final String UID_EDEFAULT = null;
075    
076            /**
077             * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
078             * <!-- begin-user-doc -->
079             * <!-- end-user-doc -->
080             * @see #getUid()
081             * @generated
082             * @ordered
083             */
084            protected String uid = UID_EDEFAULT;
085    
086            /**
087             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
088             * <!-- begin-user-doc -->
089             * <!-- end-user-doc -->
090             * @see #getName()
091             * @generated
092             * @ordered
093             */
094            protected static final String NAME_EDEFAULT = null;
095    
096            /**
097             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
098             * <!-- begin-user-doc -->
099             * <!-- end-user-doc -->
100             * @see #getName()
101             * @generated
102             * @ordered
103             */
104            protected String name = NAME_EDEFAULT;
105    
106            /**
107             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
108             * <!-- begin-user-doc -->
109             * <!-- end-user-doc -->
110             * @see #getDescription()
111             * @generated
112             * @ordered
113             */
114            protected static final String DESCRIPTION_EDEFAULT = null;
115    
116            /**
117             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
118             * <!-- begin-user-doc -->
119             * <!-- end-user-doc -->
120             * @see #getDescription()
121             * @generated
122             * @ordered
123             */
124            protected String description = DESCRIPTION_EDEFAULT;
125    
126            /**
127             * The cached value of the '{@link #getReferences() <em>References</em>}' attribute list.
128             * <!-- begin-user-doc -->
129             * <!-- end-user-doc -->
130             * @see #getReferences()
131             * @generated
132             * @ordered
133             */
134            protected EList<String> references;
135    
136            /**
137             * The default value of the '{@link #getHomePage() <em>Home Page</em>}' attribute.
138             * <!-- begin-user-doc -->
139             * <!-- end-user-doc -->
140             * @see #getHomePage()
141             * @generated
142             * @ordered
143             */
144            protected static final String HOME_PAGE_EDEFAULT = null;
145    
146            /**
147             * The cached value of the '{@link #getHomePage() <em>Home Page</em>}' attribute.
148             * <!-- begin-user-doc -->
149             * <!-- end-user-doc -->
150             * @see #getHomePage()
151             * @generated
152             * @ordered
153             */
154            protected String homePage = HOME_PAGE_EDEFAULT;
155    
156            /**
157             * The cached value of the '{@link #getIdentity() <em>Identity</em>}' containment reference list.
158             * <!-- begin-user-doc -->
159             * <!-- end-user-doc -->
160             * @see #getIdentity()
161             * @generated
162             * @ordered
163             */
164            protected EList<Identity> identity;
165    
166            /**
167             * The cached value of the '{@link #getVersions() <em>Versions</em>}' containment reference list.
168             * <!-- begin-user-doc -->
169             * <!-- end-user-doc -->
170             * @see #getVersions()
171             * @generated
172             * @ordered
173             */
174            protected EList<ToolVersion> versions;
175    
176            private static AtomicInteger counter = new AtomicInteger();
177            
178            /**
179             * <!-- begin-user-doc -->
180             * <!-- end-user-doc -->
181             * @generated NOT
182             */
183            protected ToolImpl() {
184                    super();
185                    if (getUid()==null) {
186                            setUid("TOOL-"+Integer.toString(counter.incrementAndGet(), Character.MAX_RADIX)+"-"+Long.toString(System.currentTimeMillis(), Character.MAX_RADIX));
187                    }
188            }
189    
190            /**
191             * <!-- begin-user-doc -->
192             * <!-- end-user-doc -->
193             * @generated
194             */
195            @Override
196            protected EClass eStaticClass() {
197                    return ReviewPackage.Literals.TOOL;
198            }
199    
200            /**
201             * <!-- begin-user-doc -->
202             * <!-- end-user-doc -->
203             * @generated
204             */
205            public EList<Role> getRoles() {
206                    if (roles == null) {
207                            roles = new EObjectContainmentWithInverseEList<Role>(Role.class, this, ReviewPackage.TOOL__ROLES, PartyPackage.ROLE__OWNER);
208                    }
209                    return roles;
210            }
211    
212            /**
213             * <!-- begin-user-doc -->
214             * <!-- end-user-doc -->
215             * @generated
216             */
217            public String getUid() {
218                    return uid;
219            }
220    
221            /**
222             * <!-- begin-user-doc -->
223             * <!-- end-user-doc -->
224             * @generated
225             */
226            public void setUid(String newUid) {
227                    String oldUid = uid;
228                    uid = newUid;
229                    if (eNotificationRequired())
230                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL__UID, oldUid, uid));
231            }
232    
233            /**
234             * <!-- begin-user-doc -->
235             * <!-- end-user-doc -->
236             * @generated
237             */
238            public String getName() {
239                    return name;
240            }
241    
242            /**
243             * <!-- begin-user-doc -->
244             * <!-- end-user-doc -->
245             * @generated
246             */
247            public void setName(String newName) {
248                    String oldName = name;
249                    name = newName;
250                    if (eNotificationRequired())
251                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL__NAME, oldName, name));
252            }
253    
254            /**
255             * <!-- begin-user-doc -->
256             * <!-- end-user-doc -->
257             * @generated
258             */
259            public String getDescription() {
260                    return description;
261            }
262    
263            /**
264             * <!-- begin-user-doc -->
265             * <!-- end-user-doc -->
266             * @generated
267             */
268            public void setDescription(String newDescription) {
269                    String oldDescription = description;
270                    description = newDescription;
271                    if (eNotificationRequired())
272                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL__DESCRIPTION, oldDescription, description));
273            }
274    
275            /**
276             * <!-- begin-user-doc -->
277             * <!-- end-user-doc -->
278             * @generated
279             */
280            public EList<String> getReferences() {
281                    if (references == null) {
282                            references = new EDataTypeUniqueEList<String>(String.class, this, ReviewPackage.TOOL__REFERENCES);
283                    }
284                    return references;
285            }
286    
287            /**
288             * <!-- begin-user-doc -->
289             * <!-- end-user-doc -->
290             * @generated
291             */
292            public String getHomePage() {
293                    return homePage;
294            }
295    
296            /**
297             * <!-- begin-user-doc -->
298             * <!-- end-user-doc -->
299             * @generated
300             */
301            public void setHomePage(String newHomePage) {
302                    String oldHomePage = homePage;
303                    homePage = newHomePage;
304                    if (eNotificationRequired())
305                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL__HOME_PAGE, oldHomePage, homePage));
306            }
307    
308            /**
309             * <!-- begin-user-doc -->
310             * <!-- end-user-doc -->
311             * @generated
312             */
313            public EList<Identity> getIdentity() {
314                    if (identity == null) {
315                            identity = new EObjectContainmentEList<Identity>(Identity.class, this, ReviewPackage.TOOL__IDENTITY);
316                    }
317                    return identity;
318            }
319    
320            /**
321             * <!-- begin-user-doc -->
322             * <!-- end-user-doc -->
323             * @generated
324             */
325            public EList<ToolVersion> getVersions() {
326                    if (versions == null) {
327                            versions = new EObjectContainmentWithInverseEList<ToolVersion>(ToolVersion.class, this, ReviewPackage.TOOL__VERSIONS, ReviewPackage.TOOL_VERSION__TOOL);
328                    }
329                    return versions;
330            }
331    
332            /**
333             * <!-- begin-user-doc -->
334             * <!-- end-user-doc -->
335             * @generated
336             */
337            @SuppressWarnings("unchecked")
338            @Override
339            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
340                    switch (featureID) {
341                            case ReviewPackage.TOOL__ROLES:
342                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getRoles()).basicAdd(otherEnd, msgs);
343                            case ReviewPackage.TOOL__VERSIONS:
344                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getVersions()).basicAdd(otherEnd, msgs);
345                    }
346                    return super.eInverseAdd(otherEnd, featureID, msgs);
347            }
348    
349            /**
350             * <!-- begin-user-doc -->
351             * <!-- end-user-doc -->
352             * @generated
353             */
354            @Override
355            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
356                    switch (featureID) {
357                            case ReviewPackage.TOOL__ROLES:
358                                    return ((InternalEList<?>)getRoles()).basicRemove(otherEnd, msgs);
359                            case ReviewPackage.TOOL__IDENTITY:
360                                    return ((InternalEList<?>)getIdentity()).basicRemove(otherEnd, msgs);
361                            case ReviewPackage.TOOL__VERSIONS:
362                                    return ((InternalEList<?>)getVersions()).basicRemove(otherEnd, msgs);
363                    }
364                    return super.eInverseRemove(otherEnd, featureID, msgs);
365            }
366    
367            /**
368             * <!-- begin-user-doc -->
369             * <!-- end-user-doc -->
370             * @generated
371             */
372            @Override
373            public Object eGet(int featureID, boolean resolve, boolean coreType) {
374                    switch (featureID) {
375                            case ReviewPackage.TOOL__ROLES:
376                                    return getRoles();
377                            case ReviewPackage.TOOL__UID:
378                                    return getUid();
379                            case ReviewPackage.TOOL__NAME:
380                                    return getName();
381                            case ReviewPackage.TOOL__DESCRIPTION:
382                                    return getDescription();
383                            case ReviewPackage.TOOL__REFERENCES:
384                                    return getReferences();
385                            case ReviewPackage.TOOL__HOME_PAGE:
386                                    return getHomePage();
387                            case ReviewPackage.TOOL__IDENTITY:
388                                    return getIdentity();
389                            case ReviewPackage.TOOL__VERSIONS:
390                                    return getVersions();
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 ReviewPackage.TOOL__ROLES:
405                                    getRoles().clear();
406                                    getRoles().addAll((Collection<? extends Role>)newValue);
407                                    return;
408                            case ReviewPackage.TOOL__UID:
409                                    setUid((String)newValue);
410                                    return;
411                            case ReviewPackage.TOOL__NAME:
412                                    setName((String)newValue);
413                                    return;
414                            case ReviewPackage.TOOL__DESCRIPTION:
415                                    setDescription((String)newValue);
416                                    return;
417                            case ReviewPackage.TOOL__REFERENCES:
418                                    getReferences().clear();
419                                    getReferences().addAll((Collection<? extends String>)newValue);
420                                    return;
421                            case ReviewPackage.TOOL__HOME_PAGE:
422                                    setHomePage((String)newValue);
423                                    return;
424                            case ReviewPackage.TOOL__IDENTITY:
425                                    getIdentity().clear();
426                                    getIdentity().addAll((Collection<? extends Identity>)newValue);
427                                    return;
428                            case ReviewPackage.TOOL__VERSIONS:
429                                    getVersions().clear();
430                                    getVersions().addAll((Collection<? extends ToolVersion>)newValue);
431                                    return;
432                    }
433                    super.eSet(featureID, newValue);
434            }
435    
436            /**
437             * <!-- begin-user-doc -->
438             * <!-- end-user-doc -->
439             * @generated
440             */
441            @Override
442            public void eUnset(int featureID) {
443                    switch (featureID) {
444                            case ReviewPackage.TOOL__ROLES:
445                                    getRoles().clear();
446                                    return;
447                            case ReviewPackage.TOOL__UID:
448                                    setUid(UID_EDEFAULT);
449                                    return;
450                            case ReviewPackage.TOOL__NAME:
451                                    setName(NAME_EDEFAULT);
452                                    return;
453                            case ReviewPackage.TOOL__DESCRIPTION:
454                                    setDescription(DESCRIPTION_EDEFAULT);
455                                    return;
456                            case ReviewPackage.TOOL__REFERENCES:
457                                    getReferences().clear();
458                                    return;
459                            case ReviewPackage.TOOL__HOME_PAGE:
460                                    setHomePage(HOME_PAGE_EDEFAULT);
461                                    return;
462                            case ReviewPackage.TOOL__IDENTITY:
463                                    getIdentity().clear();
464                                    return;
465                            case ReviewPackage.TOOL__VERSIONS:
466                                    getVersions().clear();
467                                    return;
468                    }
469                    super.eUnset(featureID);
470            }
471    
472            /**
473             * <!-- begin-user-doc -->
474             * <!-- end-user-doc -->
475             * @generated
476             */
477            @Override
478            public boolean eIsSet(int featureID) {
479                    switch (featureID) {
480                            case ReviewPackage.TOOL__ROLES:
481                                    return roles != null && !roles.isEmpty();
482                            case ReviewPackage.TOOL__UID:
483                                    return UID_EDEFAULT == null ? uid != null : !UID_EDEFAULT.equals(uid);
484                            case ReviewPackage.TOOL__NAME:
485                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
486                            case ReviewPackage.TOOL__DESCRIPTION:
487                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
488                            case ReviewPackage.TOOL__REFERENCES:
489                                    return references != null && !references.isEmpty();
490                            case ReviewPackage.TOOL__HOME_PAGE:
491                                    return HOME_PAGE_EDEFAULT == null ? homePage != null : !HOME_PAGE_EDEFAULT.equals(homePage);
492                            case ReviewPackage.TOOL__IDENTITY:
493                                    return identity != null && !identity.isEmpty();
494                            case ReviewPackage.TOOL__VERSIONS:
495                                    return versions != null && !versions.isEmpty();
496                    }
497                    return super.eIsSet(featureID);
498            }
499    
500            /**
501             * <!-- begin-user-doc -->
502             * <!-- end-user-doc -->
503             * @generated
504             */
505            @Override
506            public String toString() {
507                    if (eIsProxy()) return super.toString();
508    
509                    StringBuffer result = new StringBuffer(super.toString());
510                    result.append(" (uid: ");
511                    result.append(uid);
512                    result.append(", name: ");
513                    result.append(name);
514                    result.append(", description: ");
515                    result.append(description);
516                    result.append(", references: ");
517                    result.append(references);
518                    result.append(", homePage: ");
519                    result.append(homePage);
520                    result.append(')');
521                    return result.toString();
522            }
523    
524    } //ToolImpl