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 booleanapplyAggregations(java.util.List<BaseDataSet> baseData)Online Daten werden nicht aggregiert.protected longgetMillisToEndOfInterval()Berechnet die Zeit bis zum Ende des nächsten Intervalls.longgetStartTime()Gibt dem Zeitpunkt zurück, an dem der Online ProcessingBuffer mit dem Sammeln der Daten begonnen hat.booleanhasData()Zeigt an ob Daten abgeholt werden können.voidinit()Erzeugt zu jedem Element ein Objekt zum TypRealOnlineElementund startet den Thread.booleanisDone()Zeigt ob der Buffer noch weitere Daten liefern wird.protected booleanisDoneCollecting()Überprüft, ob das Ende der zu überprüfenden Zeitbereiche erreicht ist und alle Daten übertragen wurden.protected booleanisListAggregation()Liefert immer false zurück.protected voidprocessNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners)XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.voidstoreAggregatedData(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.FailureExceptioninit()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.FailureExceptionErzeugt zu jedem Element ein Objekt zum TypRealOnlineElementund 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:
initin 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 immertruezurück.- Specified by:
applyAggregationsin 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:ProcessingBufferZeigt an ob Daten abgeholt werden können.- Specified by:
hasDatain classProcessingBuffer- Returns:
truefalls 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:
isDoneCollectingin classProcessingBuffer- Returns:
truefalls alle Daten abgefragt wurden.- See Also:
ProcessingBuffer.isDoneCollecting()
-
isDone
public boolean isDone()
Description copied from class:ProcessingBufferZeigt ob der Buffer noch weitere Daten liefern wird.- Specified by:
isDonein classProcessingBuffer- Returns:
truefalls noch weitere Daten zu erwarten sind.- See Also:
ProcessingBuffer.isDone()
-
isListAggregation
protected boolean isListAggregation()
Liefert immer false zurück.- Specified by:
isListAggregationin classProcessingBuffer- Returns:
truefallsListeeine 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:
storeAggregatedDatain 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:
processNewDatain 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)
-
-