de.unikassel.android.sdcframework.util
Class EventCollectorImpl<T extends ObservableEvent>

Package class diagram package EventCollectorImpl
java.lang.Object
  extended by de.unikassel.android.sdcframework.util.EventCollectorImpl<T>
Type Parameters:
T - the collected event type extending ObservableEvent
All Implemented Interfaces:
EventCollector<T>, ObservableEventSource<EventError>, ObserverRegistration<EventError>

public final class EventCollectorImpl<T extends ObservableEvent>
extends Object
implements EventCollector<T>

Generic type implementing a thread safe event queue.

The class does provide an observer for the event type to collect, which can be added to an observable event source. The observed events be enqueued automatically in an internal thread safe event queue.
Stored events can be dequeued by a call to dequeue() for further processing. For example, the AbstractAsynchrounousSampleObserver is using an instance of this class bounded to Sample to asynchronously queue observed sensor samples.

See Also:
EventCollector

Nested Class Summary
private  class EventCollectorImpl.EventObserverImpl
          Inner class implementing the event observer for the event type
 
Field Summary
private  ObservableEventSourceImpl<EventError> errorEventSource
          The observable error event source
private  EventCollectorImpl.EventObserverImpl eventObserver
          The event observer
private  BlockingQueue<T> queue
          the queue to store the events in
 
Constructor Summary
EventCollectorImpl()
          Constructor
 
Method Summary
 void clearCollectedEvents()
          Does clear the collected event queue
 T dequeue()
          Method to dequeue an event.
 int dequeue(Collection<? super T> collection, int maxElements)
          Method to dequeue more than one element event.
 boolean enqueue(T event)
          Method to enqueue an event
 ObservableEventSourceImpl<EventError> getErrorEventSource()
          Getter for the observable error event source
 int getEventCount()
          Getter for the count collected and stored events
 EventObserver<T> getEventObserver()
          Getter for the event observer
 boolean hasObservers()
          Test method for observers.
 void notify(EventError data)
          Does set the changed flag and notifies all observers
 void registerEventObserver(EventObserver<? extends EventError> observer)
          Does register an observer
 void removeAllObservers()
          Does remove all registered observers
private  void setErrorEventSource(ObservableEventSourceImpl<EventError> errorEventSource)
          Setter for the observable error event source
private  void setEventObserver(EventCollectorImpl.EventObserverImpl eventObserver)
          Setter for the eventObserver
 void unregisterEventObserver(EventObserver<? extends EventError> observer)
          Does delete a registered observer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

queue

private final BlockingQueue<T extends ObservableEvent> queue
the queue to store the events in


eventObserver

private EventCollectorImpl.EventObserverImpl eventObserver
The event observer


errorEventSource

private ObservableEventSourceImpl<EventError> errorEventSource
The observable error event source

Constructor Detail

EventCollectorImpl

public EventCollectorImpl()
Constructor

Method Detail

setEventObserver

private final void setEventObserver(EventCollectorImpl.EventObserverImpl eventObserver)
Setter for the eventObserver

Parameters:
eventObserver - the eventObserver to set

getEventObserver

public final EventObserver<T> getEventObserver()
Description copied from interface: EventCollector
Getter for the event observer

Specified by:
getEventObserver in interface EventCollector<T extends ObservableEvent>
Returns:
the event observer

getErrorEventSource

public final ObservableEventSourceImpl<EventError> getErrorEventSource()
Getter for the observable error event source

Returns:
the observable error event source

setErrorEventSource

private final void setErrorEventSource(ObservableEventSourceImpl<EventError> errorEventSource)
Setter for the observable error event source

Parameters:
errorEventSource - the observable error event source to set

enqueue

public final boolean enqueue(T event)
Description copied from interface: EventCollector
Method to enqueue an event

Specified by:
enqueue in interface EventCollector<T extends ObservableEvent>
Parameters:
event - the event to enqueue
Returns:
true if successful, false otherwise

dequeue

public final T dequeue()
                                        throws InterruptedException
Description copied from interface: EventCollector
Method to dequeue an event. Will block the caller if queue is empty!

Specified by:
dequeue in interface EventCollector<T extends ObservableEvent>
Returns:
the event
Throws:
InterruptedException - is thrown if a calling thread is interrupted while blocking at the internal queue

dequeue

public int dequeue(Collection<? super T> collection,
                   int maxElements)
Description copied from interface: EventCollector
Method to dequeue more than one element event.

Specified by:
dequeue in interface EventCollector<T extends ObservableEvent>
Parameters:
collection - the collection to dequeue elements into
maxElements - the maximum element count to dequeue
Returns:
the number of elements dequeued

getEventCount

public final int getEventCount()
Description copied from interface: EventCollector
Getter for the count collected and stored events

Specified by:
getEventCount in interface EventCollector<T extends ObservableEvent>
Returns:
the count of collected and stored events

clearCollectedEvents

public final void clearCollectedEvents()
Description copied from interface: EventCollector
Does clear the collected event queue

Specified by:
clearCollectedEvents in interface EventCollector<T extends ObservableEvent>

registerEventObserver

public final void registerEventObserver(EventObserver<? extends EventError> observer)
Description copied from interface: ObserverRegistration
Does register an observer

Specified by:
registerEventObserver in interface ObserverRegistration<EventError>
Parameters:
observer - the observer to add

unregisterEventObserver

public final void unregisterEventObserver(EventObserver<? extends EventError> observer)
Description copied from interface: ObserverRegistration
Does delete a registered observer

Specified by:
unregisterEventObserver in interface ObserverRegistration<EventError>
Parameters:
observer - the observer to delete

removeAllObservers

public final void removeAllObservers()
Description copied from interface: ObserverRegistration
Does remove all registered observers

Specified by:
removeAllObservers in interface ObserverRegistration<EventError>

notify

public final void notify(EventError data)
Description copied from interface: ObservableEventSource
Does set the changed flag and notifies all observers

Specified by:
notify in interface ObservableEventSource<EventError>
Parameters:
data - the observable event data to create notifications for

hasObservers

public boolean hasObservers()
Description copied from interface: ObservableEventSource
Test method for observers.

Specified by:
hasObservers in interface ObservableEventSource<EventError>
Returns:
true if observers are registered, false otherwise