de.inovat.kex.bast.common
Class ResultDataProvider

java.lang.Object
  extended by de.inovat.kex.bast.common.ResultDataProvider

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.

Die Reihenfolge im an den/die Channel übergebenen DataResult[] entspricht der Reihenfolge der Methodenaufrufe 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).

Version:
$Id: ResultDataProvider.java 442 2008-11-10 06:59:32Z Schawaller $
Author:
LOGOS GmbH Rostock (www.logos-ib.de), Ralf Trier

Constructor Summary
ResultDataProvider()
           
 
Method Summary
 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 processDataOld()
          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 setAchslastExportEF1(boolean achslastExportEF1)
           
 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()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ResultDataProvider

public ResultDataProvider()
Method Detail

addChannel

public void addChannel(ResultDataChannel dataChannel)
                throws ChannelException
meldet einen Channel an.

Parameters:
dataChannel - ResultDataChannel
Throws:
ChannelException

addDataCombination

public 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. Die Daten der Kombination werden entsprechend der Reihenfolge in der Liste zum ResultData[] zusammengefasst und an die Channels übergeben.

Parameters:
so - SystemObject
dataDescription - DataDescription

calculateTotalPeriodInMinutes

public 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.

Parameters:
calPeriodStart -
calPeriodEnd -
Returns:
der insgesamt zu bearbeitende Zeitraum.

calculateTotalPeriodInMinutes

public 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.

Parameters:
calPeriodStart -
periodLengthUnit -
periodLength -
Returns:
der insgesamt zu bearbeitende Zeitraum.

checkSequence

public void checkSequence(java.io.PrintStream out)
ermöglicht das Prüfen der Zeitpunkt, die sich aus der Periode und Schrittweise ergeben.

Parameters:
out - PrintStream

clearChannels

public void clearChannels()
löscht alle Channel.


clearDataCombinations

public void clearDataCombinations()
löscht alle DatenKombinationen.


getProgressedPeriodInMinutes

public int getProgressedPeriodInMinutes()
gibt den bereits bearbeiteten Zeitraum in Minuten zurück, um ein Mass für den Fortschritt zu haben.

Returns:
der insgesamt zu bearbeitende Zeitraum.

getTimeUnit

public static final java.lang.String getTimeUnit(int unit)

interrupt

public void interrupt()

processData

public void processData()
                 throws ChannelException,
                        DataProviderException
für alle Zeitpunkte werden die Daten der Kombinationen aus SystemObject und DataDescription aus dem Archiv gelesen und an die die angemeldeten Channels übergeben.

Throws:
DataProviderException
ChannelException

processDataOld

public void processDataOld()
                    throws ChannelException,
                           DataProviderException
für alle Zeitpunkte werden die Daten der Kombinationen aus SystemObject und DataDescription aus dem Archiv gelesen und an die die angemeldeten Channels übergeben.

Throws:
DataProviderException
ChannelException

setAchslastExportEF1

public void setAchslastExportEF1(boolean achslastExportEF1)

setIncrement

public void setIncrement(int incrementValue,
                         int incrementUnit)
setzt die Schrittweite zur Berechnung der Zeitpunkte. Der erste Zeitpunkt ist gleich dem Anfangszeitpunktes des Zeitraumes.

Parameters:
incrementValue - Wert der Schrittweite
incrementUnit - Einhet der Schrittweite

setPeriod

public void setPeriod(java.util.Calendar periodStart,
                      int periodLength,
                      int unit)
setzt den Zeitraum für den die Zeitpunkte erzeugt werden. Der erste Zeitpunkt ist gleich dem Anfangszeitpunkt.

Parameters:
periodStart - Anfang der Zeitraumes
periodLength - Wert der Länge der Zeitraumes.
unit - Einheit der Zeitrauml&auuml;nge

setReadIntervallLength

public void setReadIntervallLength(int readIntervallLength)

setzt die ReadIntervallLength. (ReadIntervallLength * IncrementUnit) ergibt die Zeitspanne, für die Daten vom Archiv geholt werden.

Parameters:
readIntervallLength - int

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object