public class ResultDataProvider extends 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(Calendar calPeriodStart,
Calendar calPeriodEnd)
berechnet den gesamten zu bearbeitenden Zeitraum in Minuten, um ein Mass
für den Fortschritt zu haben.
|
static int |
calculateTotalPeriodInMinutes(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(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 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(Calendar periodStart,
int periodLength,
int unit)
setzt den Zeitraum für den die Zeitpunkte erzeugt werden.
|
void |
setReadIntervallLength(int readIntervallLength)
setzt die ReadIntervallLength.
|
String |
toString() |
public void setPeriod(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(Calendar calPeriodStart, int periodLengthUnit, int periodLength)
public static int calculateTotalPeriodInMinutes(Calendar calPeriodStart, Calendar calPeriodEnd)
public int getProgressedPeriodInMinutes()
public void addChannel(ResultDataChannel dataChannel) throws ChannelException
dataChannel
- ResultDataChannelChannelException
public 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
ChannelException
DataProviderException
public void interrupt()
public void checkSequence(PrintStream out)
out
- PrintStreampublic void setReadIntervallLength(int readIntervallLength)
setzt die ReadIntervallLength. (ReadIntervallLength * IncrementUnit) ergibt die Zeitspanne, für die Daten vom Archiv geholt werden.
readIntervallLength
- intpublic static final String getTimeUnit(int unit)
Copyright © 2017 BitCtrl Systems GmbH. All rights reserved.