Class OnlineBuffer
- java.lang.Object
-
- java.lang.Thread
-
- de.bsvrz.pua.prot.processing.ProcessingBuffer
-
- 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 sofortinit()
aufgerufen werden. Dadurch werden Objekte erzeugt, die sich beim DAV als Empfänger für Online-Daten anmelden.
-
-
Field Summary
-
Fields inherited from class de.bsvrz.pua.prot.processing.ProcessingBuffer
_buffer, _bufferResult, _connection, _dataSetBuilder, _debug, _done, _periods, _processingInformation, _realElements, _tempElements, INITIAL_RINGBUFFER_SIZE
-
-
Constructor Summary
Constructors Constructor Description OnlineBuffer(de.bsvrz.dav.daf.main.ClientDavInterface dav, ProcessingInterface processor, ProcessingInformation pi, java.util.List<de.bsvrz.sys.funclib.losb.util.Tuple<java.lang.Long,java.lang.Long>> periods, int startPeriodIndex, java.lang.String scriptName, de.bsvrz.dav.daf.accessControl.UserInfo userInfo)
init()
sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.
-
Method Summary
Modifier and Type Method Description boolean
applyAggregations(java.util.List<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 TypRealOnlineElement
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(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners)
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, getProtocolType, getResult, getScriptName, getTimeStampOrigin, getWinners, isAbort, isAggregate, nextInterval, notifyProcessor, run, setAggregate, setDone, setTempAttributes, size, storeDataSet, take
-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Constructor Detail
-
OnlineBuffer
public OnlineBuffer(de.bsvrz.dav.daf.main.ClientDavInterface dav, ProcessingInterface processor, ProcessingInformation pi, java.util.List<de.bsvrz.sys.funclib.losb.util.Tuple<java.lang.Long,java.lang.Long>> periods, int startPeriodIndex, java.lang.String scriptName, de.bsvrz.dav.daf.accessControl.UserInfo userInfo) throws de.bsvrz.sys.funclib.losb.exceptions.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!startPeriodIndex
- StartPeriodIndexscriptName
- Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.userInfo
-- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Kommunikation mit der Konfiguration.
-
-
Method Detail
-
init
public void init() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
Erzeugt zu jedem Element ein Objekt zum TypRealOnlineElement
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, undProcessingBuffer.abort()
aufgerufen.- Specified by:
init
in classProcessingBuffer
- Throws:
de.bsvrz.sys.funclib.losb.exceptions.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(java.util.List<BaseDataSet> baseData)
Online Daten werden nicht aggregiert. Daher liefert diese Methode immertrue
zurück.- Specified by:
applyAggregations
in classProcessingBuffer
- Parameters:
baseData
- Werte des Ausgangsdatensatz. Einträge können von der Methode geändert werden.- Returns:
- Immer
true
- See Also:
ProcessingBuffer.applyAggregations(List)
-
hasData
public boolean hasData()
Description copied from class:ProcessingBuffer
Zeigt an ob Daten abgeholt werden können.- Specified by:
hasData
in classProcessingBuffer
- Returns:
true
falls Daten mittelsProcessingBuffer.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 classProcessingBuffer
- 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 classProcessingBuffer
- 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 classProcessingBuffer
- Returns:
true
fallsListe
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 classProcessingBuffer
- 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.- Returns:
- Zeit
-
processNewData
protected void processNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.- Specified by:
processNewData
in classProcessingBuffer
- Parameters:
elements
- Liste aller Datenlieferanten.winners
- Rückgabe: Liste der Datensätze mit minimalem, nicht aufgefüllten Datenzeitstempel. (Es sollte eine leere ArrayList übergeben werden)- Throws:
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Aufbereitung.java.lang.InterruptedException
- Aufbereitung wurde unterbrochen.- See Also:
ProcessingBuffer.processNewData(ValueProvider[], ArrayList)
-
-