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