public class ArchiveBuffer extends ProcessingBuffer
MAX_THRESHOLD
) erreicht, so stellt der Archivbuffer die arbeit ein, bis sich der Puffer wieder fast vollständig
(MIN_THRESHOLD
) geleert hat.Modifier and Type | Field and Description |
---|---|
static int |
MAX_THRESHOLD
Anzahl Ausgangsdatensätze, die im Ausgangspuffer liegen.
|
static int |
MIN_THRESHOLD
Anzahl Ausgangsdatensätze, die mindestens im Ausgangspuffer liegen sollten.
|
static de.bsvrz.dav.daf.main.archive.ArchiveQueryPriority |
PRIORITY
Anfragepriorität an das Archivsystem.
|
_buffer, _bufferResult, _connection, _dataSetBuilder, _debug, _done, _periods, _processingInformation, _realElements, _tempElements, INITIAL_RINGBUFFER_SIZE
Constructor and Description |
---|
ArchiveBuffer(de.bsvrz.dav.daf.main.ClientDavInterface dav,
ProcessingInterface processor,
de.bsvrz.dav.daf.main.config.ConfigurationObject configAuth,
ProcessingInformation pi,
java.util.List<de.bsvrz.sys.funclib.losb.util.Tuple<java.lang.Long,java.lang.Long>> periods,
java.lang.String scriptName)
Startet den Online-ProcessingBuffer.
|
Modifier and Type | Method and Description |
---|---|
boolean |
applyAggregations(java.util.List<BaseDataSet> baseData)
Führt die Aggregierungen durch.
|
int[] |
getLinkedAttributes()
Zeigt an welche Attribute durch die Aggregation
spalte zusammengefasst werden. |
boolean |
hasData()
Zeigt an ob Daten abgeholt werden können.
|
void |
init()
Sendet erste Anfragen an das Archivsystem.
|
boolean |
isDone()
Zeigt ob der Buffer noch weitere Daten liefern wird.
|
protected boolean |
isDoneCollecting()
Überprüft ob die Datensammlung abgeschlossen ist.
|
protected boolean |
isListAggregation()
Werden nicht aggregierte Daten versendet?
|
protected void |
processNewData(ValueProvider[] elements,
java.util.ArrayList<ValueProvider> winners)
Bereitet aus den Ergebnisdatensätzen die Ergebnisdaten auf.
|
protected void |
requestData()
Stellt Archivanfragen für alle realen Elemente mit den momentan engetragenen Werten von
_archiveUser |
void |
storeAggregatedData(byte status)
Falls Aggregationsdatensätze vorhanden sind, werden sie in den Ausgangspuffer gelegt.
|
IntermediateDataSet |
take()
Liefert einen Ausgangsdatensatz zurück.
|
abort, applyPostFilter, getInsertEmpty, getProtocolType, getResult, getScriptName, getTimeStampOrigin, getWinners, isAbort, isAggregate, nextInterval, notifyProcessor, run, setAggregate, setDone, setTempAttributes, size, storeDataSet
activeCount, checkAccess, clone, 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
public static final de.bsvrz.dav.daf.main.archive.ArchiveQueryPriority PRIORITY
ArchiveRequestManager.request(de.bsvrz.dav.daf.main.archive.ArchiveQueryPriority,de.bsvrz.dav.daf.main.archive.ArchiveDataSpecification)
public static int MAX_THRESHOLD
public static int MIN_THRESHOLD
public ArchiveBuffer(de.bsvrz.dav.daf.main.ClientDavInterface dav, ProcessingInterface processor, de.bsvrz.dav.daf.main.config.ConfigurationObject configAuth, ProcessingInformation pi, java.util.List<de.bsvrz.sys.funclib.losb.util.Tuple<java.lang.Long,java.lang.Long>> periods, java.lang.String scriptName) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
init()
sollte unverzüglich nach
Erzeugen des Objekts aufgerufen werden.dav
- Verbindung zum Datenverteilerprocessor
- Objekt das die Datenaufbereitung durchführt. Wird jedes Mal benachrichtigt, wenn ein Ausgangsdatensatz vorliegt.configAuth
- Konfigurationsverantwortlicher, dessen Archivsystem verwendet wird.pi
- Informationen zur Datenaufbereitung. Die Zeitbereiche müssen bereits sortiert und zusammengefasst sein!periods
- Zeitbereiche, in denen der Archivbuffer Daten sammeln soll. Inhalt wird geändert!scriptName
- Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Kommunikation mit der Konfigurationpublic void init() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
ProcessingBuffer.abort()
aufgerufen.init
in class ProcessingBuffer
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Archivanfrage.java.lang.InterruptedException
- Warten auf Archivantwort wurde unterbrochen.ProcessingBuffer.init()
public boolean applyAggregations(java.util.List<BaseDataSet> baseData)
ProcessingBuffer
ProcessingBuffer.isAggregate()
true
liefert.applyAggregations
in class ProcessingBuffer
baseData
- Werte des Ausgangsdatensatz. Einträge können von der Methode geändert werden.true
: Der Ausgangsdatensatz soll nachgefiltert und ausgegeben werden.ProcessingBuffer.applyAggregations(List)
protected void requestData() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
_archiveUser
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Archivanfrage.java.lang.InterruptedException
- Warten auf Antwortdatensatz wurde unterbrochen.protected boolean isDoneCollecting() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
isDoneCollecting
in class ProcessingBuffer
True
falls die Datensammlung abgeschlossen ist. Überprüft zudem, wieviele Elemente sich in der Warteschlange befinden. Ist die
Warteschlange bereits über MAX_THRESHOLD
gefüllt, so wird der ArchivBuffer angehalten, bis die Queue wieder fast vollständig (MIN_THRESHOLD
) geelert ist.de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Archivanfrage. Es wird eine Archivanfrage gestellt, wenn Daten für ein weiteres Intervall angefragt werden.java.lang.InterruptedException
- Warten auf Antwortdatensatz wurde unterbrochen.ProcessingBuffer.isDoneCollecting()
public boolean isDone()
ProcessingBuffer
isDone
in class ProcessingBuffer
true
falls noch weitere Daten zu erwarten sind.ProcessingBuffer.isDone()
public boolean hasData()
hasData
in class ProcessingBuffer
true
falls Daten mittels take()
abgeholt werden können.public IntermediateDataSet take() throws java.lang.InterruptedException
ProcessingBuffer
take
in class ProcessingBuffer
java.lang.InterruptedException
- Warten auf Ausgangsdatensatz wurde unterbrochen.ProcessingBuffer.take()
protected boolean isListAggregation()
ProcessingBuffer
isListAggregation
in class ProcessingBuffer
true
falls Liste
eine der ausgewählten die Aggregationsanwendungen ist.ProcessingBuffer.isListAggregation()
public int[] getLinkedAttributes()
spalte
zusammengefasst werden. Zusammengehörige Spalten werden duch die gleichen Nummern
gekennzeichnet.null
falls die spalten
Aggregation nicht verwendet wird.public void storeAggregatedData(byte status)
ProcessingBuffer
storeAggregatedData
in class ProcessingBuffer
status
- Status, den der Aggregationsdatensatz erhalten soll.ProcessingBuffer.storeAggregatedData(byte)
protected void processNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
ProcessingBuffer
processNewData
in class ProcessingBuffer
elements
- Liste aller Datenlieferanten.winners
- Rückgabe: Liste der Datensätze mit minimalem, nicht aufgefüllten Datenzeitstempel. (Es sollte eine leere ArrayList übergeben werden)de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Aufbereitung.java.lang.InterruptedException
- Aufbereitung wurde unterbrochen.ProcessingBuffer.processNewData(ValueProvider[], ArrayList)