public class ResultDataProvider
extends java.lang.Object
Klasse zum Lesen von Daten für eine Reihe von Zeitpunkten innerhalb
eines Zeitraumes aus dem Archiv und die weitere Verarbeitung durch einen oder
mehrere ResultDataChannel
(s).
In der Methode processData()
wird für alle Zeitpunkte die
aktuell gütigen Daten der Kombinationen SystemObject/DataDescription
eines Zeitpunktes als ResultData[] an den oder die ResultDataChannel(s)
übergeben.
Die zu verarbeitenden Kombinationen aus SystemObject und DataDescription
werden durch die Methode
addDataKombination
festgelegt.
addDataCombination(SystemObject so, DataDescription dataDescription)
.
Die Zeitpunkte wird bestimmt durch: 1. Zeitraum (Period) - Periodenanfang, Periodenlänge, Einheit der Periodenlänge 2. Schrittweite (Increment) - IncrementWert, IncrementEinheit
Der erste Zeitpunkt ist gleich dem Periodenanfang, der letzte ist kleiner als Periodenanfang + Periodenlänge.
Beispiel für die Berechnung der Zeitpunkte:
ResultDataProvider provider = new ResultDataProvider();
provider.setIncrement(1, Calendar.HOUR);
Calendar cal = Calendar.getInstance();
cal.set(2004, Calendar.JANUARY, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
provider.setPeriod(cal, 5, Calendar.HOUR);
provider.checkSequence(System.out);
ergibt:
01.01.2004 00:00:00.000
01.01.2004 01:00:00.000
01.01.2004 02:00:00.000
01.01.2004 03:00:00.000
01.01.2004 04:00:00.000
Die Daten werden nicht unbedingt für den gesamten zu bearbeitenen Zeitraum aus der Datenbank geholt, sondern abschnittsweise. Die Länge des Zeitbereiches, für den die Daten mit einmal aus dem Archiv gelesen wird, ergibt sich aus (ReadIntervallLength * IncrementUnit).
Constructor and Description |
---|
ResultDataProvider() |
Modifier and Type | Method and Description |
---|---|
void |
addChannel(ResultDataChannel dataChannel)
meldet einen Channel an.
|
void |
addDataCombination(de.bsvrz.dav.daf.main.config.SystemObject so,
de.bsvrz.dav.daf.main.DataDescription dataDescription)
fügt eine Kombination aus SystemObject und DataDescription zur Liste der
Kombinationen hinzu, dessen Daten verarbeitet werden soll.
|
static int |
calculateTotalPeriodInMinutes(java.util.Calendar calPeriodStart,
java.util.Calendar calPeriodEnd)
berechnet den gesamten zu bearbeitenden Zeitraum in Minuten, um ein Mass
für den Fortschritt zu haben.
|
static int |
calculateTotalPeriodInMinutes(java.util.Calendar calPeriodStart,
int periodLengthUnit,
int periodLength)
berechnet den gesamten zu bearbeitenden Zeitraum in Minuten, um ein Mass
für den Fortschritt zu haben.
|
void |
checkSequence(java.io.PrintStream out)
ermöglicht das Prüfen der Zeitpunkt, die sich aus der Periode und
Schrittweise ergeben.
|
void |
clearChannels()
löscht alle Channel.
|
void |
clearDataCombinations()
löscht alle DatenKombinationen.
|
int |
getProgressedPeriodInMinutes()
gibt den bereits bearbeiteten Zeitraum in Minuten zurück, um ein Mass
für den Fortschritt zu haben.
|
static java.lang.String |
getTimeUnit(int unit) |
void |
interrupt() |
void |
processData()
für alle Zeitpunkte werden die Daten der Kombinationen aus SystemObject
und DataDescription aus dem Archiv gelesen und an die die angemeldeten
Channels übergeben.
|
void |
setIncrement(int incrementValue,
int incrementUnit)
setzt die Schrittweite zur Berechnung der Zeitpunkte.
|
void |
setPeriod(java.util.Calendar periodStart,
int periodLength,
int unit)
setzt den Zeitraum für den die Zeitpunkte erzeugt werden.
|
void |
setReadIntervallLength(int readIntervallLength)
setzt die ReadIntervallLength.
|
java.lang.String |
toString() |
public void setPeriod(java.util.Calendar periodStart, int periodLength, int unit)
periodStart
- Anfang der ZeitraumesperiodLength
- Wert der Länge der Zeitraumes.unit
- Einheit der Zeitraumlängepublic void setIncrement(int incrementValue, int incrementUnit)
incrementValue
- Wert der SchrittweiteincrementUnit
- Einhet der Schrittweitepublic static int calculateTotalPeriodInMinutes(java.util.Calendar calPeriodStart, int periodLengthUnit, int periodLength)
calPeriodStart
- der Anfangszeitpunkt der PeriodeperiodLengthUnit
- die Einheit der LängeperiodLength
- die Längepublic static int calculateTotalPeriodInMinutes(java.util.Calendar calPeriodStart, java.util.Calendar calPeriodEnd)
calPeriodStart
- der Anfangszeitpunkt der PeriodecalPeriodEnd
- der Endzeitpunkt der Periodepublic int getProgressedPeriodInMinutes()
public void addChannel(ResultDataChannel dataChannel)
dataChannel
- ResultDataChannelpublic void clearChannels()
public void addDataCombination(de.bsvrz.dav.daf.main.config.SystemObject so, de.bsvrz.dav.daf.main.DataDescription dataDescription)
so
- SystemObjectdataDescription
- DataDescriptionpublic void clearDataCombinations()
public void processData() throws ChannelException, DataProviderException
de.bsvrz.dav.daf.main.DataNotSubscribedException
- fehlende DatenanmeldungChannelException
- Fehler beim Verarbeiten der DatenDataProviderException
- Datenexport war nicht erfolgreichpublic void interrupt()
public void checkSequence(java.io.PrintStream out)
out
- PrintStreampublic java.lang.String toString()
toString
in class java.lang.Object
public void setReadIntervallLength(int readIntervallLength)
setzt die ReadIntervallLength. (ReadIntervallLength * IncrementUnit) ergibt die Zeitspanne, für die Daten vom Archiv geholt werden.
readIntervallLength
- intpublic static final java.lang.String getTimeUnit(int unit)