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.Governor;
014    import com.hammurapi.review.InspectorCategory;
015    import com.hammurapi.review.ReviewPackage;
016    import com.hammurapi.review.Tool;
017    import com.hammurapi.review.ToolVersion;
018    
019    import java.util.Collection;
020    import java.util.concurrent.atomic.AtomicInteger;
021    
022    import org.eclipse.emf.common.notify.Notification;
023    import org.eclipse.emf.common.notify.NotificationChain;
024    
025    import org.eclipse.emf.common.util.EList;
026    
027    import org.eclipse.emf.ecore.EClass;
028    import org.eclipse.emf.ecore.InternalEObject;
029    
030    import org.eclipse.emf.ecore.impl.ENotificationImpl;
031    import org.eclipse.emf.ecore.impl.EObjectImpl;
032    import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
033    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
034    import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
035    import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
036    import org.eclipse.emf.ecore.util.EcoreUtil;
037    import org.eclipse.emf.ecore.util.InternalEList;
038    
039    /**
040     * <!-- begin-user-doc -->
041     * An implementation of the model object '<em><b>Tool Version</b></em>'.
042     * <!-- end-user-doc -->
043     * <p>
044     * The following features are implemented:
045     * <ul>
046     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getRoles <em>Roles</em>}</li>
047     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getUid <em>Uid</em>}</li>
048     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getName <em>Name</em>}</li>
049     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getDescription <em>Description</em>}</li>
050     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getReferences <em>References</em>}</li>
051     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getHomePage <em>Home Page</em>}</li>
052     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getIdentity <em>Identity</em>}</li>
053     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getGoverns <em>Governs</em>}</li>
054     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getEnforces <em>Enforces</em>}</li>
055     *   <li>{@link com.hammurapi.review.impl.ToolVersionImpl#getTool <em>Tool</em>}</li>
056     * </ul>
057     * </p>
058     *
059     * @generated
060     */
061    public class ToolVersionImpl extends EObjectImpl implements ToolVersion {
062            /**
063             * The cached value of the '{@link #getRoles() <em>Roles</em>}' containment reference list.
064             * <!-- begin-user-doc -->
065             * <!-- end-user-doc -->
066             * @see #getRoles()
067             * @generated
068             * @ordered
069             */
070            protected EList<Role> roles;
071    
072            /**
073             * The default value of the '{@link #getUid() <em>Uid</em>}' attribute.
074             * <!-- begin-user-doc -->
075             * <!-- end-user-doc -->
076             * @see #getUid()
077             * @generated
078             * @ordered
079             */
080            protected static final String UID_EDEFAULT = null;
081    
082            /**
083             * The cached value of the '{@link #getUid() <em>Uid</em>}' attribute.
084             * <!-- begin-user-doc -->
085             * <!-- end-user-doc -->
086             * @see #getUid()
087             * @generated
088             * @ordered
089             */
090            protected String uid = UID_EDEFAULT;
091    
092            /**
093             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
094             * <!-- begin-user-doc -->
095             * <!-- end-user-doc -->
096             * @see #getName()
097             * @generated
098             * @ordered
099             */
100            protected static final String NAME_EDEFAULT = null;
101    
102            /**
103             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
104             * <!-- begin-user-doc -->
105             * <!-- end-user-doc -->
106             * @see #getName()
107             * @generated
108             * @ordered
109             */
110            protected String name = NAME_EDEFAULT;
111    
112            /**
113             * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
114             * <!-- begin-user-doc -->
115             * <!-- end-user-doc -->
116             * @see #getDescription()
117             * @generated
118             * @ordered
119             */
120            protected static final String DESCRIPTION_EDEFAULT = null;
121    
122            /**
123             * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
124             * <!-- begin-user-doc -->
125             * <!-- end-user-doc -->
126             * @see #getDescription()
127             * @generated
128             * @ordered
129             */
130            protected String description = DESCRIPTION_EDEFAULT;
131    
132            /**
133             * The cached value of the '{@link #getReferences() <em>References</em>}' attribute list.
134             * <!-- begin-user-doc -->
135             * <!-- end-user-doc -->
136             * @see #getReferences()
137             * @generated
138             * @ordered
139             */
140            protected EList<String> references;
141    
142            /**
143             * The default value of the '{@link #getHomePage() <em>Home Page</em>}' attribute.
144             * <!-- begin-user-doc -->
145             * <!-- end-user-doc -->
146             * @see #getHomePage()
147             * @generated
148             * @ordered
149             */
150            protected static final String HOME_PAGE_EDEFAULT = null;
151    
152            /**
153             * The cached value of the '{@link #getHomePage() <em>Home Page</em>}' attribute.
154             * <!-- begin-user-doc -->
155             * <!-- end-user-doc -->
156             * @see #getHomePage()
157             * @generated
158             * @ordered
159             */
160            protected String homePage = HOME_PAGE_EDEFAULT;
161    
162            /**
163             * The cached value of the '{@link #getIdentity() <em>Identity</em>}' containment reference list.
164             * <!-- begin-user-doc -->
165             * <!-- end-user-doc -->
166             * @see #getIdentity()
167             * @generated
168             * @ordered
169             */
170            protected EList<Identity> identity;
171    
172            /**
173             * The cached value of the '{@link #getGoverns() <em>Governs</em>}' reference list.
174             * <!-- begin-user-doc -->
175             * <!-- end-user-doc -->
176             * @see #getGoverns()
177             * @generated
178             * @ordered
179             */
180            protected EList<InspectorCategory> governs;
181    
182            /**
183             * The cached value of the '{@link #getEnforces() <em>Enforces</em>}' reference list.
184             * <!-- begin-user-doc -->
185             * <!-- end-user-doc -->
186             * @see #getEnforces()
187             * @generated
188             * @ordered
189             */
190            protected EList<Governor> enforces;
191    
192            private static AtomicInteger counter = new AtomicInteger();
193            
194            /**
195             * <!-- begin-user-doc -->
196             * <!-- end-user-doc -->
197             * @generated NOT
198             */
199            protected ToolVersionImpl() {
200                    super();
201                    if (getUid()==null) {
202                            setUid("VERSION-"+Integer.toString(counter.incrementAndGet(), Character.MAX_RADIX)+"-"+Long.toString(System.currentTimeMillis(), Character.MAX_RADIX));
203                    }
204            }
205    
206            /**
207             * <!-- begin-user-doc -->
208             * <!-- end-user-doc -->
209             * @generated
210             */
211            @Override
212            protected EClass eStaticClass() {
213                    return ReviewPackage.Literals.TOOL_VERSION;
214            }
215    
216            /**
217             * <!-- begin-user-doc -->
218             * <!-- end-user-doc -->
219             * @generated
220             */
221            public EList<Role> getRoles() {
222                    if (roles == null) {
223                            roles = new EObjectContainmentWithInverseEList<Role>(Role.class, this, ReviewPackage.TOOL_VERSION__ROLES, PartyPackage.ROLE__OWNER);
224                    }
225                    return roles;
226            }
227    
228            /**
229             * <!-- begin-user-doc -->
230             * <!-- end-user-doc -->
231             * @generated
232             */
233            public String getUid() {
234                    return uid;
235            }
236    
237            /**
238             * <!-- begin-user-doc -->
239             * <!-- end-user-doc -->
240             * @generated
241             */
242            public void setUid(String newUid) {
243                    String oldUid = uid;
244                    uid = newUid;
245                    if (eNotificationRequired())
246                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL_VERSION__UID, oldUid, uid));
247            }
248    
249            /**
250             * <!-- begin-user-doc -->
251             * <!-- end-user-doc -->
252             * @generated
253             */
254            public String getName() {
255                    return name;
256            }
257    
258            /**
259             * <!-- begin-user-doc -->
260             * <!-- end-user-doc -->
261             * @generated
262             */
263            public void setName(String newName) {
264                    String oldName = name;
265                    name = newName;
266                    if (eNotificationRequired())
267                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL_VERSION__NAME, oldName, name));
268            }
269    
270            /**
271             * <!-- begin-user-doc -->
272             * <!-- end-user-doc -->
273             * @generated
274             */
275            public String getDescription() {
276                    return description;
277            }
278    
279            /**
280             * <!-- begin-user-doc -->
281             * <!-- end-user-doc -->
282             * @generated
283             */
284            public void setDescription(String newDescription) {
285                    String oldDescription = description;
286                    description = newDescription;
287                    if (eNotificationRequired())
288                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL_VERSION__DESCRIPTION, oldDescription, description));
289            }
290    
291            /**
292             * <!-- begin-user-doc -->
293             * <!-- end-user-doc -->
294             * @generated
295             */
296            public EList<String> getReferences() {
297                    if (references == null) {
298                            references = new EDataTypeUniqueEList<String>(String.class, this, ReviewPackage.TOOL_VERSION__REFERENCES);
299                    }
300                    return references;
301            }
302    
303            /**
304             * <!-- begin-user-doc -->
305             * <!-- end-user-doc -->
306             * @generated
307             */
308            public String getHomePage() {
309                    return homePage;
310            }
311    
312            /**
313             * <!-- begin-user-doc -->
314             * <!-- end-user-doc -->
315             * @generated
316             */
317            public void setHomePage(String newHomePage) {
318                    String oldHomePage = homePage;
319                    homePage = newHomePage;
320                    if (eNotificationRequired())
321                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL_VERSION__HOME_PAGE, oldHomePage, homePage));
322            }
323    
324            /**
325             * <!-- begin-user-doc -->
326             * <!-- end-user-doc -->
327             * @generated
328             */
329            public EList<Identity> getIdentity() {
330                    if (identity == null) {
331                            identity = new EObjectContainmentEList<Identity>(Identity.class, this, ReviewPackage.TOOL_VERSION__IDENTITY);
332                    }
333                    return identity;
334            }
335    
336            /**
337             * <!-- begin-user-doc -->
338             * <!-- end-user-doc -->
339             * @generated
340             */
341            public EList<InspectorCategory> getGoverns() {
342                    if (governs == null) {
343                            governs = new EObjectWithInverseResolvingEList.ManyInverse<InspectorCategory>(InspectorCategory.class, this, ReviewPackage.TOOL_VERSION__GOVERNS, ReviewPackage.INSPECTOR_CATEGORY__GOVERNED_BY);
344                    }
345                    return governs;
346            }
347    
348            /**
349             * <!-- begin-user-doc -->
350             * <!-- end-user-doc -->
351             * @generated
352             */
353            public EList<Governor> getEnforces() {
354                    if (enforces == null) {
355                            enforces = new EObjectWithInverseResolvingEList.ManyInverse<Governor>(Governor.class, this, ReviewPackage.TOOL_VERSION__ENFORCES, ReviewPackage.GOVERNOR__ENFORCED_BY);
356                    }
357                    return enforces;
358            }
359    
360            /**
361             * <!-- begin-user-doc -->
362             * <!-- end-user-doc -->
363             * @generated
364             */
365            public Tool getTool() {
366                    if (eContainerFeatureID() != ReviewPackage.TOOL_VERSION__TOOL) return null;
367                    return (Tool)eContainer();
368            }
369    
370            /**
371             * <!-- begin-user-doc -->
372             * <!-- end-user-doc -->
373             * @generated
374             */
375            public NotificationChain basicSetTool(Tool newTool, NotificationChain msgs) {
376                    msgs = eBasicSetContainer((InternalEObject)newTool, ReviewPackage.TOOL_VERSION__TOOL, msgs);
377                    return msgs;
378            }
379    
380            /**
381             * <!-- begin-user-doc -->
382             * <!-- end-user-doc -->
383             * @generated
384             */
385            public void setTool(Tool newTool) {
386                    if (newTool != eInternalContainer() || (eContainerFeatureID() != ReviewPackage.TOOL_VERSION__TOOL && newTool != null)) {
387                            if (EcoreUtil.isAncestor(this, newTool))
388                                    throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
389                            NotificationChain msgs = null;
390                            if (eInternalContainer() != null)
391                                    msgs = eBasicRemoveFromContainer(msgs);
392                            if (newTool != null)
393                                    msgs = ((InternalEObject)newTool).eInverseAdd(this, ReviewPackage.TOOL__VERSIONS, Tool.class, msgs);
394                            msgs = basicSetTool(newTool, msgs);
395                            if (msgs != null) msgs.dispatch();
396                    }
397                    else if (eNotificationRequired())
398                            eNotify(new ENotificationImpl(this, Notification.SET, ReviewPackage.TOOL_VERSION__TOOL, newTool, newTool));
399            }
400    
401            /**
402             * <!-- begin-user-doc -->
403             * <!-- end-user-doc -->
404             * @generated
405             */
406            @SuppressWarnings("unchecked")
407            @Override
408            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
409                    switch (featureID) {
410                            case ReviewPackage.TOOL_VERSION__ROLES:
411                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getRoles()).basicAdd(otherEnd, msgs);
412                            case ReviewPackage.TOOL_VERSION__GOVERNS:
413                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getGoverns()).basicAdd(otherEnd, msgs);
414                            case ReviewPackage.TOOL_VERSION__ENFORCES:
415                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getEnforces()).basicAdd(otherEnd, msgs);
416                            case ReviewPackage.TOOL_VERSION__TOOL:
417                                    if (eInternalContainer() != null)
418                                            msgs = eBasicRemoveFromContainer(msgs);
419                                    return basicSetTool((Tool)otherEnd, msgs);
420                    }
421                    return super.eInverseAdd(otherEnd, featureID, msgs);
422            }
423    
424            /**
425             * <!-- begin-user-doc -->
426             * <!-- end-user-doc -->
427             * @generated
428             */
429            @Override
430            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
431                    switch (featureID) {
432                            case ReviewPackage.TOOL_VERSION__ROLES:
433                                    return ((InternalEList<?>)getRoles()).basicRemove(otherEnd, msgs);
434                            case ReviewPackage.TOOL_VERSION__IDENTITY:
435                                    return ((InternalEList<?>)getIdentity()).basicRemove(otherEnd, msgs);
436                            case ReviewPackage.TOOL_VERSION__GOVERNS:
437                                    return ((InternalEList<?>)getGoverns()).basicRemove(otherEnd, msgs);
438                            case ReviewPackage.TOOL_VERSION__ENFORCES:
439                                    return ((InternalEList<?>)getEnforces()).basicRemove(otherEnd, msgs);
440                            case ReviewPackage.TOOL_VERSION__TOOL:
441                                    return basicSetTool(null, msgs);
442                    }
443                    return super.eInverseRemove(otherEnd, featureID, msgs);
444            }
445    
446            /**
447             * <!-- begin-user-doc -->
448             * <!-- end-user-doc -->
449             * @generated
450             */
451            @Override
452            public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
453                    switch (eContainerFeatureID()) {
454                            case ReviewPackage.TOOL_VERSION__TOOL:
455                                    return eInternalContainer().eInverseRemove(this, ReviewPackage.TOOL__VERSIONS, Tool.class, msgs);
456                    }
457                    return super.eBasicRemoveFromContainerFeature(msgs);
458            }
459    
460            /**
461             * <!-- begin-user-doc -->
462             * <!-- end-user-doc -->
463             * @generated
464             */
465            @Override
466            public Object eGet(int featureID, boolean resolve, boolean coreType) {
467                    switch (featureID) {
468                            case ReviewPackage.TOOL_VERSION__ROLES:
469                                    return getRoles();
470                            case ReviewPackage.TOOL_VERSION__UID:
471                                    return getUid();
472                            case ReviewPackage.TOOL_VERSION__NAME:
473                                    return getName();
474                            case ReviewPackage.TOOL_VERSION__DESCRIPTION:
475                                    return getDescription();
476                            case ReviewPackage.TOOL_VERSION__REFERENCES:
477                                    return getReferences();
478                            case ReviewPackage.TOOL_VERSION__HOME_PAGE:
479                                    return getHomePage();
480                            case ReviewPackage.TOOL_VERSION__IDENTITY:
481                                    return getIdentity();
482                            case ReviewPackage.TOOL_VERSION__GOVERNS:
483                                    return getGoverns();
484                            case ReviewPackage.TOOL_VERSION__ENFORCES:
485                                    return getEnforces();
486                            case ReviewPackage.TOOL_VERSION__TOOL:
487                                    return getTool();
488                    }
489                    return super.eGet(featureID, resolve, coreType);
490            }
491    
492            /**
493             * <!-- begin-user-doc -->
494             * <!-- end-user-doc -->
495             * @generated
496             */
497            @SuppressWarnings("unchecked")
498            @Override
499            public void eSet(int featureID, Object newValue) {
500                    switch (featureID) {
501                            case ReviewPackage.TOOL_VERSION__ROLES:
502                                    getRoles().clear();
503                                    getRoles().addAll((Collection<? extends Role>)newValue);
504                                    return;
505                            case ReviewPackage.TOOL_VERSION__UID:
506                                    setUid((String)newValue);
507                                    return;
508                            case ReviewPackage.TOOL_VERSION__NAME:
509                                    setName((String)newValue);
510                                    return;
511                            case ReviewPackage.TOOL_VERSION__DESCRIPTION:
512                                    setDescription((String)newValue);
513                                    return;
514                            case ReviewPackage.TOOL_VERSION__REFERENCES:
515                                    getReferences().clear();
516                                    getReferences().addAll((Collection<? extends String>)newValue);
517                                    return;
518                            case ReviewPackage.TOOL_VERSION__HOME_PAGE:
519                                    setHomePage((String)newValue);
520                                    return;
521                            case ReviewPackage.TOOL_VERSION__IDENTITY:
522                                    getIdentity().clear();
523                                    getIdentity().addAll((Collection<? extends Identity>)newValue);
524                                    return;
525                            case ReviewPackage.TOOL_VERSION__GOVERNS:
526                                    getGoverns().clear();
527                                    getGoverns().addAll((Collection<? extends InspectorCategory>)newValue);
528                                    return;
529                            case ReviewPackage.TOOL_VERSION__ENFORCES:
530                                    getEnforces().clear();
531                                    getEnforces().addAll((Collection<? extends Governor>)newValue);
532                                    return;
533                            case ReviewPackage.TOOL_VERSION__TOOL:
534                                    setTool((Tool)newValue);
535                                    return;
536                    }
537                    super.eSet(featureID, newValue);
538            }
539    
540            /**
541             * <!-- begin-user-doc -->
542             * <!-- end-user-doc -->
543             * @generated
544             */
545            @Override
546            public void eUnset(int featureID) {
547                    switch (featureID) {
548                            case ReviewPackage.TOOL_VERSION__ROLES:
549                                    getRoles().clear();
550                                    return;
551                            case ReviewPackage.TOOL_VERSION__UID:
552                                    setUid(UID_EDEFAULT);
553                                    return;
554                            case ReviewPackage.TOOL_VERSION__NAME:
555                                    setName(NAME_EDEFAULT);
556                                    return;
557                            case ReviewPackage.TOOL_VERSION__DESCRIPTION:
558                                    setDescription(DESCRIPTION_EDEFAULT);
559                                    return;
560                            case ReviewPackage.TOOL_VERSION__REFERENCES:
561                                    getReferences().clear();
562                                    return;
563                            case ReviewPackage.TOOL_VERSION__HOME_PAGE:
564                                    setHomePage(HOME_PAGE_EDEFAULT);
565                                    return;
566                            case ReviewPackage.TOOL_VERSION__IDENTITY:
567                                    getIdentity().clear();
568                                    return;
569                            case ReviewPackage.TOOL_VERSION__GOVERNS:
570                                    getGoverns().clear();
571                                    return;
572                            case ReviewPackage.TOOL_VERSION__ENFORCES:
573                                    getEnforces().clear();
574                                    return;
575                            case ReviewPackage.TOOL_VERSION__TOOL:
576                                    setTool((Tool)null);
577                                    return;
578                    }
579                    super.eUnset(featureID);
580            }
581    
582            /**
583             * <!-- begin-user-doc -->
584             * <!-- end-user-doc -->
585             * @generated
586             */
587            @Override
588            public boolean eIsSet(int featureID) {
589                    switch (featureID) {
590                            case ReviewPackage.TOOL_VERSION__ROLES:
591                                    return roles != null && !roles.isEmpty();
592                            case ReviewPackage.TOOL_VERSION__UID:
593                                    return UID_EDEFAULT == null ? uid != null : !UID_EDEFAULT.equals(uid);
594                            case ReviewPackage.TOOL_VERSION__NAME:
595                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
596                            case ReviewPackage.TOOL_VERSION__DESCRIPTION:
597                                    return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
598                            case ReviewPackage.TOOL_VERSION__REFERENCES:
599                                    return references != null && !references.isEmpty();
600                            case ReviewPackage.TOOL_VERSION__HOME_PAGE:
601                                    return HOME_PAGE_EDEFAULT == null ? homePage != null : !HOME_PAGE_EDEFAULT.equals(homePage);
602                            case ReviewPackage.TOOL_VERSION__IDENTITY:
603                                    return identity != null && !identity.isEmpty();
604                            case ReviewPackage.TOOL_VERSION__GOVERNS:
605                                    return governs != null && !governs.isEmpty();
606                            case ReviewPackage.TOOL_VERSION__ENFORCES:
607                                    return enforces != null && !enforces.isEmpty();
608                            case ReviewPackage.TOOL_VERSION__TOOL:
609                                    return getTool() != null;
610                    }
611                    return super.eIsSet(featureID);
612            }
613    
614            /**
615             * <!-- begin-user-doc -->
616             * <!-- end-user-doc -->
617             * @generated
618             */
619            @Override
620            public String toString() {
621                    if (eIsProxy()) return super.toString();
622    
623                    StringBuffer result = new StringBuffer(super.toString());
624                    result.append(" (uid: ");
625                    result.append(uid);
626                    result.append(", name: ");
627                    result.append(name);
628                    result.append(", description: ");
629                    result.append(description);
630                    result.append(", references: ");
631                    result.append(references);
632                    result.append(", homePage: ");
633                    result.append(homePage);
634                    result.append(')');
635                    return result.toString();
636            }
637    
638    } //ToolVersionImpl