de.bsvrz.pua.prot.processing.onlinebuffer
Class OnlineBuffer

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.pua.prot.processing.ProcessingBuffer
          extended by de.bsvrz.pua.prot.processing.onlinebuffer.OnlineBuffer
All Implemented Interfaces:
java.lang.Runnable

public class OnlineBuffer
extends ProcessingBuffer

Holt benötigte Daten vom Datenverteiler. Meldet sich als einfacher Empfänger beim Datenverteiler für die benötigten Datensätze an. Nach dem Erzeugen des Objektes sollte sofort init() aufgerufen werden. Dadurch werden Objekte erzeugt, die sich beim DAV als Empfänger für Online-Daten anmelden.

Version:
$Revision: 1.2 $ / $Date: 2008/01/22 16:55:49 $ / ($Author: yvonnes $)
Author:
beck et al. projects GmbH, Martin Hilgers

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class de.bsvrz.pua.prot.processing.ProcessingBuffer
buffer, bufferResult, dav, debug, done, imdsBuilder, INITIAL_RINGBUFFER_SIZE, periods, pi, realElements, tempElements
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
OnlineBuffer(ClientDavInterface dav, ProcessingInterface processor, ProcessingInformation pi, java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods)
          init() sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.
 
Method Summary
 boolean applyAggregations(BaseDataSet[] baseData)
          Online Daten werden nicht aggregiert.
protected  long getMillisToEndOfInterval()
          Berechnet die Zeit bis zum Ende des nächsten Intervalls.
 long getStartTime()
          Gibt dem Zeitpunkt zurück, an dem der Online ProcessingBuffer mit dem Sammeln der Daten begonnen hat.
 boolean hasData()
          Zeigt an ob Daten abgeholt werden können.
 void init()
          Erzeugt zu jedem Element ein Objekt zum Typ RealOnlineElement und startet den Thread.
 boolean isDone()
          Zeigt ob der Buffer noch weitere Daten liefern wird.
protected  boolean isDoneCollecting()
          Überprüft, ob das Ende der zu überprüfenden Zeitbereiche erreicht ist und alle Daten übertragen wurden.
protected  boolean isListAggregation()
          Liefert immer false zurück.
protected  void processNewData(java.util.ArrayList<ValueProvider> winners, ValueProvider[] elements)
          XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.
 void storeAggregatedData(byte status)
          Online gesammelte Daten werden nicht aggregiert.
 
Methods inherited from class de.bsvrz.pua.prot.processing.ProcessingBuffer
abort, applyPostFilter, getInsertEmpty, getResult, getTimeStampOrigin, getWinners, isAbort, isAggregate, isDeltaProtocol, nextInterval, notifyProcessor, run, setAggregate, setDone, setTempAttributes, size, storeDataSet, take
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

OnlineBuffer

public OnlineBuffer(ClientDavInterface dav,
                    ProcessingInterface processor,
                    ProcessingInformation pi,
                    java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods)
             throws FailureException
init() sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.

Parameters:
dav - Verbindung zum Datenverteiler.
processor - Objekt, das bei Ankunft von Daten benachrichtigt wird.
pi - Informationen zur Datenaufbereitung.
periods - Zeitbereiche, in denen Daten gesammelt werden sollen. Die Zeitbereiche müssen bereits sortiert und zusammengefasst sein!
Throws:
FailureException - Fehler bei der Kommunikation mit der Konfiguration.
Method Detail

init

public void init()
          throws FailureException
Erzeugt zu jedem Element ein Objekt zum Typ RealOnlineElement und startet den Thread. Diese melden sich beim Datenverteiler als Empfänger für Online-Daten an. Falls es zu einem Fehler beim anmelden als Empfänger beim Dav kommt, wird der Thread nicht gestartet, und ProcessingBuffer.abort() aufgerufen.

Specified by:
init in class ProcessingBuffer
Throws:
FailureException - Fehler.
See Also:
ProcessingBuffer.init()

getStartTime

public long getStartTime()
Gibt dem Zeitpunkt zurück, an dem der Online ProcessingBuffer mit dem Sammeln der Daten begonnen hat.

Returns:
Zeitpunkt ab dem Daten gesammelt werden.

applyAggregations

public boolean applyAggregations(BaseDataSet[] baseData)
Online Daten werden nicht aggregiert. Daher liefert diese Methode immer true zurück.

Specified by:
applyAggregations in class ProcessingBuffer
Parameters:
baseData - Werte des Ausgangsdatensatz. Einträge können von der Methode geändert werden.
Returns:
Immer true
See Also:
ProcessingBuffer.applyAggregations(BaseDataSet[])

hasData

public boolean hasData()
Description copied from class: ProcessingBuffer
Zeigt an ob Daten abgeholt werden können.

Specified by:
hasData in class ProcessingBuffer
Returns:
true falls Daten mittels ProcessingBuffer.take() abgeholt werden können.
See Also:
ProcessingBuffer.hasData()

isDoneCollecting

protected boolean isDoneCollecting()
Überprüft, ob das Ende der zu überprüfenden Zeitbereiche erreicht ist und alle Daten übertragen wurden.

Specified by:
isDoneCollecting in class ProcessingBuffer
Returns:
true falls alle Daten abgefragt wurden.
See Also:
ProcessingBuffer.isDoneCollecting()

isDone

public boolean isDone()
Description copied from class: ProcessingBuffer
Zeigt ob der Buffer noch weitere Daten liefern wird.

Specified by:
isDone in class ProcessingBuffer
Returns:
true falls noch weitere Daten zu erwarten sind.
See Also:
ProcessingBuffer.isDone()

isListAggregation

protected boolean isListAggregation()
Liefert immer false zurück.

Specified by:
isListAggregation in class ProcessingBuffer
Returns:
true falls Liste eine der ausgewählten die Aggregationsanwendungen ist.
See Also:
ProcessingBuffer.isListAggregation()

storeAggregatedData

public void storeAggregatedData(byte status)
Online gesammelte Daten werden nicht aggregiert. Daher tut diese Methode nichts.

Specified by:
storeAggregatedData in class ProcessingBuffer
Parameters:
status - Status, den der Aggregationsdatensatz erhalten soll.
See Also:
ProcessingBuffer.storeAggregatedData(byte)

getMillisToEndOfInterval

protected long getMillisToEndOfInterval()
Berechnet die Zeit bis zum Ende des nächsten Intervalls.


processNewData

protected void processNewData(java.util.ArrayList<ValueProvider> winners,
                              ValueProvider[] elements)
                       throws FailureException,
                              java.lang.InterruptedException
XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.

Specified by:
processNewData in class ProcessingBuffer
Parameters:
winners - Liste der Datensätze mit minimalem, nicht aufgefüllten Datenzeitstempel.
elements - Liste aller Ergebnislieferanten.
Throws:
FailureException - Fehler bei der Aufbereitung.
java.lang.InterruptedException - Aufbereitung wurde unterbrochen.
See Also:
ProcessingBuffer.processNewData(ArrayList, ValueProvider[])


Copyright © 2005-2008 beck et al. projects GmbH All Rights Reserved.