001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.eventbus.snapshot.impl;
008    
009    import com.hammurapi.eventbus.snapshot.Extractor;
010    import com.hammurapi.eventbus.snapshot.Snapshot;
011    import com.hammurapi.eventbus.snapshot.SnapshotPackage;
012    
013    import java.util.Collection;
014    
015    import org.eclipse.emf.common.notify.Notification;
016    import org.eclipse.emf.common.notify.NotificationChain;
017    
018    import org.eclipse.emf.common.util.EList;
019    
020    import org.eclipse.emf.ecore.EClass;
021    import org.eclipse.emf.ecore.InternalEObject;
022    
023    import org.eclipse.emf.ecore.impl.ENotificationImpl;
024    import org.eclipse.emf.ecore.impl.EObjectImpl;
025    
026    import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
027    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
028    import org.eclipse.emf.ecore.util.EcoreUtil;
029    import org.eclipse.emf.ecore.util.InternalEList;
030    
031    /**
032     * <!-- begin-user-doc -->
033     * An implementation of the model object '<em><b>Extractor</b></em>'.
034     * <!-- end-user-doc -->
035     * <p>
036     * The following features are implemented:
037     * <ul>
038     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getId <em>Id</em>}</li>
039     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getName <em>Name</em>}</li>
040     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getDetails <em>Details</em>}</li>
041     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getSnapshot <em>Snapshot</em>}</li>
042     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getRole <em>Role</em>}</li>
043     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getParts <em>Parts</em>}</li>
044     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getParameterIndices <em>Parameter Indices</em>}</li>
045     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.ExtractorImpl#getCost <em>Cost</em>}</li>
046     * </ul>
047     * </p>
048     *
049     * @generated
050     */
051    public class ExtractorImpl extends EObjectImpl implements Extractor {
052            /**
053             * The default value of the '{@link #getId() <em>Id</em>}' attribute.
054             * <!-- begin-user-doc -->
055             * <!-- end-user-doc -->
056             * @see #getId()
057             * @generated
058             * @ordered
059             */
060            protected static final String ID_EDEFAULT = null;
061    
062            /**
063             * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
064             * <!-- begin-user-doc -->
065             * <!-- end-user-doc -->
066             * @see #getId()
067             * @generated
068             * @ordered
069             */
070            protected String id = ID_EDEFAULT;
071    
072            /**
073             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
074             * <!-- begin-user-doc -->
075             * <!-- end-user-doc -->
076             * @see #getName()
077             * @generated
078             * @ordered
079             */
080            protected static final String NAME_EDEFAULT = null;
081    
082            /**
083             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
084             * <!-- begin-user-doc -->
085             * <!-- end-user-doc -->
086             * @see #getName()
087             * @generated
088             * @ordered
089             */
090            protected String name = NAME_EDEFAULT;
091    
092            /**
093             * The default value of the '{@link #getDetails() <em>Details</em>}' attribute.
094             * <!-- begin-user-doc -->
095             * <!-- end-user-doc -->
096             * @see #getDetails()
097             * @generated
098             * @ordered
099             */
100            protected static final String DETAILS_EDEFAULT = null;
101    
102            /**
103             * The cached value of the '{@link #getDetails() <em>Details</em>}' attribute.
104             * <!-- begin-user-doc -->
105             * <!-- end-user-doc -->
106             * @see #getDetails()
107             * @generated
108             * @ordered
109             */
110            protected String details = DETAILS_EDEFAULT;
111    
112            /**
113             * The default value of the '{@link #getRole() <em>Role</em>}' attribute.
114             * <!-- begin-user-doc -->
115             * <!-- end-user-doc -->
116             * @see #getRole()
117             * @generated
118             * @ordered
119             */
120            protected static final String ROLE_EDEFAULT = null;
121    
122            /**
123             * The cached value of the '{@link #getRole() <em>Role</em>}' attribute.
124             * <!-- begin-user-doc -->
125             * <!-- end-user-doc -->
126             * @see #getRole()
127             * @generated
128             * @ordered
129             */
130            protected String role = ROLE_EDEFAULT;
131    
132            /**
133             * The cached value of the '{@link #getParts() <em>Parts</em>}' containment reference list.
134             * <!-- begin-user-doc -->
135             * <!-- end-user-doc -->
136             * @see #getParts()
137             * @generated
138             * @ordered
139             */
140            protected EList<Extractor> parts;
141    
142            /**
143             * The cached value of the '{@link #getParameterIndices() <em>Parameter Indices</em>}' attribute list.
144             * <!-- begin-user-doc -->
145             * <!-- end-user-doc -->
146             * @see #getParameterIndices()
147             * @generated
148             * @ordered
149             */
150            protected EList<Integer> parameterIndices;
151    
152            /**
153             * The default value of the '{@link #getCost() <em>Cost</em>}' attribute.
154             * <!-- begin-user-doc -->
155             * <!-- end-user-doc -->
156             * @see #getCost()
157             * @generated
158             * @ordered
159             */
160            protected static final Double COST_EDEFAULT = null;
161    
162            /**
163             * The cached value of the '{@link #getCost() <em>Cost</em>}' attribute.
164             * <!-- begin-user-doc -->
165             * <!-- end-user-doc -->
166             * @see #getCost()
167             * @generated
168             * @ordered
169             */
170            protected Double cost = COST_EDEFAULT;
171    
172            /**
173             * <!-- begin-user-doc -->
174             * <!-- end-user-doc -->
175             * @generated
176             */
177            protected ExtractorImpl() {
178                    super();
179            }
180    
181            /**
182             * <!-- begin-user-doc -->
183             * <!-- end-user-doc -->
184             * @generated
185             */
186            @Override
187            protected EClass eStaticClass() {
188                    return SnapshotPackage.Literals.EXTRACTOR;
189            }
190    
191            /**
192             * <!-- begin-user-doc -->
193             * <!-- end-user-doc -->
194             * @generated
195             */
196            public String getId() {
197                    return id;
198            }
199    
200            /**
201             * <!-- begin-user-doc -->
202             * <!-- end-user-doc -->
203             * @generated
204             */
205            public void setId(String newId) {
206                    String oldId = id;
207                    id = newId;
208                    if (eNotificationRequired())
209                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__ID, oldId, id));
210            }
211    
212            /**
213             * <!-- begin-user-doc -->
214             * <!-- end-user-doc -->
215             * @generated
216             */
217            public String getName() {
218                    return name;
219            }
220    
221            /**
222             * <!-- begin-user-doc -->
223             * <!-- end-user-doc -->
224             * @generated
225             */
226            public void setName(String newName) {
227                    String oldName = name;
228                    name = newName;
229                    if (eNotificationRequired())
230                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__NAME, oldName, name));
231            }
232    
233            /**
234             * <!-- begin-user-doc -->
235             * <!-- end-user-doc -->
236             * @generated
237             */
238            public String getDetails() {
239                    return details;
240            }
241    
242            /**
243             * <!-- begin-user-doc -->
244             * <!-- end-user-doc -->
245             * @generated
246             */
247            public void setDetails(String newDetails) {
248                    String oldDetails = details;
249                    details = newDetails;
250                    if (eNotificationRequired())
251                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__DETAILS, oldDetails, details));
252            }
253    
254            /**
255             * <!-- begin-user-doc -->
256             * <!-- end-user-doc -->
257             * @generated
258             */
259            public Snapshot getSnapshot() {
260                    if (eContainerFeatureID() != SnapshotPackage.EXTRACTOR__SNAPSHOT) return null;
261                    return (Snapshot)eContainer();
262            }
263    
264            /**
265             * <!-- begin-user-doc -->
266             * <!-- end-user-doc -->
267             * @generated
268             */
269            public NotificationChain basicSetSnapshot(Snapshot newSnapshot, NotificationChain msgs) {
270                    msgs = eBasicSetContainer((InternalEObject)newSnapshot, SnapshotPackage.EXTRACTOR__SNAPSHOT, msgs);
271                    return msgs;
272            }
273    
274            /**
275             * <!-- begin-user-doc -->
276             * <!-- end-user-doc -->
277             * @generated
278             */
279            public void setSnapshot(Snapshot newSnapshot) {
280                    if (newSnapshot != eInternalContainer() || (eContainerFeatureID() != SnapshotPackage.EXTRACTOR__SNAPSHOT && newSnapshot != null)) {
281                            if (EcoreUtil.isAncestor(this, newSnapshot))
282                                    throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
283                            NotificationChain msgs = null;
284                            if (eInternalContainer() != null)
285                                    msgs = eBasicRemoveFromContainer(msgs);
286                            if (newSnapshot != null)
287                                    msgs = ((InternalEObject)newSnapshot).eInverseAdd(this, SnapshotPackage.SNAPSHOT__ELEMENTS, Snapshot.class, msgs);
288                            msgs = basicSetSnapshot(newSnapshot, msgs);
289                            if (msgs != null) msgs.dispatch();
290                    }
291                    else if (eNotificationRequired())
292                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__SNAPSHOT, newSnapshot, newSnapshot));
293            }
294    
295            /**
296             * <!-- begin-user-doc -->
297             * <!-- end-user-doc -->
298             * @generated
299             */
300            public String getRole() {
301                    return role;
302            }
303    
304            /**
305             * <!-- begin-user-doc -->
306             * <!-- end-user-doc -->
307             * @generated
308             */
309            public void setRole(String newRole) {
310                    String oldRole = role;
311                    role = newRole;
312                    if (eNotificationRequired())
313                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__ROLE, oldRole, role));
314            }
315    
316            /**
317             * <!-- begin-user-doc -->
318             * <!-- end-user-doc -->
319             * @generated
320             */
321            public EList<Extractor> getParts() {
322                    if (parts == null) {
323                            parts = new EObjectContainmentEList<Extractor>(Extractor.class, this, SnapshotPackage.EXTRACTOR__PARTS);
324                    }
325                    return parts;
326            }
327    
328            /**
329             * <!-- begin-user-doc -->
330             * <!-- end-user-doc -->
331             * @generated
332             */
333            public EList<Integer> getParameterIndices() {
334                    if (parameterIndices == null) {
335                            parameterIndices = new EDataTypeUniqueEList<Integer>(Integer.class, this, SnapshotPackage.EXTRACTOR__PARAMETER_INDICES);
336                    }
337                    return parameterIndices;
338            }
339    
340            /**
341             * <!-- begin-user-doc -->
342             * <!-- end-user-doc -->
343             * @generated
344             */
345            public Double getCost() {
346                    return cost;
347            }
348    
349            /**
350             * <!-- begin-user-doc -->
351             * <!-- end-user-doc -->
352             * @generated
353             */
354            public void setCost(Double newCost) {
355                    Double oldCost = cost;
356                    cost = newCost;
357                    if (eNotificationRequired())
358                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.EXTRACTOR__COST, oldCost, cost));
359            }
360    
361            /**
362             * <!-- begin-user-doc -->
363             * <!-- end-user-doc -->
364             * @generated
365             */
366            @Override
367            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
368                    switch (featureID) {
369                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
370                                    if (eInternalContainer() != null)
371                                            msgs = eBasicRemoveFromContainer(msgs);
372                                    return basicSetSnapshot((Snapshot)otherEnd, msgs);
373                    }
374                    return super.eInverseAdd(otherEnd, featureID, msgs);
375            }
376    
377            /**
378             * <!-- begin-user-doc -->
379             * <!-- end-user-doc -->
380             * @generated
381             */
382            @Override
383            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
384                    switch (featureID) {
385                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
386                                    return basicSetSnapshot(null, msgs);
387                            case SnapshotPackage.EXTRACTOR__PARTS:
388                                    return ((InternalEList<?>)getParts()).basicRemove(otherEnd, msgs);
389                    }
390                    return super.eInverseRemove(otherEnd, featureID, msgs);
391            }
392    
393            /**
394             * <!-- begin-user-doc -->
395             * <!-- end-user-doc -->
396             * @generated
397             */
398            @Override
399            public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
400                    switch (eContainerFeatureID()) {
401                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
402                                    return eInternalContainer().eInverseRemove(this, SnapshotPackage.SNAPSHOT__ELEMENTS, Snapshot.class, msgs);
403                    }
404                    return super.eBasicRemoveFromContainerFeature(msgs);
405            }
406    
407            /**
408             * <!-- begin-user-doc -->
409             * <!-- end-user-doc -->
410             * @generated
411             */
412            @Override
413            public Object eGet(int featureID, boolean resolve, boolean coreType) {
414                    switch (featureID) {
415                            case SnapshotPackage.EXTRACTOR__ID:
416                                    return getId();
417                            case SnapshotPackage.EXTRACTOR__NAME:
418                                    return getName();
419                            case SnapshotPackage.EXTRACTOR__DETAILS:
420                                    return getDetails();
421                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
422                                    return getSnapshot();
423                            case SnapshotPackage.EXTRACTOR__ROLE:
424                                    return getRole();
425                            case SnapshotPackage.EXTRACTOR__PARTS:
426                                    return getParts();
427                            case SnapshotPackage.EXTRACTOR__PARAMETER_INDICES:
428                                    return getParameterIndices();
429                            case SnapshotPackage.EXTRACTOR__COST:
430                                    return getCost();
431                    }
432                    return super.eGet(featureID, resolve, coreType);
433            }
434    
435            /**
436             * <!-- begin-user-doc -->
437             * <!-- end-user-doc -->
438             * @generated
439             */
440            @SuppressWarnings("unchecked")
441            @Override
442            public void eSet(int featureID, Object newValue) {
443                    switch (featureID) {
444                            case SnapshotPackage.EXTRACTOR__ID:
445                                    setId((String)newValue);
446                                    return;
447                            case SnapshotPackage.EXTRACTOR__NAME:
448                                    setName((String)newValue);
449                                    return;
450                            case SnapshotPackage.EXTRACTOR__DETAILS:
451                                    setDetails((String)newValue);
452                                    return;
453                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
454                                    setSnapshot((Snapshot)newValue);
455                                    return;
456                            case SnapshotPackage.EXTRACTOR__ROLE:
457                                    setRole((String)newValue);
458                                    return;
459                            case SnapshotPackage.EXTRACTOR__PARTS:
460                                    getParts().clear();
461                                    getParts().addAll((Collection<? extends Extractor>)newValue);
462                                    return;
463                            case SnapshotPackage.EXTRACTOR__PARAMETER_INDICES:
464                                    getParameterIndices().clear();
465                                    getParameterIndices().addAll((Collection<? extends Integer>)newValue);
466                                    return;
467                            case SnapshotPackage.EXTRACTOR__COST:
468                                    setCost((Double)newValue);
469                                    return;
470                    }
471                    super.eSet(featureID, newValue);
472            }
473    
474            /**
475             * <!-- begin-user-doc -->
476             * <!-- end-user-doc -->
477             * @generated
478             */
479            @Override
480            public void eUnset(int featureID) {
481                    switch (featureID) {
482                            case SnapshotPackage.EXTRACTOR__ID:
483                                    setId(ID_EDEFAULT);
484                                    return;
485                            case SnapshotPackage.EXTRACTOR__NAME:
486                                    setName(NAME_EDEFAULT);
487                                    return;
488                            case SnapshotPackage.EXTRACTOR__DETAILS:
489                                    setDetails(DETAILS_EDEFAULT);
490                                    return;
491                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
492                                    setSnapshot((Snapshot)null);
493                                    return;
494                            case SnapshotPackage.EXTRACTOR__ROLE:
495                                    setRole(ROLE_EDEFAULT);
496                                    return;
497                            case SnapshotPackage.EXTRACTOR__PARTS:
498                                    getParts().clear();
499                                    return;
500                            case SnapshotPackage.EXTRACTOR__PARAMETER_INDICES:
501                                    getParameterIndices().clear();
502                                    return;
503                            case SnapshotPackage.EXTRACTOR__COST:
504                                    setCost(COST_EDEFAULT);
505                                    return;
506                    }
507                    super.eUnset(featureID);
508            }
509    
510            /**
511             * <!-- begin-user-doc -->
512             * <!-- end-user-doc -->
513             * @generated
514             */
515            @Override
516            public boolean eIsSet(int featureID) {
517                    switch (featureID) {
518                            case SnapshotPackage.EXTRACTOR__ID:
519                                    return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
520                            case SnapshotPackage.EXTRACTOR__NAME:
521                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
522                            case SnapshotPackage.EXTRACTOR__DETAILS:
523                                    return DETAILS_EDEFAULT == null ? details != null : !DETAILS_EDEFAULT.equals(details);
524                            case SnapshotPackage.EXTRACTOR__SNAPSHOT:
525                                    return getSnapshot() != null;
526                            case SnapshotPackage.EXTRACTOR__ROLE:
527                                    return ROLE_EDEFAULT == null ? role != null : !ROLE_EDEFAULT.equals(role);
528                            case SnapshotPackage.EXTRACTOR__PARTS:
529                                    return parts != null && !parts.isEmpty();
530                            case SnapshotPackage.EXTRACTOR__PARAMETER_INDICES:
531                                    return parameterIndices != null && !parameterIndices.isEmpty();
532                            case SnapshotPackage.EXTRACTOR__COST:
533                                    return COST_EDEFAULT == null ? cost != null : !COST_EDEFAULT.equals(cost);
534                    }
535                    return super.eIsSet(featureID);
536            }
537    
538            /**
539             * <!-- begin-user-doc -->
540             * <!-- end-user-doc -->
541             * @generated
542             */
543            @Override
544            public String toString() {
545                    if (eIsProxy()) return super.toString();
546    
547                    StringBuffer result = new StringBuffer(super.toString());
548                    result.append(" (id: ");
549                    result.append(id);
550                    result.append(", name: ");
551                    result.append(name);
552                    result.append(", details: ");
553                    result.append(details);
554                    result.append(", role: ");
555                    result.append(role);
556                    result.append(", parameterIndices: ");
557                    result.append(parameterIndices);
558                    result.append(", cost: ");
559                    result.append(cost);
560                    result.append(')');
561                    return result.toString();
562            }
563    
564    } //ExtractorImpl