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

Field Summary
(package private)  int __ArsType
           
(package private)  java.util.ArrayList<ResultDataChannel> _DataChannelList
           
(package private)  java.util.ArrayList<de.bsvrz.dav.daf.main.DataDescription> _DataDescriptionList
           
(package private)  int _IncrementUnit
           
(package private)  int _IncrementValue
           
private  boolean _isAchslastExportEF1
           
(package private)  boolean _IsNotInterrupted
           
(package private)  java.util.ArrayList<de.bsvrz.sys.funclib.dataIdentificationSettings.DataIdentification> _ListDataIdentification
           
(package private)  java.util.ArrayList<de.bsvrz.dav.daf.main.config.SystemObject> _ListSystemObject
           
(package private)  int _PeriodLength
           
(package private)  int _PeriodLengthUnit
           
(package private)  java.util.Calendar _PeriodStart
           
(package private)  java.util.Calendar _ProcessingCalendar
          wird zwischendurch mal auf den gerade bearbeiteten Zeitpunkt gesetzt um einen Fortschritt zu ermitteln.
(package private)  int _ReadIntervallLength
           
private static int ArsType_LOGOS
           
private static int ArsType_MARZ
           
private static int ArsType_UNASSIGNED
           
private static java.lang.String CRLF
           
private static java.text.SimpleDateFormat DATE_FORMAT
           
private static de.bsvrz.sys.funclib.debug.Debug debug
          DebugLogger fuer Debug-Ausgaben.
 
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)
           
private  de.bsvrz.dav.daf.main.Dataset getValidResultData(de.bsvrz.dav.daf.main.Dataset[] rsArray, java.util.Calendar calendar)
           
 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
 

Field Detail

ArsType_LOGOS

private static int ArsType_LOGOS

ArsType_MARZ

private static int ArsType_MARZ

ArsType_UNASSIGNED

private static int ArsType_UNASSIGNED

debug

private static de.bsvrz.sys.funclib.debug.Debug debug
DebugLogger fuer Debug-Ausgaben.


DATE_FORMAT

private static java.text.SimpleDateFormat DATE_FORMAT

CRLF

private static final java.lang.String CRLF

_IncrementValue

int _IncrementValue

_isAchslastExportEF1

private boolean _isAchslastExportEF1

_ListSystemObject

java.util.ArrayList<de.bsvrz.dav.daf.main.config.SystemObject> _ListSystemObject

_ListDataIdentification

java.util.ArrayList<de.bsvrz.sys.funclib.dataIdentificationSettings.DataIdentification> _ListDataIdentification

_DataDescriptionList

java.util.ArrayList<de.bsvrz.dav.daf.main.DataDescription> _DataDescriptionList

__ArsType

int __ArsType

_PeriodLength

int _PeriodLength

_ProcessingCalendar

java.util.Calendar _ProcessingCalendar
wird zwischendurch mal auf den gerade bearbeiteten Zeitpunkt gesetzt um einen Fortschritt zu ermitteln.


_IsNotInterrupted

boolean _IsNotInterrupted

_ReadIntervallLength

int _ReadIntervallLength

_DataChannelList

java.util.ArrayList<ResultDataChannel> _DataChannelList

_IncrementUnit

int _IncrementUnit

_PeriodLengthUnit

int _PeriodLengthUnit

_PeriodStart

java.util.Calendar _PeriodStart
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)

getValidResultData

private de.bsvrz.dav.daf.main.Dataset getValidResultData(de.bsvrz.dav.daf.main.Dataset[] rsArray,
                                                         java.util.Calendar calendar)

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