001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.eventbus.snapshot;
008    
009    import org.eclipse.emf.common.util.EList;
010    
011    /**
012     * <!-- begin-user-doc -->
013     * A representation of the model object '<em><b>Join Node</b></em>'.
014     * <!-- end-user-doc -->
015     *
016     * <!-- begin-model-doc -->
017     * Join node correlates/joins several events.
018     * <!-- end-model-doc -->
019     *
020     * <p>
021     * The following features are supported:
022     * <ul>
023     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getCollectors <em>Collectors</em>}</li>
024     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getOutputIndices <em>Output Indices</em>}</li>
025     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getHandler <em>Handler</em>}</li>
026     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getNext <em>Next</em>}</li>
027     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getPredicate <em>Predicate</em>}</li>
028     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getPrev <em>Prev</em>}</li>
029     *   <li>{@link com.hammurapi.eventbus.snapshot.JoinNode#getJoinInputs <em>Join Inputs</em>}</li>
030     * </ul>
031     * </p>
032     *
033     * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode()
034     * @model
035     * @generated
036     */
037    public interface JoinNode extends SnapshotElement {
038            /**
039             * Returns the value of the '<em><b>Collectors</b></em>' containment reference list.
040             * The list contents are of type {@link com.hammurapi.eventbus.snapshot.JoinInputCollector}.
041             * <!-- begin-user-doc -->
042             * <p>
043             * If the meaning of the '<em>Collectors</em>' containment reference list isn't clear,
044             * there really should be more of a description here...
045             * </p>
046             * <!-- end-user-doc -->
047             * <!-- begin-model-doc -->
048             * Collectors of input events
049             * <!-- end-model-doc -->
050             * @return the value of the '<em>Collectors</em>' containment reference list.
051             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_Collectors()
052             * @model containment="true" lower="2"
053             * @generated
054             */
055            EList<JoinInputCollector> getCollectors();
056    
057            /**
058             * Returns the value of the '<em><b>Output Indices</b></em>' attribute list.
059             * The list contents are of type {@link java.lang.Integer}.
060             * <!-- begin-user-doc -->
061             * <p>
062             * If the meaning of the '<em>Output Indices</em>' attribute list isn't clear,
063             * there really should be more of a description here...
064             * </p>
065             * <!-- end-user-doc -->
066             * <!-- begin-model-doc -->
067             * Indexes of events which this node outputs.
068             * <!-- end-model-doc -->
069             * @return the value of the '<em>Output Indices</em>' attribute list.
070             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_OutputIndices()
071             * @model
072             * @generated
073             */
074            EList<Integer> getOutputIndices();
075    
076            /**
077             * Returns the value of the '<em><b>Handler</b></em>' reference.
078             * It is bidirectional and its opposite is '{@link com.hammurapi.eventbus.snapshot.Handler#getJoinNode <em>Join Node</em>}'.
079             * <!-- begin-user-doc -->
080             * <p>
081             * If the meaning of the '<em>Handler</em>' reference isn't clear,
082             * there really should be more of a description here...
083             * </p>
084             * <!-- end-user-doc -->
085             * <!-- begin-model-doc -->
086             * Node's output handler.
087             * <!-- end-model-doc -->
088             * @return the value of the '<em>Handler</em>' reference.
089             * @see #setHandler(Handler)
090             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_Handler()
091             * @see com.hammurapi.eventbus.snapshot.Handler#getJoinNode
092             * @model opposite="joinNode"
093             * @generated
094             */
095            Handler getHandler();
096    
097            /**
098             * Sets the value of the '{@link com.hammurapi.eventbus.snapshot.JoinNode#getHandler <em>Handler</em>}' reference.
099             * <!-- begin-user-doc -->
100             * <!-- end-user-doc -->
101             * @param value the new value of the '<em>Handler</em>' reference.
102             * @see #getHandler()
103             * @generated
104             */
105            void setHandler(Handler value);
106    
107            /**
108             * Returns the value of the '<em><b>Next</b></em>' reference.
109             * It is bidirectional and its opposite is '{@link com.hammurapi.eventbus.snapshot.JoinNode#getPrev <em>Prev</em>}'.
110             * <!-- begin-user-doc -->
111             * <p>
112             * If the meaning of the '<em>Next</em>' reference isn't clear,
113             * there really should be more of a description here...
114             * </p>
115             * <!-- end-user-doc -->
116             * <!-- begin-model-doc -->
117             * Next join node. Join node can output either to a handler or to another join node.
118             * <!-- end-model-doc -->
119             * @return the value of the '<em>Next</em>' reference.
120             * @see #setNext(JoinNode)
121             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_Next()
122             * @see com.hammurapi.eventbus.snapshot.JoinNode#getPrev
123             * @model opposite="prev"
124             * @generated
125             */
126            JoinNode getNext();
127    
128            /**
129             * Sets the value of the '{@link com.hammurapi.eventbus.snapshot.JoinNode#getNext <em>Next</em>}' reference.
130             * <!-- begin-user-doc -->
131             * <!-- end-user-doc -->
132             * @param value the new value of the '<em>Next</em>' reference.
133             * @see #getNext()
134             * @generated
135             */
136            void setNext(JoinNode value);
137    
138            /**
139             * Returns the value of the '<em><b>Predicate</b></em>' containment reference.
140             * <!-- begin-user-doc -->
141             * <!-- end-user-doc -->
142             * <!-- begin-model-doc -->
143             * Join predicate.
144             * <!-- end-model-doc -->
145             * @return the value of the '<em>Predicate</em>' containment reference.
146             * @see #setPredicate(Predicate)
147             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_Predicate()
148             * @model containment="true"
149             * @generated
150             */
151            Predicate getPredicate();
152    
153            /**
154             * Sets the value of the '{@link com.hammurapi.eventbus.snapshot.JoinNode#getPredicate <em>Predicate</em>}' containment reference.
155             * <!-- begin-user-doc -->
156             * <!-- end-user-doc -->
157             * @param value the new value of the '<em>Predicate</em>' containment reference.
158             * @see #getPredicate()
159             * @generated
160             */
161            void setPredicate(Predicate value);
162    
163            /**
164             * Returns the value of the '<em><b>Prev</b></em>' reference list.
165             * The list contents are of type {@link com.hammurapi.eventbus.snapshot.JoinNode}.
166             * It is bidirectional and its opposite is '{@link com.hammurapi.eventbus.snapshot.JoinNode#getNext <em>Next</em>}'.
167             * <!-- begin-user-doc -->
168             * <p>
169             * If the meaning of the '<em>Prev</em>' reference isn't clear,
170             * there really should be more of a description here...
171             * </p>
172             * <!-- end-user-doc -->
173             * @return the value of the '<em>Prev</em>' reference list.
174             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_Prev()
175             * @see com.hammurapi.eventbus.snapshot.JoinNode#getNext
176             * @model opposite="next"
177             * @generated
178             */
179            EList<JoinNode> getPrev();
180    
181            /**
182             * Returns the value of the '<em><b>Join Inputs</b></em>' reference list.
183             * The list contents are of type {@link com.hammurapi.eventbus.snapshot.JoinInput}.
184             * It is bidirectional and its opposite is '{@link com.hammurapi.eventbus.snapshot.JoinInput#getJoinNode <em>Join Node</em>}'.
185             * <!-- begin-user-doc -->
186             * <p>
187             * If the meaning of the '<em>Join Inputs</em>' reference list isn't clear,
188             * there really should be more of a description here...
189             * </p>
190             * <!-- end-user-doc -->
191             * @return the value of the '<em>Join Inputs</em>' reference list.
192             * @see com.hammurapi.eventbus.snapshot.SnapshotPackage#getJoinNode_JoinInputs()
193             * @see com.hammurapi.eventbus.snapshot.JoinInput#getJoinNode
194             * @model opposite="joinNode"
195             * @generated
196             */
197            EList<JoinInput> getJoinInputs();
198    
199    } // JoinNode