    001    /**
    002     * <copyright>
    003     * </copyright>
    004     *
    005     * $Id$
    006     */
    007    package com.hammurapi.eventbus.snapshot.impl;
    008
    009    import com.hammurapi.eventbus.snapshot.Handler;
    010    import com.hammurapi.eventbus.snapshot.JoinInput;
    011    import com.hammurapi.eventbus.snapshot.JoinInputCollector;
    012    import com.hammurapi.eventbus.snapshot.JoinNode;
    013    import com.hammurapi.eventbus.snapshot.Predicate;
    014    import com.hammurapi.eventbus.snapshot.Snapshot;
    015    import com.hammurapi.eventbus.snapshot.SnapshotPackage;
    016
    017    import java.util.Collection;
    018
    019    import org.eclipse.emf.common.notify.Notification;
    020    import org.eclipse.emf.common.notify.NotificationChain;
    021
    022    import org.eclipse.emf.common.util.EList;
    023
    024    import org.eclipse.emf.ecore.EClass;
    025    import org.eclipse.emf.ecore.InternalEObject;
    026
    027    import org.eclipse.emf.ecore.impl.ENotificationImpl;
    028    import org.eclipse.emf.ecore.impl.EObjectImpl;
    029
    030    import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
    031    import org.eclipse.emf.ecore.util.EObjectContainmentEList;
    032    import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
    033    import org.eclipse.emf.ecore.util.EcoreUtil;
    034    import org.eclipse.emf.ecore.util.InternalEList;
    035
    036    /**
    037     * <!-- begin-user-doc -->
    038     * An implementation of the model object '<em><b>Join Node</b></em>'.
    039     * <!-- end-user-doc -->
    040     * <p>
    041     * The following features are implemented:
    042     * <ul>
    043     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getId <em>Id</em>}</li>
    044     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getName <em>Name</em>}</li>
    045     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getDetails <em>Details</em>}</li>
    046     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getSnapshot <em>Snapshot</em>}</li>
    047     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getCollectors <em>Collectors</em>}</li>
    048     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getOutputIndices <em>Output Indices</em>}</li>
    049     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getHandler <em>Handler</em>}</li>
    050     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getNext <em>Next</em>}</li>
    051     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getPredicate <em>Predicate</em>}</li>
    052     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getPrev <em>Prev</em>}</li>
    053     *   <li>{@link com.hammurapi.eventbus.snapshot.impl.JoinNodeImpl#getJoinInputs <em>Join Inputs</em>}</li>
    054     * </ul>
    055     * </p>
    056     *
    057     * @generated
    058     */
    059    public class JoinNodeImpl extends EObjectImpl implements JoinNode {
    060            /**
    061             * The default value of the '{@link #getId() <em>Id</em>}' attribute.
    062             * <!-- begin-user-doc -->
    063             * <!-- end-user-doc -->
    064             * @see #getId()
    065             * @generated
    066             * @ordered
    067             */
    068            protected static final String ID_EDEFAULT = null;
    069
    070            /**
    071             * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
    072             * <!-- begin-user-doc -->
    073             * <!-- end-user-doc -->
    074             * @see #getId()
    075             * @generated
    076             * @ordered
    077             */
    078            protected String id = ID_EDEFAULT;
    079
    080            /**
    081             * The default value of the '{@link #getName() <em>Name</em>}' attribute.
    082             * <!-- begin-user-doc -->
    083             * <!-- end-user-doc -->
    084             * @see #getName()
    085             * @generated
    086             * @ordered
    087             */
    088            protected static final String NAME_EDEFAULT = null;
    089
    090            /**
    091             * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
    092             * <!-- begin-user-doc -->
    093             * <!-- end-user-doc -->
    094             * @see #getName()
    095             * @generated
    096             * @ordered
    097             */
    098            protected String name = NAME_EDEFAULT;
    099
    100            /**
    101             * The default value of the '{@link #getDetails() <em>Details</em>}' attribute.
    102             * <!-- begin-user-doc -->
    103             * <!-- end-user-doc -->
    104             * @see #getDetails()
    105             * @generated
    106             * @ordered
    107             */
    108            protected static final String DETAILS_EDEFAULT = null;
    109
    110            /**
    111             * The cached value of the '{@link #getDetails() <em>Details</em>}' attribute.
    112             * <!-- begin-user-doc -->
    113             * <!-- end-user-doc -->
    114             * @see #getDetails()
    115             * @generated
    116             * @ordered
    117             */
    118            protected String details = DETAILS_EDEFAULT;
    119
    120            /**
    121             * The cached value of the '{@link #getCollectors() <em>Collectors</em>}' containment reference list.
    122             * <!-- begin-user-doc -->
    123             * <!-- end-user-doc -->
    124             * @see #getCollectors()
    125             * @generated
    126             * @ordered
    127             */
    128            protected EList<JoinInputCollector> collectors;
    129
    130            /**
    131             * The cached value of the '{@link #getOutputIndices() <em>Output Indices</em>}' attribute list.
    132             * <!-- begin-user-doc -->
    133             * <!-- end-user-doc -->
    134             * @see #getOutputIndices()
    135             * @generated
    136             * @ordered
    137             */
    138            protected EList<Integer> outputIndices;
    139
    140            /**
    141             * The cached value of the '{@link #getHandler() <em>Handler</em>}' reference.
    142             * <!-- begin-user-doc -->
    143             * <!-- end-user-doc -->
    144             * @see #getHandler()
    145             * @generated
    146             * @ordered
    147             */
    148            protected Handler handler;
    149
    150            /**
    151             * The cached value of the '{@link #getNext() <em>Next</em>}' reference.
    152             * <!-- begin-user-doc -->
    153             * <!-- end-user-doc -->
    154             * @see #getNext()
    155             * @generated
    156             * @ordered
    157             */
    158            protected JoinNode next;
    159
    160            /**
    161             * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
    162             * <!-- begin-user-doc -->
    163             * <!-- end-user-doc -->
    164             * @see #getPredicate()
    165             * @generated
    166             * @ordered
    167             */
    168            protected Predicate predicate;
    169
    170            /**
    171             * The cached value of the '{@link #getPrev() <em>Prev</em>}' reference list.
    172             * <!-- begin-user-doc -->
    173             * <!-- end-user-doc -->
    174             * @see #getPrev()
    175             * @generated
    176             * @ordered
    177             */
    178            protected EList<JoinNode> prev;
    179
    180            /**
    181             * The cached value of the '{@link #getJoinInputs() <em>Join Inputs</em>}' reference list.
    182             * <!-- begin-user-doc -->
    183             * <!-- end-user-doc -->
    184             * @see #getJoinInputs()
    185             * @generated
    186             * @ordered
    187             */
    188            protected EList<JoinInput> joinInputs;
    189
    190            /**
    191             * <!-- begin-user-doc -->
    192             * <!-- end-user-doc -->
    193             * @generated
    194             */
    195            protected JoinNodeImpl() {
    196                    super();
    197            }
    198
    199            /**
    200             * <!-- begin-user-doc -->
    201             * <!-- end-user-doc -->
    202             * @generated
    203             */
    204            @Override
    205            protected EClass eStaticClass() {
    206                    return SnapshotPackage.Literals.JOIN_NODE;
    207            }
    208
    209            /**
    210             * <!-- begin-user-doc -->
    211             * <!-- end-user-doc -->
    212             * @generated
    213             */
    214            public String getId() {
    215                    return id;
    216            }
    217
    218            /**
    219             * <!-- begin-user-doc -->
    220             * <!-- end-user-doc -->
    221             * @generated
    222             */
    223            public void setId(String newId) {
    224                    String oldId = id;
    225                    id = newId;
    226                    if (eNotificationRequired())
    227                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__ID, oldId, id));
    228            }
    229
    230            /**
    231             * <!-- begin-user-doc -->
    232             * <!-- end-user-doc -->
    233             * @generated
    234             */
    235            public String getName() {
    236                    return name;
    237            }
    238
    239            /**
    240             * <!-- begin-user-doc -->
    241             * <!-- end-user-doc -->
    242             * @generated
    243             */
    244            public void setName(String newName) {
    245                    String oldName = name;
    246                    name = newName;
    247                    if (eNotificationRequired())
    248                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__NAME, oldName, name));
    249            }
    250
    251            /**
    252             * <!-- begin-user-doc -->
    253             * <!-- end-user-doc -->
    254             * @generated
    255             */
    256            public String getDetails() {
    257                    return details;
    258            }
    259
    260            /**
    261             * <!-- begin-user-doc -->
    262             * <!-- end-user-doc -->
    263             * @generated
    264             */
    265            public void setDetails(String newDetails) {
    266                    String oldDetails = details;
    267                    details = newDetails;
    268                    if (eNotificationRequired())
    269                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__DETAILS, oldDetails, details));
    270            }
    271
    272            /**
    273             * <!-- begin-user-doc -->
    274             * <!-- end-user-doc -->
    275             * @generated
    276             */
    277            public Snapshot getSnapshot() {
    278                    if (eContainerFeatureID() != SnapshotPackage.JOIN_NODE__SNAPSHOT) return null;
    279                    return (Snapshot)eContainer();
    280            }
    281
    282            /**
    283             * <!-- begin-user-doc -->
    284             * <!-- end-user-doc -->
    285             * @generated
    286             */
    287            public NotificationChain basicSetSnapshot(Snapshot newSnapshot, NotificationChain msgs) {
    288                    msgs = eBasicSetContainer((InternalEObject)newSnapshot, SnapshotPackage.JOIN_NODE__SNAPSHOT, msgs);
    289                    return msgs;
    290            }
    291
    292            /**
    293             * <!-- begin-user-doc -->
    294             * <!-- end-user-doc -->
    295             * @generated
    296             */
    297            public void setSnapshot(Snapshot newSnapshot) {
    298                    if (newSnapshot != eInternalContainer() || (eContainerFeatureID() != SnapshotPackage.JOIN_NODE__SNAPSHOT && newSnapshot != null)) {
    299                            if (EcoreUtil.isAncestor(this, newSnapshot))
    300                                    throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
    301                            NotificationChain msgs = null;
    302                            if (eInternalContainer() != null)
    303                                    msgs = eBasicRemoveFromContainer(msgs);
    304                            if (newSnapshot != null)
    305                                    msgs = ((InternalEObject)newSnapshot).eInverseAdd(this, SnapshotPackage.SNAPSHOT__ELEMENTS, Snapshot.class, msgs);
    306                            msgs = basicSetSnapshot(newSnapshot, msgs);
    307                            if (msgs != null) msgs.dispatch();
    308                    }
    309                    else if (eNotificationRequired())
    310                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__SNAPSHOT, newSnapshot, newSnapshot));
    311            }
    312
    313            /**
    314             * <!-- begin-user-doc -->
    315             * <!-- end-user-doc -->
    316             * @generated
    317             */
    318            public EList<JoinInputCollector> getCollectors() {
    319                    if (collectors == null) {
    320                            collectors = new EObjectContainmentEList<JoinInputCollector>(JoinInputCollector.class, this, SnapshotPackage.JOIN_NODE__COLLECTORS);
    321                    }
    322                    return collectors;
    323            }
    324
    325            /**
    326             * <!-- begin-user-doc -->
    327             * <!-- end-user-doc -->
    328             * @generated
    329             */
    330            public EList<Integer> getOutputIndices() {
    331                    if (outputIndices == null) {
    332                            outputIndices = new EDataTypeUniqueEList<Integer>(Integer.class, this, SnapshotPackage.JOIN_NODE__OUTPUT_INDICES);
    333                    }
    334                    return outputIndices;
    335            }
    336
    337            /**
    338             * <!-- begin-user-doc -->
    339             * <!-- end-user-doc -->
    340             * @generated
    341             */
    342            public Handler getHandler() {
    343                    if (handler != null && handler.eIsProxy()) {
    344                            InternalEObject oldHandler = (InternalEObject)handler;
    345                            handler = (Handler)eResolveProxy(oldHandler);
    346                            if (handler != oldHandler) {
    347                                    if (eNotificationRequired())
    348                                            eNotify(new ENotificationImpl(this, Notification.RESOLVE, SnapshotPackage.JOIN_NODE__HANDLER, oldHandler, handler));
    349                            }
    350                    }
    351                    return handler;
    352            }
    353
    354            /**
    355             * <!-- begin-user-doc -->
    356             * <!-- end-user-doc -->
    357             * @generated
    358             */
    359            public Handler basicGetHandler() {
    360                    return handler;
    361            }
    362
    363            /**
    364             * <!-- begin-user-doc -->
    365             * <!-- end-user-doc -->
    366             * @generated
    367             */
    368            public NotificationChain basicSetHandler(Handler newHandler, NotificationChain msgs) {
    369                    Handler oldHandler = handler;
    370                    handler = newHandler;
    371                    if (eNotificationRequired()) {
    372                            ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__HANDLER, oldHandler, newHandler);
    373                            if (msgs == null) msgs = notification; else msgs.add(notification);
    374                    }
    375                    return msgs;
    376            }
    377
    378            /**
    379             * <!-- begin-user-doc -->
    380             * <!-- end-user-doc -->
    381             * @generated
    382             */
    383            public void setHandler(Handler newHandler) {
    384                    if (newHandler != handler) {
    385                            NotificationChain msgs = null;
    386                            if (handler != null)
    387                                    msgs = ((InternalEObject)handler).eInverseRemove(this, SnapshotPackage.HANDLER__JOIN_NODE, Handler.class, msgs);
    388                            if (newHandler != null)
    389                                    msgs = ((InternalEObject)newHandler).eInverseAdd(this, SnapshotPackage.HANDLER__JOIN_NODE, Handler.class, msgs);
    390                            msgs = basicSetHandler(newHandler, msgs);
    391                            if (msgs != null) msgs.dispatch();
    392                    }
    393                    else if (eNotificationRequired())
    394                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__HANDLER, newHandler, newHandler));
    395            }
    396
    397            /**
    398             * <!-- begin-user-doc -->
    399             * <!-- end-user-doc -->
    400             * @generated
    401             */
    402            public JoinNode getNext() {
    403                    if (next != null && next.eIsProxy()) {
    404                            InternalEObject oldNext = (InternalEObject)next;
    405                            next = (JoinNode)eResolveProxy(oldNext);
    406                            if (next != oldNext) {
    407                                    if (eNotificationRequired())
    408                                            eNotify(new ENotificationImpl(this, Notification.RESOLVE, SnapshotPackage.JOIN_NODE__NEXT, oldNext, next));
    409                            }
    410                    }
    411                    return next;
    412            }
    413
    414            /**
    415             * <!-- begin-user-doc -->
    416             * <!-- end-user-doc -->
    417             * @generated
    418             */
    419            public JoinNode basicGetNext() {
    420                    return next;
    421            }
    422
    423            /**
    424             * <!-- begin-user-doc -->
    425             * <!-- end-user-doc -->
    426             * @generated
    427             */
    428            public NotificationChain basicSetNext(JoinNode newNext, NotificationChain msgs) {
    429                    JoinNode oldNext = next;
    430                    next = newNext;
    431                    if (eNotificationRequired()) {
    432                            ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__NEXT, oldNext, newNext);
    433                            if (msgs == null) msgs = notification; else msgs.add(notification);
    434                    }
    435                    return msgs;
    436            }
    437
    438            /**
    439             * <!-- begin-user-doc -->
    440             * <!-- end-user-doc -->
    441             * @generated
    442             */
    443            public void setNext(JoinNode newNext) {
    444                    if (newNext != next) {
    445                            NotificationChain msgs = null;
    446                            if (next != null)
    447                                    msgs = ((InternalEObject)next).eInverseRemove(this, SnapshotPackage.JOIN_NODE__PREV, JoinNode.class, msgs);
    448                            if (newNext != null)
    449                                    msgs = ((InternalEObject)newNext).eInverseAdd(this, SnapshotPackage.JOIN_NODE__PREV, JoinNode.class, msgs);
    450                            msgs = basicSetNext(newNext, msgs);
    451                            if (msgs != null) msgs.dispatch();
    452                    }
    453                    else if (eNotificationRequired())
    454                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__NEXT, newNext, newNext));
    455            }
    456
    457            /**
    458             * <!-- begin-user-doc -->
    459             * <!-- end-user-doc -->
    460             * @generated
    461             */
    462            public Predicate getPredicate() {
    463                    return predicate;
    464            }
    465
    466            /**
    467             * <!-- begin-user-doc -->
    468             * <!-- end-user-doc -->
    469             * @generated
    470             */
    471            public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs) {
    472                    Predicate oldPredicate = predicate;
    473                    predicate = newPredicate;
    474                    if (eNotificationRequired()) {
    475                            ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__PREDICATE, oldPredicate, newPredicate);
    476                            if (msgs == null) msgs = notification; else msgs.add(notification);
    477                    }
    478                    return msgs;
    479            }
    480
    481            /**
    482             * <!-- begin-user-doc -->
    483             * <!-- end-user-doc -->
    484             * @generated
    485             */
    486            public void setPredicate(Predicate newPredicate) {
    487                    if (newPredicate != predicate) {
    488                            NotificationChain msgs = null;
    489                            if (predicate != null)
    490                                    msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SnapshotPackage.JOIN_NODE__PREDICATE, null, msgs);
    491                            if (newPredicate != null)
    492                                    msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SnapshotPackage.JOIN_NODE__PREDICATE, null, msgs);
    493                            msgs = basicSetPredicate(newPredicate, msgs);
    494                            if (msgs != null) msgs.dispatch();
    495                    }
    496                    else if (eNotificationRequired())
    497                            eNotify(new ENotificationImpl(this, Notification.SET, SnapshotPackage.JOIN_NODE__PREDICATE, newPredicate, newPredicate));
    498            }
    499
    500            /**
    501             * <!-- begin-user-doc -->
    502             * <!-- end-user-doc -->
    503             * @generated
    504             */
    505            public EList<JoinNode> getPrev() {
    506                    if (prev == null) {
    507                            prev = new EObjectWithInverseResolvingEList<JoinNode>(JoinNode.class, this, SnapshotPackage.JOIN_NODE__PREV, SnapshotPackage.JOIN_NODE__NEXT);
    508                    }
    509                    return prev;
    510            }
    511
    512            /**
    513             * <!-- begin-user-doc -->
    514             * <!-- end-user-doc -->
    515             * @generated
    516             */
    517            public EList<JoinInput> getJoinInputs() {
    518                    if (joinInputs == null) {
    519                            joinInputs = new EObjectWithInverseResolvingEList<JoinInput>(JoinInput.class, this, SnapshotPackage.JOIN_NODE__JOIN_INPUTS, SnapshotPackage.JOIN_INPUT__JOIN_NODE);
    520                    }
    521                    return joinInputs;
    522            }
    523
    524            /**
    525             * <!-- begin-user-doc -->
    526             * <!-- end-user-doc -->
    527             * @generated
    528             */
    529            @SuppressWarnings("unchecked")
    530            @Override
    531            public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
    532                    switch (featureID) {
    533                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    534                                    if (eInternalContainer() != null)
    535                                            msgs = eBasicRemoveFromContainer(msgs);
    536                                    return basicSetSnapshot((Snapshot)otherEnd, msgs);
    537                            case SnapshotPackage.JOIN_NODE__HANDLER:
    538                                    if (handler != null)
    539                                            msgs = ((InternalEObject)handler).eInverseRemove(this, SnapshotPackage.HANDLER__JOIN_NODE, Handler.class, msgs);
    540                                    return basicSetHandler((Handler)otherEnd, msgs);
    541                            case SnapshotPackage.JOIN_NODE__NEXT:
    542                                    if (next != null)
    543                                            msgs = ((InternalEObject)next).eInverseRemove(this, SnapshotPackage.JOIN_NODE__PREV, JoinNode.class, msgs);
    544                                    return basicSetNext((JoinNode)otherEnd, msgs);
    545                            case SnapshotPackage.JOIN_NODE__PREV:
    546                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getPrev()).basicAdd(otherEnd, msgs);
    547                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    548                                    return ((InternalEList<InternalEObject>)(InternalEList<?>)getJoinInputs()).basicAdd(otherEnd, msgs);
    549                    }
    550                    return super.eInverseAdd(otherEnd, featureID, msgs);
    551            }
    552
    553            /**
    554             * <!-- begin-user-doc -->
    555             * <!-- end-user-doc -->
    556             * @generated
    557             */
    558            @Override
    559            public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
    560                    switch (featureID) {
    561                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    562                                    return basicSetSnapshot(null, msgs);
    563                            case SnapshotPackage.JOIN_NODE__COLLECTORS:
    564                                    return ((InternalEList<?>)getCollectors()).basicRemove(otherEnd, msgs);
    565                            case SnapshotPackage.JOIN_NODE__HANDLER:
    566                                    return basicSetHandler(null, msgs);
    567                            case SnapshotPackage.JOIN_NODE__NEXT:
    568                                    return basicSetNext(null, msgs);
    569                            case SnapshotPackage.JOIN_NODE__PREDICATE:
    570                                    return basicSetPredicate(null, msgs);
    571                            case SnapshotPackage.JOIN_NODE__PREV:
    572                                    return ((InternalEList<?>)getPrev()).basicRemove(otherEnd, msgs);
    573                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    574                                    return ((InternalEList<?>)getJoinInputs()).basicRemove(otherEnd, msgs);
    575                    }
    576                    return super.eInverseRemove(otherEnd, featureID, msgs);
    577            }
    578
    579            /**
    580             * <!-- begin-user-doc -->
    581             * <!-- end-user-doc -->
    582             * @generated
    583             */
    584            @Override
    585            public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
    586                    switch (eContainerFeatureID()) {
    587                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    588                                    return eInternalContainer().eInverseRemove(this, SnapshotPackage.SNAPSHOT__ELEMENTS, Snapshot.class, msgs);
    589                    }
    590                    return super.eBasicRemoveFromContainerFeature(msgs);
    591            }
    592
    593            /**
    594             * <!-- begin-user-doc -->
    595             * <!-- end-user-doc -->
    596             * @generated
    597             */
    598            @Override
    599            public Object eGet(int featureID, boolean resolve, boolean coreType) {
    600                    switch (featureID) {
    601                            case SnapshotPackage.JOIN_NODE__ID:
    602                                    return getId();
    603                            case SnapshotPackage.JOIN_NODE__NAME:
    604                                    return getName();
    605                            case SnapshotPackage.JOIN_NODE__DETAILS:
    606                                    return getDetails();
    607                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    608                                    return getSnapshot();
    609                            case SnapshotPackage.JOIN_NODE__COLLECTORS:
    610                                    return getCollectors();
    611                            case SnapshotPackage.JOIN_NODE__OUTPUT_INDICES:
    612                                    return getOutputIndices();
    613                            case SnapshotPackage.JOIN_NODE__HANDLER:
    614                                    if (resolve) return getHandler();
    615                                    return basicGetHandler();
    616                            case SnapshotPackage.JOIN_NODE__NEXT:
    617                                    if (resolve) return getNext();
    618                                    return basicGetNext();
    619                            case SnapshotPackage.JOIN_NODE__PREDICATE:
    620                                    return getPredicate();
    621                            case SnapshotPackage.JOIN_NODE__PREV:
    622                                    return getPrev();
    623                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    624                                    return getJoinInputs();
    625                    }
    626                    return super.eGet(featureID, resolve, coreType);
    627            }
    628
    629            /**
    630             * <!-- begin-user-doc -->
    631             * <!-- end-user-doc -->
    632             * @generated
    633             */
    634            @SuppressWarnings("unchecked")
    635            @Override
    636            public void eSet(int featureID, Object newValue) {
    637                    switch (featureID) {
    638                            case SnapshotPackage.JOIN_NODE__ID:
    639                                    setId((String)newValue);
    640                                    return;
    641                            case SnapshotPackage.JOIN_NODE__NAME:
    642                                    setName((String)newValue);
    643                                    return;
    644                            case SnapshotPackage.JOIN_NODE__DETAILS:
    645                                    setDetails((String)newValue);
    646                                    return;
    647                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    648                                    setSnapshot((Snapshot)newValue);
    649                                    return;
    650                            case SnapshotPackage.JOIN_NODE__COLLECTORS:
    651                                    getCollectors().clear();
    652                                    getCollectors().addAll((Collection<? extends JoinInputCollector>)newValue);
    653                                    return;
    654                            case SnapshotPackage.JOIN_NODE__OUTPUT_INDICES:
    655                                    getOutputIndices().clear();
    656                                    getOutputIndices().addAll((Collection<? extends Integer>)newValue);
    657                                    return;
    658                            case SnapshotPackage.JOIN_NODE__HANDLER:
    659                                    setHandler((Handler)newValue);
    660                                    return;
    661                            case SnapshotPackage.JOIN_NODE__NEXT:
    662                                    setNext((JoinNode)newValue);
    663                                    return;
    664                            case SnapshotPackage.JOIN_NODE__PREDICATE:
    665                                    setPredicate((Predicate)newValue);
    666                                    return;
    667                            case SnapshotPackage.JOIN_NODE__PREV:
    668                                    getPrev().clear();
    669                                    getPrev().addAll((Collection<? extends JoinNode>)newValue);
    670                                    return;
    671                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    672                                    getJoinInputs().clear();
    673                                    getJoinInputs().addAll((Collection<? extends JoinInput>)newValue);
    674                                    return;
    675                    }
    676                    super.eSet(featureID, newValue);
    677            }
    678
    679            /**
    680             * <!-- begin-user-doc -->
    681             * <!-- end-user-doc -->
    682             * @generated
    683             */
    684            @Override
    685            public void eUnset(int featureID) {
    686                    switch (featureID) {
    687                            case SnapshotPackage.JOIN_NODE__ID:
    688                                    setId(ID_EDEFAULT);
    689                                    return;
    690                            case SnapshotPackage.JOIN_NODE__NAME:
    691                                    setName(NAME_EDEFAULT);
    692                                    return;
    693                            case SnapshotPackage.JOIN_NODE__DETAILS:
    694                                    setDetails(DETAILS_EDEFAULT);
    695                                    return;
    696                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    697                                    setSnapshot((Snapshot)null);
    698                                    return;
    699                            case SnapshotPackage.JOIN_NODE__COLLECTORS:
    700                                    getCollectors().clear();
    701                                    return;
    702                            case SnapshotPackage.JOIN_NODE__OUTPUT_INDICES:
    703                                    getOutputIndices().clear();
    704                                    return;
    705                            case SnapshotPackage.JOIN_NODE__HANDLER:
    706                                    setHandler((Handler)null);
    707                                    return;
    708                            case SnapshotPackage.JOIN_NODE__NEXT:
    709                                    setNext((JoinNode)null);
    710                                    return;
    711                            case SnapshotPackage.JOIN_NODE__PREDICATE:
    712                                    setPredicate((Predicate)null);
    713                                    return;
    714                            case SnapshotPackage.JOIN_NODE__PREV:
    715                                    getPrev().clear();
    716                                    return;
    717                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    718                                    getJoinInputs().clear();
    719                                    return;
    720                    }
    721                    super.eUnset(featureID);
    722            }
    723
    724            /**
    725             * <!-- begin-user-doc -->
    726             * <!-- end-user-doc -->
    727             * @generated
    728             */
    729            @Override
    730            public boolean eIsSet(int featureID) {
    731                    switch (featureID) {
    732                            case SnapshotPackage.JOIN_NODE__ID:
    733                                    return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
    734                            case SnapshotPackage.JOIN_NODE__NAME:
    735                                    return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
    736                            case SnapshotPackage.JOIN_NODE__DETAILS:
    737                                    return DETAILS_EDEFAULT == null ? details != null : !DETAILS_EDEFAULT.equals(details);
    738                            case SnapshotPackage.JOIN_NODE__SNAPSHOT:
    739                                    return getSnapshot() != null;
    740                            case SnapshotPackage.JOIN_NODE__COLLECTORS:
    741                                    return collectors != null && !collectors.isEmpty();
    742                            case SnapshotPackage.JOIN_NODE__OUTPUT_INDICES:
    743                                    return outputIndices != null && !outputIndices.isEmpty();
    744                            case SnapshotPackage.JOIN_NODE__HANDLER:
    745                                    return handler != null;
    746                            case SnapshotPackage.JOIN_NODE__NEXT:
    747                                    return next != null;
    748                            case SnapshotPackage.JOIN_NODE__PREDICATE:
    749                                    return predicate != null;
    750                            case SnapshotPackage.JOIN_NODE__PREV:
    751                                    return prev != null && !prev.isEmpty();
    752                            case SnapshotPackage.JOIN_NODE__JOIN_INPUTS:
    753                                    return joinInputs != null && !joinInputs.isEmpty();
    754                    }
    755                    return super.eIsSet(featureID);
    756            }
    757
    758            /**
    759             * <!-- begin-user-doc -->
    760             * <!-- end-user-doc -->
    761             * @generated
    762             */
    763            @Override
    764            public String toString() {
    765                    if (eIsProxy()) return super.toString();
    766
    767                    StringBuffer result = new StringBuffer(super.toString());
    768                    result.append(" (id: ");
    769                    result.append(id);
    770                    result.append(", name: ");
    771                    result.append(name);
    772                    result.append(", details: ");
    773                    result.append(details);
    774                    result.append(", outputIndices: ");
    775                    result.append(outputIndices);
    776                    result.append(')');
    777                    return result.toString();
    778            }
    779
    780    } //JoinNodeImpl