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 |
---|---|
private Aggregator |
_aggregator
Objekt das die Aggregierung durchführt
|
private ArchiveUser |
_archiveUser
Parameter der Archivanfrage
|
private int |
_currentDisplayPeriod
Index des aktuellen Zeitintervalls.
|
private int |
_currentPeriod
Index des aktuellen Zeitintervalls.
|
private boolean |
_endOfInterval
true falls die Intervall-Aggregationsdatensätze erstellt werden müssen. |
private boolean |
_endOfProtocol
true falls die Gesamt-Aggregationsdatensätze erstellt werden müssen. |
private boolean |
doneCollecting
Zeigt an ob die Datensammlung abgeschlossen ist.
|
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 ArchiveQueryPriority |
PRIORITY
Anfragepriorität an das Archivsystem.
|
_buffer, _bufferResult, _connection, _dataSetBuilder, _debug, _done, _periods, _processingInformation, _realElements, _tempElements, INITIAL_RINGBUFFER_SIZE
Constructor and Description |
---|
ArchiveBuffer(ClientDavInterface dav,
ProcessingInterface processor,
ConfigurationObject configAuth,
ProcessingInformation pi,
java.util.List<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.
|
private void |
applyPostFilterForAggregatedData(IntermediateDataSet ids)
Wendet den Nachfilter an und speichert den Ausgangsdatensatz im Puffer ab.
|
private ArchiveUser |
createArchiveUser(SystemObject configAuth)
Erzeugt eine Verbindung zum Archivsystem die zum Absenden von Daten mit Standardparametern verwendet werden kann.Die Standardparameter sind:
- Sortierung der nachgelieferten Daten nach Datenzeit - Delta oder Standardanfrage je nach ProcessingInformation.getProtocolType() |
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 |
private boolean |
requestNextInterval()
Fragt Daten für das nächste Intervall an.
|
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 ArchiveQueryPriority PRIORITY
public static int MAX_THRESHOLD
public static int MIN_THRESHOLD
private boolean doneCollecting
private ArchiveUser _archiveUser
private Aggregator _aggregator
private int _currentPeriod
private int _currentDisplayPeriod
private boolean _endOfInterval
true
falls die Intervall-Aggregationsdatensätze erstellt werden müssen. Dies ist nach jedem Intervall der Fall.private boolean _endOfProtocol
true
falls die Gesamt-Aggregationsdatensätze erstellt werden müssen. Dies ist am Ende der Protokollerstellung der Fall.public ArchiveBuffer(ClientDavInterface dav, ProcessingInterface processor, ConfigurationObject configAuth, ProcessingInformation pi, java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods, java.lang.String scriptName) throws 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.FailureException
- Fehler bei der Kommunikation mit der Konfigurationprivate ArchiveUser createArchiveUser(SystemObject configAuth)
ProcessingInformation.getProtocolType()
configAuth
- Konfigurationsverantwortlicher, dessen Archivsystem zu verwenen ist.public void init() throws FailureException, java.lang.InterruptedException
ProcessingBuffer.abort()
aufgerufen.init
in class ProcessingBuffer
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.de.bsvrz.pua.prot.processing.ProcessingBuffer#applyAggregations(java.util.List
private boolean requestNextInterval() throws FailureException, java.lang.InterruptedException
true
wenn Daten für das nächste Intervall angefragt werden. false
sonst, z.B. weil keine weiteren Zeitintervalle
existierenFailureException
- Fehler bei der Archivanfragejava.lang.InterruptedException
- Warten auf Antwortdatensatz wurde unterbrochen.private void applyPostFilterForAggregatedData(IntermediateDataSet ids)
null
istids
- Ausgangsdatensatz. Darf null
sein: Dann wird der Datensatz nicht gespeichert.protected void requestData() throws FailureException, java.lang.InterruptedException
_archiveUser
FailureException
- Fehler bei der Archivanfrage.java.lang.InterruptedException
- Warten auf Antwortdatensatz wurde unterbrochen.protected boolean isDoneCollecting() throws 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.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 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)FailureException
- Fehler bei der Aufbereitung.java.lang.InterruptedException
- Aufbereitung wurde unterbrochen.de.bsvrz.pua.prot.processing.ProcessingBuffer#processNewData(de.bsvrz.pua.prot.processing.ValueProvider[],java.util.ArrayList