de.inovat.vew.autoexport
Class AutoExport

java.lang.Object
  extended by de.inovat.vew.autoexport.AutoExport
All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface, de.bsvrz.sys.funclib.application.StandardApplication

public class AutoExport
extends java.lang.Object
implements de.bsvrz.sys.funclib.application.StandardApplication, de.bsvrz.dav.daf.main.ClientSenderInterface

Klasse, die den automatischen Export der BASt-Band Erzeugung für LZZS für die Formate V2004, V2007 und AXL durchführt.

Version:
$Revision: 780 $ / $Date: 2012-10-31 11:44:41 +0100 (Mi, 31 Okt 2012) $ / ($Author: HCK $)
Author:
inovat, innovative systeme - verkehr - tunnel - technik, Dipl.-Ing. Hans Christian Kniß (HCK)

Field Summary
private  long _bisZeitPunktAXL
           
private  long _bisZeitPunktLZZS
           
private  de.bsvrz.dav.daf.main.ClientDavInterface _dav
          Datenverteilerverbindung
private  java.lang.String _ftpPassivModus
          Legt fest, ob die FTP-Verbindung im PassivModus eingebaut werden soll.
private  java.lang.String _ftpPassivModusAufrufParameter
           
private  java.lang.String _ftpServerBenutzer
           
private  java.lang.String _ftpServerBenutzerAufrufParameter
           
private  java.lang.String _ftpServerPasswort
           
private  java.lang.String _ftpServerPasswortAufrufParameter
           
private  java.lang.String _ftpServerURL
           
private  java.lang.String _ftpServerURLAufrufParameter
           
private  boolean _isAenderungDatenstruktur
           
private  boolean _isAenderungDatenstrukturAufrufParameter
           
private  boolean _isBastBandUeberschreiben
           
private  boolean _isBastBandUeberschreibenAufrufParameter
           
private  de.bsvrz.dav.daf.main.config.DataModel _konfiguration
          Die Konfiguration des DaV.
private  java.util.List<de.bsvrz.dav.daf.main.config.SystemObject> _listeLzzsSystemObjekte
           
private  java.lang.String _listePidsAufrufParameter
           
private  java.util.List<java.lang.String> _listePidsLzzs
           
private  java.util.List<java.lang.String> _listePidsLzzsNichtVorhanden
           
private  java.lang.String _minimaleWarteZeitInStundenAufrufParameterAXL
           
private  java.lang.String _minimaleWarteZeitInStundenAufrufParameterLZZS
           
private  int _minimaleWarteZeitInStundenAXL
           
private  int _minimaleWarteZeitInStundenLZZS
           
private  java.lang.String _pidVerwaltungsObjektBastExportSteuerung
           
private  de.bsvrz.dav.daf.main.config.SystemObject _verwaltungsObjektBastExportSteuerung
           
private  long _vonZeitPunktAufrufParameterAXL
           
private  long _vonZeitPunktAufrufParameterLZZS
           
private  long _vonZeitPunktAXL
           
private  long _vonZeitPunktLZZS
           
private static de.bsvrz.sys.funclib.debug.Debug debug
          DebugLogger fuer Debug-Ausgaben.
private static long WARTEZEIT_AUF_NAECHSTEN_AUFTRAG
          WarteZeit in ms, bis die Auftragsliste erneut geprüft wird, nachdem keinerlei Aufträge mehr vorlagen *
 
Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
 
Constructor Summary
AutoExport()
           
 
Method Summary
private  java.lang.String ausgabeKonfigurationsZusammenfassung()
          Gibt Informationen zur Konfiguration aus.
private  void auswertungAufrufParameterBAStUndFTP()
           
private  void auswertungAufrufParameterListePids()
          Wertet die Aufrufparameter

-listePids

wie folgt aus:

Es werden alle Systemobjekte vom Typ typ.langZeitZählstelle ermittelt und dabei diejenigen für die weiteren Berechnungen übernommen, deren Pid in der Liste der Pids aufgeführt ist (bzw. alle, falls Aufruf mit -listePids=alle erfolgt).

private  void auswertungAufrufParameterPidVerwaltungsObjekt()
          Wertet den Aufrufparameter

-pidVerwaltungsObjekt

wie folgt aus:

Ist der Wert automatisch, so wird das Objekt mit dem Typ typ.bastExportImportSteuerung und der Pid bastBand.niDauz verwendet, sonst das Objekt mit der im Aufrufparameter übergebenen Pid..

private  void auswertungAufrufParameterVonZeitPunktAXL()
          Wertet den Aufrufparameter

-vonZeitPunktAXL

wie folgt aus:

-vonZeitPunktAXL: Wird auf gültigen Intervallanfangszeitpunkt des laufenden Tages gesetzt.

private  void auswertungAufrufParameterVonZeitPunktLZZS()
          Wertet den Aufrufparameter

-vonZeitPunktLZZS

wie folgt aus:

-vonZeitPunktLZZS: Wird auf gültigen Intervallanfangszeitpunkt des laufenden Monats gesetzt.

 void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
          Sendesteuerung des Datenverteilers an die Applikation.
private  long ermittleIntervallBeginnAXL(long spaetesterIntervallBeginn)
          Ermittelt den IntervallBeginn ausgehend von einem Zeitpunk und der Intervalldauer ein Tag
private  long ermittleIntervallBeginnLZZS(long spaetesterIntervallBeginn)
          Ermittelt den IntervallBeginn ausgehend von einem Zeitpunk und der Intervalldauer ein Monat
private  long ermittleIntervallEndeAXL(long fruehestesIntervallEnde)
          Ermittelt das IntervallEnde ausgehend von einem Zeitpunkt und der Intervalldauer Tag
private  long ermittleIntervallEndeLZZS(long fruehestesIntervallEnde)
          Ermittelt das IntervallEnde ausgehend von einem Zeitpunkt und der Intervalldauer Monat
private  Auftrag erstelleFolgeAuftrag(Auftrag auftrag)
          Folgeauftrag für den aktuell übergebenen Auftrag berechnen.
private  void initialisierung()
          Initialisierung von AggrLzzsDTV
 void initialize(de.bsvrz.dav.daf.main.ClientDavInterface dav)
          Initialisierung.
 boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
          Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht sind und mit der Methode dataRequest verarbeitet werden.
static void main(java.lang.String[] args)
          Main-Methode der SWE AutoExport.
 void parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)
          Wertet die Aufrufparameter aus.
private  void run()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WARTEZEIT_AUF_NAECHSTEN_AUFTRAG

private static final long WARTEZEIT_AUF_NAECHSTEN_AUFTRAG
WarteZeit in ms, bis die Auftragsliste erneut geprüft wird, nachdem keinerlei Aufträge mehr vorlagen *

See Also:
Constant Field Values

debug

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


_bisZeitPunktAXL

private long _bisZeitPunktAXL

_bisZeitPunktLZZS

private long _bisZeitPunktLZZS

_dav

private de.bsvrz.dav.daf.main.ClientDavInterface _dav
Datenverteilerverbindung


_ftpPassivModus

private java.lang.String _ftpPassivModus
Legt fest, ob die FTP-Verbindung im PassivModus eingebaut werden soll.


_ftpPassivModusAufrufParameter

private java.lang.String _ftpPassivModusAufrufParameter

_ftpServerBenutzer

private java.lang.String _ftpServerBenutzer

_ftpServerBenutzerAufrufParameter

private java.lang.String _ftpServerBenutzerAufrufParameter

_ftpServerPasswort

private java.lang.String _ftpServerPasswort

_ftpServerPasswortAufrufParameter

private java.lang.String _ftpServerPasswortAufrufParameter

_ftpServerURL

private java.lang.String _ftpServerURL

_ftpServerURLAufrufParameter

private java.lang.String _ftpServerURLAufrufParameter

_isAenderungDatenstruktur

private boolean _isAenderungDatenstruktur

_isAenderungDatenstrukturAufrufParameter

private boolean _isAenderungDatenstrukturAufrufParameter

_isBastBandUeberschreiben

private boolean _isBastBandUeberschreiben

_isBastBandUeberschreibenAufrufParameter

private boolean _isBastBandUeberschreibenAufrufParameter

_konfiguration

private de.bsvrz.dav.daf.main.config.DataModel _konfiguration
Die Konfiguration des DaV.


_listePidsAufrufParameter

private java.lang.String _listePidsAufrufParameter

_minimaleWarteZeitInStundenAufrufParameterAXL

private java.lang.String _minimaleWarteZeitInStundenAufrufParameterAXL

_minimaleWarteZeitInStundenAufrufParameterLZZS

private java.lang.String _minimaleWarteZeitInStundenAufrufParameterLZZS

_minimaleWarteZeitInStundenAXL

private int _minimaleWarteZeitInStundenAXL

_minimaleWarteZeitInStundenLZZS

private int _minimaleWarteZeitInStundenLZZS

_pidVerwaltungsObjektBastExportSteuerung

private java.lang.String _pidVerwaltungsObjektBastExportSteuerung

_verwaltungsObjektBastExportSteuerung

private de.bsvrz.dav.daf.main.config.SystemObject _verwaltungsObjektBastExportSteuerung

_vonZeitPunktAufrufParameterAXL

private long _vonZeitPunktAufrufParameterAXL

_vonZeitPunktAufrufParameterLZZS

private long _vonZeitPunktAufrufParameterLZZS

_vonZeitPunktAXL

private long _vonZeitPunktAXL

_vonZeitPunktLZZS

private long _vonZeitPunktLZZS

_listePidsLzzs

private java.util.List<java.lang.String> _listePidsLzzs

_listeLzzsSystemObjekte

private java.util.List<de.bsvrz.dav.daf.main.config.SystemObject> _listeLzzsSystemObjekte

_listePidsLzzsNichtVorhanden

private java.util.List<java.lang.String> _listePidsLzzsNichtVorhanden
Constructor Detail

AutoExport

public AutoExport()
Method Detail

main

public static void main(java.lang.String[] args)
Main-Methode der SWE AutoExport.

Parameters:
args - Aufrufargumente der Applikation.

ausgabeKonfigurationsZusammenfassung

private java.lang.String ausgabeKonfigurationsZusammenfassung()
Gibt Informationen zur Konfiguration aus. Ist nur zu Anlaysezwecken bzw. zur zusammenfassenden Ausgabe der Konfigurationsphase dieser Applikatione interessant.

Returns:
Informationen zur Konfiguration (Aufbau der Ausgabe kann sich ändern).

auswertungAufrufParameterBAStUndFTP

private void auswertungAufrufParameterBAStUndFTP()

auswertungAufrufParameterListePids

private void auswertungAufrufParameterListePids()
Wertet die Aufrufparameter

-listePids

wie folgt aus:

Es werden alle Systemobjekte vom Typ typ.langZeitZählstelle ermittelt und dabei diejenigen für die weiteren Berechnungen übernommen, deren Pid in der Liste der Pids aufgeführt ist (bzw. alle, falls Aufruf mit -listePids=alle erfolgt). Wird kein passendes Objekt gefunden, wird das Programm mit einer Fehlermeldung abgebrochen.


auswertungAufrufParameterPidVerwaltungsObjekt

private void auswertungAufrufParameterPidVerwaltungsObjekt()
Wertet den Aufrufparameter

-pidVerwaltungsObjekt

wie folgt aus:

Ist der Wert automatisch, so wird das Objekt mit dem Typ typ.bastExportImportSteuerung und der Pid bastBand.niDauz verwendet, sonst das Objekt mit der im Aufrufparameter übergebenen Pid..


auswertungAufrufParameterVonZeitPunktAXL

private void auswertungAufrufParameterVonZeitPunktAXL()
Wertet den Aufrufparameter

-vonZeitPunktAXL

wie folgt aus:

-vonZeitPunktAXL: Wird auf gültigen Intervallanfangszeitpunkt des laufenden Tages gesetzt.

Beispiel: Ist -vonZeitPunktAXL=04.11.2010 11:51:01,956, so wird der Zeitpunkt auf 04.11.2010 00:00:00,000 gesetzt.

Der Endzeitpunkt des Intervalls wird auf gültigen Intervallanfangszeitpunkt des nächsten Tages (dahinterliegender Intervallbeginn) gesetzt, im vorliegenden Beispiel also auf den 05.11.2010 00:00:00,000.


auswertungAufrufParameterVonZeitPunktLZZS

private void auswertungAufrufParameterVonZeitPunktLZZS()
Wertet den Aufrufparameter

-vonZeitPunktLZZS

wie folgt aus:

-vonZeitPunktLZZS: Wird auf gültigen Intervallanfangszeitpunkt des laufenden Monats gesetzt.

Beispiel: Ist -vonZeitPunktLZZS=04.11.2010 11:51:01,956, so wird der Zeitpunkt auf 01.11.2010 00:00:00,000 gesetzt.

Der Endzeitpunkt des Intervalls wird auf gültigen Intervallanfangszeitpunkt des nächsten Monats (dahinterliegender Intervallbeginn) gesetzt, im vorliegenden Beispiel also auf den 01.12.2010 00:00:00,000.


dataRequest

public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object,
                        de.bsvrz.dav.daf.main.DataDescription dataDescription,
                        byte state)
Sendesteuerung des Datenverteilers an die Applikation. Diese Methode muss von der Applikation implementiert werden, um den Versand von Daten zu starten bzw. anzuhalten. Der Datenverteiler signalisiert damit einer Quelle oder einem Sender dass mindestens ein Abnehmer bzw. kein Abnehmer mehr für die zuvor angemeldeten Daten vorhanden ist. Die Quelle wird damit aufgefordert den Versand von Daten zu starten bzw. zu stoppen.

Specified by:
dataRequest in interface de.bsvrz.dav.daf.main.ClientSenderInterface
Parameters:
object - Das in der zugehörigen Sendeanmeldung angegebene Objekt, auf das sich die Sendesteuerung bezieht.
dataDescription - Beschreibende Informationen zu den angemeldeten Daten auf die sich die Sendesteuerung bezieht.
state - Status der Sendesteuerung. Kann einen der Werte START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION enthalten.
See Also:
ClientSenderInterface.START_SENDING, ClientSenderInterface.STOP_SENDING, ClientSenderInterface.STOP_SENDING_NO_RIGHTS, ClientSenderInterface.STOP_SENDING_NOT_A_VALID_SUBSCRIPTION

ermittleIntervallBeginnAXL

private long ermittleIntervallBeginnAXL(long spaetesterIntervallBeginn)
Ermittelt den IntervallBeginn ausgehend von einem Zeitpunk und der Intervalldauer ein Tag

Parameters:
spaetesterIntervallBeginn - Anfangszeitpunkt in ms seit 1.1.1970, ab dem spätestens die Daten berechnet werden sollen. Dieser Wert wird dann noch soweit in die Vergangenheit verschoben, dass genau ein gültiger Intervallbeginn (Tagesbeginn) ermittelt wird.
Returns:
Intervallbeginn (GENAU!!), der vor dem Zeitpunkt vonZeitPunkt liegt

ermittleIntervallBeginnLZZS

private long ermittleIntervallBeginnLZZS(long spaetesterIntervallBeginn)
Ermittelt den IntervallBeginn ausgehend von einem Zeitpunk und der Intervalldauer ein Monat

Parameters:
spaetesterIntervallBeginn - Anfangszeitpunkt in ms seit 1.1.1970, ab dem spätestens die Daten berechnet werden sollen. Dieser Wert wird dann noch soweit in die Vergangenheit verschoben, dass genau ein gültiger Intervallbeginn (Monatsbeginn) ermittelt wird.
Returns:
Intervallbeginn (GENAU!!), der vor dem Zeitpunkt vonZeitPunkt liegt

ermittleIntervallEndeAXL

private long ermittleIntervallEndeAXL(long fruehestesIntervallEnde)
Ermittelt das IntervallEnde ausgehend von einem Zeitpunkt und der Intervalldauer Tag

Parameters:
fruehestesIntervallEnde - Endzeitpunkt, bis zu dem mindestens gerechnet werden muss.
Returns:
Intervallende (AUSSCHLIESSLICH!!), also der Intervallbeginn des nächsten Intervalls

ermittleIntervallEndeLZZS

private long ermittleIntervallEndeLZZS(long fruehestesIntervallEnde)
Ermittelt das IntervallEnde ausgehend von einem Zeitpunkt und der Intervalldauer Monat

Parameters:
fruehestesIntervallEnde - Endzeitpunkt, bis zu dem mindestens gerechnet werden muss.
Returns:
Intervallende (AUSSCHLIESSLICH!!), also der Intervallbeginn des nächsten Intervalls

erstelleFolgeAuftrag

private Auftrag erstelleFolgeAuftrag(Auftrag auftrag)
Folgeauftrag für den aktuell übergebenen Auftrag berechnen.

Der Folgeauftrag liegt genau eine Intervalllänge später.

Parameters:
auftrag - Der aktuelle Auftrag, für den ein Folgeauftrag berechnet werden soll.
Returns:
Folgeauftrag für den aktuell als Parameter übergebenen Auftrag oder null, wenn kein Folgeauftrag mehr existiert.

initialisierung

private void initialisierung()
Initialisierung von AggrLzzsDTV


initialize

public void initialize(de.bsvrz.dav.daf.main.ClientDavInterface dav)
Initialisierung. Wird durch den StandardApplicationRunner aufgerufen.

Specified by:
initialize in interface de.bsvrz.sys.funclib.application.StandardApplication
Parameters:
dav - Die Datenverteilerverbindung.

isRequestSupported

public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object,
                                  de.bsvrz.dav.daf.main.DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht sind und mit der Methode dataRequest verarbeitet werden. In der Implementierung dieser Methode dürfen keine synchronen Aufrufe, die auf Telegramme vom Datenverteiler warten (wie z.B. Konfigurationsanfragen) durchgeführt werden, da ansonsten ein Deadlock entsteht.

Specified by:
isRequestSupported in interface de.bsvrz.dav.daf.main.ClientSenderInterface
Parameters:
object - Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.
dataDescription - Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.
Returns:
true, falls Sendesteuerungen gewünscht sind, sonst false.
See Also:
dataRequest(de.bsvrz.dav.daf.main.config.SystemObject, de.bsvrz.dav.daf.main.DataDescription, byte)

parseArguments

public void parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)
                    throws java.lang.Exception
Wertet die Aufrufparameter aus.

Specified by:
parseArguments in interface de.bsvrz.sys.funclib.application.StandardApplication
Parameters:
argumentList - Aufrufparamter der Applikation
Throws:
java.lang.Exception - Wenn die Aufrufparameter nicht vollständig ausgewertet werden können.

run

private void run()