package ee.telekom.workflow.graph.core;
import java.util.LinkedList;
import java.util.List;
import ee.telekom.workflow.graph.GraphInstance;
import ee.telekom.workflow.graph.GraphInstanceEventListener;
import ee.telekom.workflow.graph.GraphWorkItem;
import ee.telekom.workflow.graph.GraphWorkItemEventListener;
import ee.telekom.workflow.graph.Node;
import ee.telekom.workflow.graph.NodeEventListener;
import ee.telekom.workflow.graph.Token;
public class EventNotifier{
private List<GraphInstanceEventListener> instanceEventListeners = new LinkedList<>();
private List<GraphWorkItemEventListener> workItemEventListeners = new LinkedList<>();
private List<NodeEventListener> nodeEventListeners = new LinkedList<>();
public void registerInstanceEventListener( GraphInstanceEventListener listener ){
instanceEventListeners.add( listener );
}
public void registerWorkItemEventListener( GraphWorkItemEventListener listener ){
workItemEventListeners.add( listener );
}
public void registerNodeEventListener( NodeEventListener listener ){
nodeEventListeners.add( listener );
}
public void fireCreated( GraphInstance instance ){
for( GraphInstanceEventListener listener : instanceEventListeners ){
listener.onCreated( instance );
}
}
public void fireStarted( GraphInstance instance ){
for( GraphInstanceEventListener listener : instanceEventListeners ){
listener.onStarted( instance );
}
}
public void fireAborting( GraphInstance instance ){
for( GraphInstanceEventListener listener : instanceEventListeners ){
listener.onAborting( instance );
}
}
public void fireAborted( GraphInstance instance ){
for( GraphInstanceEventListener listener : instanceEventListeners ){
listener.onAborted( instance );
}
}
public void fireCompleted( GraphInstance instance ){
for( GraphInstanceEventListener listener : instanceEventListeners ){
listener.onCompleted( instance );
}
}
public void fireCreated( GraphWorkItem workItem ){
for( GraphWorkItemEventListener listener : workItemEventListeners ){
listener.onCreated( workItem );
}
}
public void fireCancelled( GraphWorkItem workItem ){
for( GraphWorkItemEventListener listener : workItemEventListeners ){
listener.onCancelled( workItem );
}
}
public void fireCompleted( GraphWorkItem workItem ){
for( GraphWorkItemEventListener listener : workItemEventListeners ){
listener.onCompleted( workItem );
}
}
public void fireEntering( Token token, Node node ){
for( NodeEventListener listener : nodeEventListeners ){
listener.onEntering( token, node );
}
}
public void fireLeft( Token token, Node node ){
for( NodeEventListener listener : nodeEventListeners ){
listener.onLeft( token, node );
}
}
}