public abstract class ProcessingBuffer
extends java.lang.Thread
Thread.start()
starten. Wenn Datensätze
eingehen, wird die Datenaufbereitung benachrichtigt. Ist die Datensammlung abgeschlossen, wird die Datenaufbereitung ein letzes Mal benachrichtigt.Modifier and Type | Field and Description |
---|---|
private boolean |
_abort
Zeigt ob die Datenaufbereitung abgebrochen wurde.
|
private boolean |
_aggregate
Zeigt an ob aggregiert werden soll.
|
protected RingBuffer<IntermediateDataSet> |
_buffer
Ringpuffer in dem die Ausgangsdatensätze abgelegt werden.
|
protected ProtocolRequestResult |
_bufferResult
Informationen über das Ergebnis der Datensammlung
|
protected ClientDavInterface |
_connection
Verbindung zum Dateverteiler
|
protected IMDSBuilder |
_dataSetBuilder
Objekt dass die Ausgangsdatensätze erzeugt.
|
protected Debug |
_debug
Debug Ausgaben.
|
protected boolean |
_done
Zeigt an ob alle Daten gesammelt und abgerufen wurden.
|
private boolean |
_insertEmpty
Soll ein leerer Datensatz eingefügt werden?
|
protected java.util.List<Tuple<java.lang.Long,java.lang.Long>> |
_periods
Abzufragende Zeitbereiche.
|
protected ProcessingInformation |
_processingInformation
Informationen zur Datenaufbereitung
|
private ProcessingInterface |
_processor
Objekt das beim Eintreffen von Daten benachrichtigt werden soll.
|
protected java.util.Hashtable<RealElement,ValueProvider> |
_realElements
Zuordnung: Reale Elemente -> Wertebeschaffer
|
private java.lang.String |
_scriptName |
private int |
_startPeriodIndex |
protected java.util.Hashtable<TempAttributeDescription,TempAttribut> |
_tempElements
Zuordnung: Temporäre Attribute -> Wertebeschaffer für temporäre Attribute
|
protected static int |
INITIAL_RINGBUFFER_SIZE
Initialisierung Ringpuffer
|
Constructor and Description |
---|
ProcessingBuffer(ClientDavInterface connection,
ProcessingInterface processor,
ProcessingInformation processingInformation,
java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods,
int startPeriodIndex,
java.lang.String scriptName)
Startet den Buffer.
|
Modifier and Type | Method and Description |
---|---|
void |
abort()
Beendet die Datensammlung.
|
abstract boolean |
applyAggregations(java.util.List<BaseDataSet> baseData)
Führt die Aggregierungen durch.
|
IntermediateDataSet |
applyPostFilter(java.util.List<BaseDataSet> baseData,
byte status,
long winnerTimeStamp,
int currentInterval)
Ruft den Nachfilter für nicht-aggregierte Daten auf.
|
protected boolean |
getInsertEmpty()
Zeigt an ob ein leerer Datensatz eingefügt werden soll.
|
ProtocolType |
getProtocolType()
Zeigt an, ob ein Änderungsprotokoll erstellt wird.
|
ProtocolRequestResult |
getResult()
Zeigt ob die Datensammlung erfolgreich war.
|
java.lang.String |
getScriptName()
Liefert die Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.
|
RealAttributeDescription |
getTimeStampOrigin(TempAttributeDescription tad)
Liefert das Attribut zurück, das den Zeitstempel des temporären Attributsfestlegt.
|
protected int |
getWinners(ValueProvider[] elements,
java.util.List<ValueProvider> winners)
Legt die Elemente mit dem kleinsten Datenzeitstempel in einer Liste ab.
|
abstract boolean |
hasData()
Zeigt an ob Daten abgeholt werden können.
|
abstract void |
init()
Erzeugt die Abbildungen: Elemente -> Wertebeschaffer.
|
boolean |
isAbort() |
protected boolean |
isAggregate() |
abstract boolean |
isDone()
Zeigt ob der Buffer noch weitere Daten liefern wird.
|
protected abstract boolean |
isDoneCollecting()
Zeigt an ob mit das Abfragen aller Daten abgeschlossen wurde.
|
protected abstract boolean |
isListAggregation()
Werden nicht aggregierte Daten versendet?
|
protected void |
nextInterval(long endOfInterval)
Ist direkt nachdem alle Daten einer Datenart eines Intevalls gesammelt wurden aufzurufen.
|
protected void |
notifyProcessor()
Benachrichtigt das Objekt das die Datenaufbereitung durchführt.
|
protected abstract void |
processNewData(ValueProvider[] elements,
java.util.ArrayList<ValueProvider> winners)
Bereitet aus den Ergebnisdatensätzen die Ergebnisdaten auf.
|
void |
run()
Erstellt die Ausgangsdatensätze.
|
protected void |
setAggregate(boolean aggregate) |
protected void |
setDone()
Wird aufgerufen wenn die Datensammlung beendet werden soll ist oder abgebrochen wird.
|
protected void |
setTempAttributes()
Legt einen Eintrag für jedes temporären Attribut in
_tempElements an. |
private RealAttributeDescription |
setTimeStampOrigin(TempAttributeDescription tad,
SystemObject mainObject)
Speichert eine Referenz auf das Objekt, dessen Zeitstempel von diesem temporären Attribut verwendet werden soll.
|
int |
size() |
abstract void |
storeAggregatedData(byte status)
Falls Aggregationsdatensätze vorhanden sind, werden sie in den Ausgangspuffer gelegt.
|
void |
storeDataSet(IntermediateDataSet intermediateData)
Speichert den Ausgangsdatensatz im Ausgangspuffer
_buffer . |
IntermediateDataSet |
take()
Liefert einen Ausgangsdatensatz zurück.
|
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
protected static final int INITIAL_RINGBUFFER_SIZE
private boolean _insertEmpty
getWinners(ValueProvider[],List)
gesetzt, und in run()
verwendet. Der Wert in dieser
Varoable wird laufen überschrieben, daher muss sie innerhalb der Schleife in run()
gesichert werden.protected ProcessingInformation _processingInformation
private ProcessingInterface _processor
protected ProtocolRequestResult _bufferResult
protected ClientDavInterface _connection
protected final Debug _debug
protected RingBuffer<IntermediateDataSet> _buffer
protected java.util.Hashtable<RealElement,ValueProvider> _realElements
protected java.util.Hashtable<TempAttributeDescription,TempAttribut> _tempElements
protected final java.util.List<Tuple<java.lang.Long,java.lang.Long>> _periods
private boolean _aggregate
protected boolean _done
private boolean _abort
protected IMDSBuilder _dataSetBuilder
run()
initialisiert.private final int _startPeriodIndex
private final java.lang.String _scriptName
public ProcessingBuffer(ClientDavInterface connection, ProcessingInterface processor, ProcessingInformation processingInformation, java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods, int startPeriodIndex, java.lang.String scriptName) throws FailureException
init()
sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.connection
- Verbindung zum Datenverteilerprocessor
- Objekt das die Datenaufbereitung durchführt. Wird jedes Mal benachrichtigt, wenn ein Ausgangsdatensatz vorliegt.processingInformation
- Informationen zur Datenaufbereitung.periods
- Zeitbereiche, in denen der Buffer Daten sammeln soll. Die Zeitbereiche müssen bereits sortiert und zusammengefasst sein! Die Liste wird
nicht geändert.startPeriodIndex
- scriptName
- Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.FailureException
- Fehler bei der Kommunikation mit der Konfigurationpublic abstract void init() throws FailureException, java.lang.InterruptedException
_realElements
und _tempElements
. Die Objekte, die in diesen Hashtables als 'Values' abgelegt werden, erledigen das Abfragen der Werte
selbständig. Sollte sofort nach Erzeugen des Objektes Aufgerufen werden.FailureException
- Fehler.java.lang.InterruptedException
- Thread wird abgebrochen.protected void setTempAttributes()
_tempElements
an.private RealAttributeDescription setTimeStampOrigin(TempAttributeDescription tad, SystemObject mainObject)
_tempElements
ein.tad
- Temporäres Objekt, dessen Zeitstempel gewonnen werden soll.mainObject
- Hauptobjekt des Protokolls.public ProtocolRequestResult getResult()
protected void notifyProcessor()
public IntermediateDataSet take() throws java.lang.InterruptedException
java.lang.InterruptedException
- Warten auf Ausgangsdatensatz wurde unterbrochen.public void run()
getResult()
abgefragt werden.run
in interface java.lang.Runnable
run
in class java.lang.Thread
protected abstract void processNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners) throws FailureException, java.lang.InterruptedException
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.protected abstract boolean isListAggregation()
true
falls Liste
eine der ausgewählten die Aggregationsanwendungen ist.public void storeDataSet(IntermediateDataSet intermediateData)
_buffer
. Benachrichtigt den Datenaufbereiter _processor
falls notwendig.intermediateData
- Ausgangsdatensatz.public abstract boolean applyAggregations(java.util.List<BaseDataSet> baseData)
isAggregate()
true
liefert.baseData
- Werte des Ausgangsdatensatz. Einträge können von der Methode geändert werden.true
: Der Ausgangsdatensatz soll nachgefiltert und ausgegeben werden.public abstract void storeAggregatedData(byte status)
status
- Status, den der Aggregationsdatensatz erhalten soll.storeDataSet(IntermediateDataSet)
public IntermediateDataSet applyPostFilter(java.util.List<BaseDataSet> baseData, byte status, long winnerTimeStamp, int currentInterval)
baseData
- Elemente des Ausgangsdatensatz.status
- Status, der dem Ausgangsdatensatz zugeordnet werden soll.winnerTimeStamp
- Minimaler, nicht aufgefüllter Zeitstempel.currentInterval
- protected int getWinners(ValueProvider[] elements, java.util.List<ValueProvider> winners)
elements
- Feld mit realen Elementen, deren Datenzeitstempel überprüft wird.winners
- Liste in der die Elemente mit minimalem Datenzeitstempel abgelegt werden. Die Liste wird vorher geleert.public int size()
protected abstract boolean isDoneCollecting() throws FailureException, java.lang.InterruptedException
true
zurückgegeben, sobald alle Daten abgefragt wurden. isDone()
muss jedoch noch nicht false
zurückliefern! Wird von run()
jedesmal aufgerufen, bevor ein neuer Ausgangsdatensatz erstellt
wird.true
falls alle Daten abgefragt wurden.FailureException
- Fehler bei der Überprüfungjava.lang.InterruptedException
- Warten auf Antwortdatensatz wurde unterbrochen.public abstract boolean hasData()
true
falls Daten mittels take()
abgeholt werden können.protected void setDone()
_done
true
zurückliefern.public abstract boolean isDone()
true
falls noch weitere Daten zu erwarten sind.public void abort()
ValueProvider.abort()
für jedes reale Element auf.protected boolean isAggregate()
protected void setAggregate(boolean aggregate)
aggregate
- The aggregate to set.protected void nextInterval(long endOfInterval)
endOfInterval
- Endzeitpunkt des Intervalls, das gerade beendet wurde.IMDSBuilder.nextInterval(long)
public boolean isAbort()
true
falls die Datenaufbereitung abgebrochen wurde.public RealAttributeDescription getTimeStampOrigin(TempAttributeDescription tad)
init()
Methode
gültige Werte!tad
- Temporäres Attributnull
wenn noch kein reales Attribut für das übergebene
temporäre Attribut eingetragen wurde.public ProtocolType getProtocolType()
true
falls ein Änderungsprotokoll erstellt wird. false
, falls ein Zustandsprotokoll erstellt wird.protected boolean getInsertEmpty()
true
falls ein leerer Datensatz eingefügt werden soll.public java.lang.String getScriptName()