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