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, storeDataSetactiveCount, 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, yieldpublic 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 ProcessingBufferFailureException - Fehler bei der Archivanfrage.java.lang.InterruptedException - Warten auf Archivantwort wurde unterbrochen.ProcessingBuffer.init()public boolean applyAggregations(java.util.List<BaseDataSet> baseData)
ProcessingBufferProcessingBuffer.isAggregate() true liefert.applyAggregations in class ProcessingBufferbaseData - 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.Listprivate 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
_archiveUserFailureException - Fehler bei der Archivanfrage.java.lang.InterruptedException - Warten auf Antwortdatensatz wurde unterbrochen.protected boolean isDoneCollecting()
throws FailureException,
java.lang.InterruptedException
isDoneCollecting in class ProcessingBufferTrue 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()
ProcessingBufferisDone in class ProcessingBuffertrue falls noch weitere Daten zu erwarten sind.ProcessingBuffer.isDone()public boolean hasData()
hasData in class ProcessingBuffertrue falls Daten mittels take() abgeholt werden können.public IntermediateDataSet take() throws java.lang.InterruptedException
ProcessingBuffertake in class ProcessingBufferjava.lang.InterruptedException - Warten auf Ausgangsdatensatz wurde unterbrochen.ProcessingBuffer.take()protected boolean isListAggregation()
ProcessingBufferisListAggregation in class ProcessingBuffertrue 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)
ProcessingBufferstoreAggregatedData in class ProcessingBufferstatus - Status, den der Aggregationsdatensatz erhalten soll.ProcessingBuffer.storeAggregatedData(byte)protected void processNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners) throws FailureException, java.lang.InterruptedException
ProcessingBufferprocessNewData in class ProcessingBufferelements - 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