de.inovat.kex.bast.importer
Class BAStImportSteuerung

java.lang.Object
  extended by de.inovat.kex.bast.importer.BAStImportSteuerung
All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientReceiverInterface, de.bsvrz.dav.daf.main.ClientSenderInterface, de.bsvrz.sys.funclib.application.StandardApplication, java.lang.Runnable

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

Die Klasse dient der Importsteuerung der BASt-Band Daten.

Version:
$Revision: 642 $ / $Date: 2011-11-25 13:40:40 +0100 (Fr, 25 Nov 2011) $ / ($Author: HCK $)
Author:
inovat, innovative systeme - verkehr - tunnel - technik, Dagmar Rostek (DR)

Field Summary
private  boolean _abbruchImport
          Boolesches Attribut das angibt, ob der Import unterbrochen wurde.
private  boolean _abbruchSystem
          Boolesches Attribut das angibt, ob der Importvorgang durch das System abgebrochen werden musste.
private  de.bsvrz.dav.daf.main.config.AttributeGroup _atgVerkehrsDatenLangZeitIntervall
          Attributgruppe VerkehrsDatenLangZeitIntervall wird für den Import der BASt-Version 2004 benötigt.
private  de.bsvrz.dav.daf.main.config.AttributeGroup _atgVerkehrsDatLangZeitIntGeschwVerteilungFS
          Attributgruppe tlsLveErgebnismeldungVersion24, wird für den Import BASt-Version 2007 benötigt.
private  KonstantenBast.BAST_FORMAT _bastFormat
          Importformat.
private  SendeBAStStatusDaten _bastStatusDaten
          Statusinformationen die an den Datenverteiler gesendet werden.
private  de.bsvrz.dav.daf.main.DataDescription _datenbeschreibungVerkehrsDatenLangZeitIntervall
          Datenbeschreibung für das Versenden der Importdaten.
private  de.bsvrz.dav.daf.main.DataDescription _datenbeschreibungVerkehrsDatLangZeitIntGeschwVerteilungFS
          Datenbeschreibung für V2007.
private  de.bsvrz.dav.daf.main.ClientDavInterface _dav
          ClientDavInteface.
private  java.lang.String _ftpBenutzer
          FTP-Benutzername.
private  org.apache.commons.net.ftp.FTPClient _ftpClient
          FTPClient.
private  boolean _ftpPassivModus
          Legt fest, ob die FTP-Verbindung im PassivModus eingebaut werden soll.
private  java.lang.String _ftpPasswd
          FTP-Passwort.
private  java.lang.String _ftpServerName
          Host des FTP-Servers.
private  java.util.ArrayList<java.lang.String> _importDateienList
          ArrayList der Dateinamen die importiert werden sollen.
private  LangZeitZaehlStelle _lzz
          Objekt vom Typ Langzeitzählstelle.
private  java.util.Map<java.lang.String,java.lang.Boolean> _mapSendeErlaubnis
          HashMap mit den Sendestatus für das DataDescription des SystemObjekts.
private  int _prozentImport
          Integer Attribut dass den Prozentsatz des aktuellen Importes repräsentiert.
private  java.lang.Thread _threadBastBandImport
          Thread für die BastBandImport Steuerung.
private  boolean _threadImportAktiv
          Boolesches Attribut, das angibt, ob der Thread gerade aktiv ist.
private  java.lang.String _typBAStBand
          Typ des Systemobjekte für den BASt-Band Import/Export.
private static int[] AR_bPAValues
          Geschwindigkeitsgrenzen BPA.
private static java.lang.String[] AR_DiffVerkehrsDatenLzz8Plus1V2004
          Array mit allen Fahrzeugarten nach TLS 2002 die über den Import 8 Plus 1 nicht versorgt werden.
private static int[] AR_lVoValues
          Geschwindigkeitsgrenzen LVO.
private static int[] AR_sGVValues
          Geschwindigkeitsgrenzen SGV.
private static java.lang.String[] AR_VerkehrsDatenLangZeitIntervall_WertGeschwKlassen
          Array mit allen Fahrzeugarten nach TLS 2002 die nicht über den Import versorgt werden, aber mit Daten für das Versenden im Datenverteiler versorgt werden müssen.
private static java.lang.String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFS
          ToDo HCK: geändert 25.11.11, anteilSGV muss raus, sonst wird Wert beim Import auf nicht ermittelbar gesetzt: private String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFS = { "vBPA", "sBPA", "v15BPA", "v85BPA", "qSGV", "anteilSGV", "vLVo", "sLVo", "v15LVo", "v85LVo", "vSGV", "sSGV", "v15SGV", "v85SGV" }; Array mit der Teilmenge der Geschiwndigkeitsdaten.
private static java.lang.String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFSnichtImportierteAttribute
          Array mit allen Attributen der Attributgruppe atg.verkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungFS die weder exportiert, noch importiert werden.
private static java.lang.String[] AR_vLVoSGvBPa
          Klassen.
private static java.lang.String ASP_ANFRAGE
          Aspekt Anfrage.
private static java.lang.String ASP_EXTERNE_ERFASSUNG
          Aspekt ExterneErfassung für die Archivanfrage der V2004 Daten.
private static java.lang.String ASP_MESSWERT_ERSETZUNG
          Aspekt MessWertErsetzung.
private static java.lang.String ASP_ZUSTAND
          Aspekt des Systemobjektes Importverzeichnisüberwachung.
private static java.lang.String ATG_IMPORT_STEUERUNG
          Attributgruppe zur Steuerung des BASt-Band Imports:
private static java.lang.String ATG_VERKEHRS_DAT_LANG_ZEIT_INT_GESCHW_VERTEILUNG
          Attributgruppe Ergebnismeldung Version 24 (BASt 2007).
private static java.lang.String ATG_VERKEHRS_DATEN_LANG_ZEITINTERVALL
          Attributgruppe Verkehrsdatenlangzeitinervall (BASt 2004).
private static java.lang.String ATG_VERZEICHNIS_UEBERWACHUNG
          Attributgruppe des Systemobjektes Importverzeichnisüberwachung.
private static de.bsvrz.sys.funclib.debug.Debug debug
          Debugdebug fuer Debug-Ausgaben.
private static java.lang.String ERFASSUNG
           
private static java.lang.String GUETE
           
private static java.lang.String IMPLAUSIBEL
           
private static java.lang.String INDEX
           
private static java.lang.String INTERPOLIERT
           
private static java.lang.String JA
           
private static java.lang.String MESSWERT_ERSETZUNG
           
private static java.lang.String NICHT_ERFASST
           
private static java.lang.String NICHT_ERMITTELBAR
           
private static java.lang.String PL_Formal
           
private static java.lang.String Q_BPAGeschwKlasse
           
private static java.lang.String Q_LVoGeschwKlasse
           
private static java.lang.String Q_SGVGeschwKlasse
           
private static java.lang.String STANDARD
           
private static java.lang.String STATUS
           
private static java.lang.String VERFAHREN
           
private static java.lang.String WERT
           
private static java.lang.String WERT_MAX
           
private static java.lang.String WERT_MAX_LOGISCH
           
private static java.lang.String WERT_MIN
           
private static java.lang.String WERT_MIN_LOGISCH
           
 
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
BAStImportSteuerung()
           
 
Method Summary
private  void abbrechen(java.lang.String meldung)
          Die Methode stoppt den Thread.
protected  void anmeldenDavEmpfaengerBAStImport()
          Anmeldung beim Datenverteiler als Empfänger für die Attribute bzgl.
private  java.util.HashMap<java.lang.Long,de.bsvrz.dav.daf.main.Data> bestimmeArchivStundendatensatzMap(java.util.ArrayList<Stundendatensatz> arListStundenDatenSatzfuerFS, Fahrstreifen fs, de.bsvrz.dav.daf.main.config.AttributeGroup atg)
          Die Methode ermittelt zu einem Fahrstreifen und dem aktuellen Stundendatensatz des Fahrstreifens die aktuellsten Archivdaten, diese werden in einer Map gespeichert, in der der Schlüssel der Zeitpunkt, der Wert das Dataobjekt ist.
private  int bestimmeProgressbarFortschritt(int countStundendatensaetze, int prozentSchritt)
          Um in der Bedienung und Visualisierung den aktuellen Status über den Importfortschritt anzuzeigen wird ein Wert übermittelt, der je nach Prozentschritt - in Abhängigkeit der zu importierenden Daten - die Prozentzahl der Progressbar um eins erhöht.
private  int bestimmeProzentSchritt()
          Die Methode ermittelt den aktuellen Prozentstand.
private  boolean connectToFTPServer()
          Die Methode verbindet zum FTP-Server.
 void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject so, de.bsvrz.dav.daf.main.DataDescription datenBeschreibung, byte status)
           
private  void erneuerConnectFTPServer()
          Die Methode erneuert die Verbindung zum FTP-Server.
private  void erzeugeDatensatzV2004(BastBestandsbandformat bastFormat2004, Fahrstreifen fs, int prozentSchritt)
          Die Methode erzeugt einen Datensatz und übergibt diesen zum Senden an den Dav.
private  void erzeugeDatensatzV2007(BastBestandsbandformat bastBestandsFormat, Fahrstreifen fs, int prozentSchritt)
          Die Methode erzeugt einen BASt-Band Bestandsformat Daten V2007 Datensatz und leitet das Senden dieses Datensatzes ein, wenn erfolgreich ein Datensatz erzeugt wurde.
private  de.bsvrz.dav.daf.main.Data erzeugeVerkehrsDatenLangZeitIntervallDatensatzMitVorbelegungImportdaten(Stundendatensatz stundenSatz)
          Die Methode erzeugt zu einem Stundendatensatz ein mit "Nicht ermittelbar" vorbelegten Werten, wobei alle aus der Datei importierten Werte entsprechend belegt werden.
private  de.bsvrz.dav.daf.main.Data erzeugeVerkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungDatensatzMitVorbelegungImportdaten(Stundendatensatz stundenSatz)
          Die Methode erzeugt einen Stundendatensatz der mit den Importdaten vorbelegt ist.
private  java.lang.String generiereSendeErlaubnisSchluessel(de.bsvrz.dav.daf.main.config.SystemObject so, de.bsvrz.dav.daf.main.DataDescription dd)
          Generiere den SendeErlaubnis-Schlüssel.
 void initialize(de.bsvrz.dav.daf.main.ClientDavInterface dav)
           
 boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject systemObject, de.bsvrz.dav.daf.main.DataDescription dataDescription)
           
private  void konvertiereDavDatenImport(de.bsvrz.dav.daf.main.Data data)
          Methode die das Data Objekt in Dav-Daten transformiert.
private  void konvertiereDavDatenVerzeichnisueberwachungs(de.bsvrz.dav.daf.main.Data data)
          Methode die das Data-Objekt transformiert.
private  BastBestandsbandformat leseDateiEin(java.lang.String dateiName)
          Die Methode liest die Date mit dem übergebenen Dateinamen vom FTP-Server ein.
private  boolean loginToFTPServer()
          Diese Methode stellt eine Verbindung mit dem FTP-Server und den übergebenen Benutzer und Passwort her.
static void main(java.lang.String[] args)
           
 void parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)
           
 void run()
          In der run Methode des Threads BAStBandImport wird der Import der Datei durchgeführt.
private  void sendeDavDaten(java.util.ArrayList<de.bsvrz.dav.daf.main.ResultData> listeResultData)
          Das Senden der DaV-Daten.
private  void sendeImportiertenDatenFuerAlleFS(BastBestandsbandformat bastBestandsFormat)
          Die Methode sendet die importierten Verkehrsdaten.
private  void sendeMeldungFehler(java.lang.String prozent, java.lang.String meldung)
          Die Methode sendet die übergebene Fehler_Meldung an den DaV.
private  void sendeMeldungInfo(java.lang.String prozent, java.lang.String meldung)
          Die Methode sendet die übergebene Info_Meldung an den DaV.
private  boolean sperreDatei(java.lang.String dateiName)
          Die Methode sperrt die Datei, die im folgenden Schritt eingelesn wird.
private  boolean sperreDateiAufheben(java.lang.String dateiName)
          Die Methode hebt die Sperre der Datei wieder auf und benennt die Datei um mit Suffix ".bearbeitet" wobei vorher der Suffix ".lock" eliminiert wird.
private  void starteThread()
          Die Methode erzeugt einen Thread, der den BastBandImport startet.
private  void stopThread(java.lang.String meldung)
          Stoppt den Thread.
 void update(de.bsvrz.dav.daf.main.ResultData[] resultDatas)
          Update-Methode wird vom Datenverteiler aufgerufen.
private  boolean verbindeMitFTPServerImport()
          Diese Methode stellt eine Verbindung mit dem FTP-Server zum Import der Dateien her.
private  boolean wechselInsKorrekteImportVerzeichnis()
          Die Methode wechselt für den Import in das korrekte Verzeichnis.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

AR_bPAValues

private static final int[] AR_bPAValues
Geschwindigkeitsgrenzen BPA.


AR_DiffVerkehrsDatenLzz8Plus1V2004

private static final java.lang.String[] AR_DiffVerkehrsDatenLzz8Plus1V2004
Array mit allen Fahrzeugarten nach TLS 2002 die über den Import 8 Plus 1 nicht versorgt werden.


AR_lVoValues

private static final int[] AR_lVoValues
Geschwindigkeitsgrenzen LVO.


AR_sGVValues

private static final int[] AR_sGVValues
Geschwindigkeitsgrenzen SGV.


AR_VerkehrsDatenLangZeitIntervall_WertGeschwKlassen

private static final java.lang.String[] AR_VerkehrsDatenLangZeitIntervall_WertGeschwKlassen
Array mit allen Fahrzeugarten nach TLS 2002 die nicht über den Import versorgt werden, aber mit Daten für das Versenden im Datenverteiler versorgt werden müssen.


AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFS

private static final java.lang.String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFS
ToDo HCK: geändert 25.11.11, anteilSGV muss raus, sonst wird Wert beim Import auf nicht ermittelbar gesetzt: private String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFS = { "vBPA", "sBPA", "v15BPA", "v85BPA", "qSGV", "anteilSGV", "vLVo", "sLVo", "v15LVo", "v85LVo", "vSGV", "sSGV", "v15SGV", "v85SGV" }; Array mit der Teilmenge der Geschiwndigkeitsdaten.


AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFSnichtImportierteAttribute

private static final java.lang.String[] AR_VerkehrsDatenLangZeitIntervallGeschwVerteilungFSnichtImportierteAttribute
Array mit allen Attributen der Attributgruppe atg.verkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungFS die weder exportiert, noch importiert werden.


AR_vLVoSGvBPa

private static final java.lang.String[] AR_vLVoSGvBPa
Klassen.


ASP_ANFRAGE

private static final java.lang.String ASP_ANFRAGE
Aspekt Anfrage.

See Also:
Constant Field Values

ASP_EXTERNE_ERFASSUNG

private static final java.lang.String ASP_EXTERNE_ERFASSUNG
Aspekt ExterneErfassung für die Archivanfrage der V2004 Daten.

See Also:
Constant Field Values

ASP_MESSWERT_ERSETZUNG

private static final java.lang.String ASP_MESSWERT_ERSETZUNG
Aspekt MessWertErsetzung.

See Also:
Constant Field Values

ASP_ZUSTAND

private static final java.lang.String ASP_ZUSTAND
Aspekt des Systemobjektes Importverzeichnisüberwachung.

See Also:
Constant Field Values

ATG_IMPORT_STEUERUNG

private static final java.lang.String ATG_IMPORT_STEUERUNG
Attributgruppe zur Steuerung des BASt-Band Imports:

See Also:
Constant Field Values

ATG_VERKEHRS_DAT_LANG_ZEIT_INT_GESCHW_VERTEILUNG

private static final java.lang.String ATG_VERKEHRS_DAT_LANG_ZEIT_INT_GESCHW_VERTEILUNG
Attributgruppe Ergebnismeldung Version 24 (BASt 2007).

See Also:
Constant Field Values

ATG_VERKEHRS_DATEN_LANG_ZEITINTERVALL

private static final java.lang.String ATG_VERKEHRS_DATEN_LANG_ZEITINTERVALL
Attributgruppe Verkehrsdatenlangzeitinervall (BASt 2004).

See Also:
Constant Field Values

ATG_VERZEICHNIS_UEBERWACHUNG

private static final java.lang.String ATG_VERZEICHNIS_UEBERWACHUNG
Attributgruppe des Systemobjektes Importverzeichnisüberwachung.

See Also:
Constant Field Values

ERFASSUNG

private static final java.lang.String ERFASSUNG
See Also:
Constant Field Values

GUETE

private static final java.lang.String GUETE
See Also:
Constant Field Values

IMPLAUSIBEL

private static final java.lang.String IMPLAUSIBEL
See Also:
Constant Field Values

INDEX

private static final java.lang.String INDEX
See Also:
Constant Field Values

INTERPOLIERT

private static final java.lang.String INTERPOLIERT
See Also:
Constant Field Values

JA

private static final java.lang.String JA
See Also:
Constant Field Values

MESSWERT_ERSETZUNG

private static final java.lang.String MESSWERT_ERSETZUNG
See Also:
Constant Field Values

NICHT_ERFASST

private static final java.lang.String NICHT_ERFASST
See Also:
Constant Field Values

NICHT_ERMITTELBAR

private static final java.lang.String NICHT_ERMITTELBAR
See Also:
Constant Field Values

PL_Formal

private static final java.lang.String PL_Formal
See Also:
Constant Field Values

Q_BPAGeschwKlasse

private static final java.lang.String Q_BPAGeschwKlasse
See Also:
Constant Field Values

Q_LVoGeschwKlasse

private static final java.lang.String Q_LVoGeschwKlasse
See Also:
Constant Field Values

Q_SGVGeschwKlasse

private static final java.lang.String Q_SGVGeschwKlasse
See Also:
Constant Field Values

STANDARD

private static final java.lang.String STANDARD
See Also:
Constant Field Values

STATUS

private static final java.lang.String STATUS
See Also:
Constant Field Values

debug

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


VERFAHREN

private static final java.lang.String VERFAHREN
See Also:
Constant Field Values

WERT

private static final java.lang.String WERT
See Also:
Constant Field Values

WERT_MAX

private static final java.lang.String WERT_MAX
See Also:
Constant Field Values

WERT_MAX_LOGISCH

private static final java.lang.String WERT_MAX_LOGISCH
See Also:
Constant Field Values

WERT_MIN

private static final java.lang.String WERT_MIN
See Also:
Constant Field Values

WERT_MIN_LOGISCH

private static final java.lang.String WERT_MIN_LOGISCH
See Also:
Constant Field Values

_prozentImport

private int _prozentImport
Integer Attribut dass den Prozentsatz des aktuellen Importes repräsentiert.


_threadImportAktiv

private boolean _threadImportAktiv
Boolesches Attribut, das angibt, ob der Thread gerade aktiv ist.


_mapSendeErlaubnis

private java.util.Map<java.lang.String,java.lang.Boolean> _mapSendeErlaubnis
HashMap mit den Sendestatus für das DataDescription des SystemObjekts.


_abbruchSystem

private boolean _abbruchSystem
Boolesches Attribut das angibt, ob der Importvorgang durch das System abgebrochen werden musste. Dies ist z.B. der Fall, wenn kein Archivdatensatz zu dem zu importierendem Datensatz vorliegt.


_abbruchImport

private boolean _abbruchImport
Boolesches Attribut das angibt, ob der Import unterbrochen wurde.


_atgVerkehrsDatenLangZeitIntervall

private de.bsvrz.dav.daf.main.config.AttributeGroup _atgVerkehrsDatenLangZeitIntervall
Attributgruppe VerkehrsDatenLangZeitIntervall wird für den Import der BASt-Version 2004 benötigt.


_atgVerkehrsDatLangZeitIntGeschwVerteilungFS

private de.bsvrz.dav.daf.main.config.AttributeGroup _atgVerkehrsDatLangZeitIntGeschwVerteilungFS
Attributgruppe tlsLveErgebnismeldungVersion24, wird für den Import BASt-Version 2007 benötigt.


_bastFormat

private KonstantenBast.BAST_FORMAT _bastFormat
Importformat.


_bastStatusDaten

private SendeBAStStatusDaten _bastStatusDaten
Statusinformationen die an den Datenverteiler gesendet werden.


_datenbeschreibungVerkehrsDatenLangZeitIntervall

private de.bsvrz.dav.daf.main.DataDescription _datenbeschreibungVerkehrsDatenLangZeitIntervall
Datenbeschreibung für das Versenden der Importdaten.


_datenbeschreibungVerkehrsDatLangZeitIntGeschwVerteilungFS

private de.bsvrz.dav.daf.main.DataDescription _datenbeschreibungVerkehrsDatLangZeitIntGeschwVerteilungFS
Datenbeschreibung für V2007.


_dav

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


_ftpBenutzer

private java.lang.String _ftpBenutzer
FTP-Benutzername.


_ftpClient

private org.apache.commons.net.ftp.FTPClient _ftpClient
FTPClient.


_ftpPassivModus

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


_ftpPasswd

private java.lang.String _ftpPasswd
FTP-Passwort.


_ftpServerName

private java.lang.String _ftpServerName
Host des FTP-Servers.


_importDateienList

private java.util.ArrayList<java.lang.String> _importDateienList
ArrayList der Dateinamen die importiert werden sollen.


_lzz

private LangZeitZaehlStelle _lzz
Objekt vom Typ Langzeitzählstelle.


_threadBastBandImport

private java.lang.Thread _threadBastBandImport
Thread für die BastBandImport Steuerung.


_typBAStBand

private java.lang.String _typBAStBand
Typ des Systemobjekte für den BASt-Band Import/Export.

Constructor Detail

BAStImportSteuerung

public BAStImportSteuerung()
Method Detail

abbrechen

private void abbrechen(java.lang.String meldung)
Die Methode stoppt den Thread.

Parameters:
meldung - Meldung die dem Clienten mitgeteilt wird.

anmeldenDavEmpfaengerBAStImport

protected void anmeldenDavEmpfaengerBAStImport()
Anmeldung beim Datenverteiler als Empfänger für die Attribute bzgl. BASt-Band Import und Verzeichnisüberwachung.


bestimmeArchivStundendatensatzMap

private java.util.HashMap<java.lang.Long,de.bsvrz.dav.daf.main.Data> bestimmeArchivStundendatensatzMap(java.util.ArrayList<Stundendatensatz> arListStundenDatenSatzfuerFS,
                                                                                                       Fahrstreifen fs,
                                                                                                       de.bsvrz.dav.daf.main.config.AttributeGroup atg)
                                                                                                throws java.io.IOException,
                                                                                                       java.lang.InterruptedException
Die Methode ermittelt zu einem Fahrstreifen und dem aktuellen Stundendatensatz des Fahrstreifens die aktuellsten Archivdaten, diese werden in einer Map gespeichert, in der der Schlüssel der Zeitpunkt, der Wert das Dataobjekt ist. Dadurch, dass die Zeit als Schlüssel verwendet wird, wird gewährleistet, dass immer der aktuellste Datensatz im Archiv verwendet wird.

Parameters:
arListStundenDatenSatzfuerFS - Liste aller Stundendatensätze zu dem Fahrstreifenobjekt.
fs - Fahrstreifenobjekt.
atg - Attributgruppe für die der Archivdatensatz bestimmt wird.
Returns:
Map mit den Dataobjekten zu einem Stundendatensatz des Fahrstreifens.
Throws:
java.io.IOException - .
java.lang.InterruptedException - .

bestimmeProgressbarFortschritt

private int bestimmeProgressbarFortschritt(int countStundendatensaetze,
                                           int prozentSchritt)
Um in der Bedienung und Visualisierung den aktuellen Status über den Importfortschritt anzuzeigen wird ein Wert übermittelt, der je nach Prozentschritt - in Abhängigkeit der zu importierenden Daten - die Prozentzahl der Progressbar um eins erhöht.

Parameters:
countStundendatensaetze - Anzahl der aktuell bearbeiteten Stundendatensätze.
prozentSchritt - Prozentschritt.
Returns:
Anzahl der aktuell bearbeitetend Stundendatensätze, sobald die Anzahl der abgearbeiteten Stundendatensätze gleich dem prozentSchritt ist, wird die Prozentzahl für den Import um eins erhöht und der counter für die Stundendatensätze auf 0 initialisiert.

bestimmeProzentSchritt

private int bestimmeProzentSchritt()
Die Methode ermittelt den aktuellen Prozentstand.

Returns:
Prozentschritt je nach Importdateigrösse.

connectToFTPServer

private boolean connectToFTPServer()
Die Methode verbindet zum FTP-Server.

Returns:
true wenn keine Exception aufgetreten ist, false sonst.

dataRequest

public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject so,
                        de.bsvrz.dav.daf.main.DataDescription datenBeschreibung,
                        byte status)
Specified by:
dataRequest in interface de.bsvrz.dav.daf.main.ClientSenderInterface

erneuerConnectFTPServer

private void erneuerConnectFTPServer()
Die Methode erneuert die Verbindung zum FTP-Server.


erzeugeDatensatzV2004

private void erzeugeDatensatzV2004(BastBestandsbandformat bastFormat2004,
                                   Fahrstreifen fs,
                                   int prozentSchritt)
                            throws java.lang.Exception
Die Methode erzeugt einen Datensatz und übergibt diesen zum Senden an den Dav. Dabei wird die Attributgruppe atg.VerkehrsdatenLangZeitIntervall mit dem Aspekt asp.messWertErsetzung geschrieben. Um einen vollständigen Datensatz zu erzeugen, wird der zugehörige Archivdatensatz abgerufen asp.ExterneErfassung und als Default verwendet, d.h. nur die zusätzlich importierten Daten werden in dem Archivdatensatz entsprechend angepasst, dann aber via Aspekt asp.messWertErsetzung publiziert.

Parameters:
bastFormat2004 - BastBand Format.
fs - Fahrstreifen.
prozentSchritt - Prozentschritt.
Throws:
java.lang.Exception - .

erzeugeDatensatzV2007

private void erzeugeDatensatzV2007(BastBestandsbandformat bastBestandsFormat,
                                   Fahrstreifen fs,
                                   int prozentSchritt)
                            throws java.lang.Exception
Die Methode erzeugt einen BASt-Band Bestandsformat Daten V2007 Datensatz und leitet das Senden dieses Datensatzes ein, wenn erfolgreich ein Datensatz erzeugt wurde.

Parameters:
bastBestandsFormat - BASt-Band Format V2007
fs - Fahrstreifen.
prozentSchritt - Prozentschritt.
Throws:
java.lang.Exception - .

erzeugeVerkehrsDatenLangZeitIntervallDatensatzMitVorbelegungImportdaten

private de.bsvrz.dav.daf.main.Data erzeugeVerkehrsDatenLangZeitIntervallDatensatzMitVorbelegungImportdaten(Stundendatensatz stundenSatz)
Die Methode erzeugt zu einem Stundendatensatz ein mit "Nicht ermittelbar" vorbelegten Werten, wobei alle aus der Datei importierten Werte entsprechend belegt werden.

Parameters:
stundenSatz - Stundendatensatz, für den der Datensatz erzeugt wird.
Returns:
data Objekt.

erzeugeVerkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungDatensatzMitVorbelegungImportdaten

private de.bsvrz.dav.daf.main.Data erzeugeVerkehrsDatenLangZeitIntervallGeschwindigkeitVerteilungDatensatzMitVorbelegungImportdaten(Stundendatensatz stundenSatz)
Die Methode erzeugt einen Stundendatensatz der mit den Importdaten vorbelegt ist. Alle Werte die der Importdatensatz nicht liefert werden auf "nicht ermittelbar" gesetzt.

Parameters:
stundenSatz - Stundendatensatz für den ein Resultdata erzeugt wird.
Returns:
Data.

generiereSendeErlaubnisSchluessel

private java.lang.String generiereSendeErlaubnisSchluessel(de.bsvrz.dav.daf.main.config.SystemObject so,
                                                           de.bsvrz.dav.daf.main.DataDescription dd)
Generiere den SendeErlaubnis-Schlüssel.

Parameters:
so - SystemObject.
dd - DataDescription.
Returns:
SendeErlaubnis-Schlüssel.

initialize

public void initialize(de.bsvrz.dav.daf.main.ClientDavInterface dav)
                throws java.lang.Exception
Specified by:
initialize in interface de.bsvrz.sys.funclib.application.StandardApplication
Throws:
java.lang.Exception

isRequestSupported

public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject systemObject,
                                  de.bsvrz.dav.daf.main.DataDescription dataDescription)
Specified by:
isRequestSupported in interface de.bsvrz.dav.daf.main.ClientSenderInterface

konvertiereDavDatenImport

private void konvertiereDavDatenImport(de.bsvrz.dav.daf.main.Data data)
Methode die das Data Objekt in Dav-Daten transformiert.

Parameters:
data - Dataobjekt.

konvertiereDavDatenVerzeichnisueberwachungs

private void konvertiereDavDatenVerzeichnisueberwachungs(de.bsvrz.dav.daf.main.Data data)
Methode die das Data-Objekt transformiert. Das data-Objekt enthält einen String, in dem alle Informationen durch ein @ angehängt sind. Dabei sind folgende Informationen enthalten:
  • dateiname
  • url
  • user
  • passwd
  • bastFormat
  • Parameters:
    data - Dataobjekt.

    leseDateiEin

    private BastBestandsbandformat leseDateiEin(java.lang.String dateiName)
    Die Methode liest die Date mit dem übergebenen Dateinamen vom FTP-Server ein.

    Parameters:
    dateiName - der Datei die importiert werden soll.
    Returns:
    instanz BastBestandsbandformat mit allen relevanten Attributen.

    loginToFTPServer

    private boolean loginToFTPServer()
    Diese Methode stellt eine Verbindung mit dem FTP-Server und den übergebenen Benutzer und Passwort her.

    Returns:
    true wenn die Verbindung geklappt hat, false sonst.

    main

    public static void main(java.lang.String[] args)

    parseArguments

    public void parseArguments(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)
                        throws java.lang.Exception
    Specified by:
    parseArguments in interface de.bsvrz.sys.funclib.application.StandardApplication
    Throws:
    java.lang.Exception

    run

    public void run()
    In der run Methode des Threads BAStBandImport wird der Import der Datei durchgeführt. Folgende Schritte sind dabei zu vollziehen, nachdem eine erfolgreiche Verbindung zum FTP-Server statt gefunden hat. Sollte dies nicht möglich sein, wird eine Statusmeldung versendet. Für alle Dateien die importiert werden sollen:
  • 0. Sperren der Datei via .lock Endung
  • 1. Lese Datei vom FTP-Server ein
  • 2. Konvertiere die Zeilen in das interne DaV-Format.
  • 3. Schreibe Datensatz in DaV.
  • 4. Bestätige Import der Datei via Statusmeldung.
  • 5. Benenne Datei in bearbeitet um.
  • Specified by:
    run in interface java.lang.Runnable

    sendeDavDaten

    private void sendeDavDaten(java.util.ArrayList<de.bsvrz.dav.daf.main.ResultData> listeResultData)
    Das Senden der DaV-Daten.

    Parameters:
    listeResultData - Liste der ResultData die versendet werden.

    sendeImportiertenDatenFuerAlleFS

    private void sendeImportiertenDatenFuerAlleFS(BastBestandsbandformat bastBestandsFormat)
    Die Methode sendet die importierten Verkehrsdaten.

    Parameters:
    bastBestandsFormat - BastBestandsBandformat.

    sendeMeldungFehler

    private void sendeMeldungFehler(java.lang.String prozent,
                                    java.lang.String meldung)
    Die Methode sendet die übergebene Fehler_Meldung an den DaV.

    Parameters:
    prozent - Prozent.
    meldung - Fehlermeldung die publiziert wird.

    sendeMeldungInfo

    private void sendeMeldungInfo(java.lang.String prozent,
                                  java.lang.String meldung)
    Die Methode sendet die übergebene Info_Meldung an den DaV.

    Parameters:
    prozent - Prozent.
    meldung - Infomeldung die publiziert wird.

    sperreDatei

    private boolean sperreDatei(java.lang.String dateiName)
    Die Methode sperrt die Datei, die im folgenden Schritt eingelesn wird. Folgende Ausnahmen werden dabei behandelt:
  • Die Datei ist schon gesperrt (kenntlich durch den suffix .lock), der Benutzer erhält darüber eine Statusmeldung.
  • Die Datei ist schon bearbeitet (kenntlich durch den suffix .bearbeitet), der Benutzer erhält darüber eine Statusmeldung.
  • Die Datei existiert nicht. Der Benutzer erhält darüber eine Statusmeldung.
  • Parameters:
    dateiName - Dateiname der Datei die gesperrt wird. Bei der Sperrung handelt es sich um ein Hinzufügen des Suffix ".lock".
    Returns:
    true wenn die Umbenennung geklappt hat, false sonst.

    sperreDateiAufheben

    private boolean sperreDateiAufheben(java.lang.String dateiName)
    Die Methode hebt die Sperre der Datei wieder auf und benennt die Datei um mit Suffix ".bearbeitet" wobei vorher der Suffix ".lock" eliminiert wird.

    Parameters:
    dateiName - Dateiname der Datei deren Sperre aufgehoben wird.
    Returns:
    true, wenn die Sperraufhebung geklappt hat, false sonst.

    starteThread

    private void starteThread()
    Die Methode erzeugt einen Thread, der den BastBandImport startet. Durch die Verwendung eines Threads ist es möglich den Import zu jedem Zeitpunkt zu unterbrechen.


    stopThread

    private void stopThread(java.lang.String meldung)
    Stoppt den Thread.

    Parameters:
    meldung - Statusmeldung die an den Clienten via DaV geschickt wird.

    update

    public void update(de.bsvrz.dav.daf.main.ResultData[] resultDatas)
    Update-Methode wird vom Datenverteiler aufgerufen. Die übergebenen Datensätze werden verarbeitet.

    Specified by:
    update in interface de.bsvrz.dav.daf.main.ClientReceiverInterface
    Parameters:
    resultDatas - Resultdata, entspricht den Attributen eines BASt-Band importes, d.h. Referenz auf Langzeitzählstellen username passwort url zum FTP-Server auf dem die Importierten Daten abgelegt werden.

    verbindeMitFTPServerImport

    private boolean verbindeMitFTPServerImport()
    Diese Methode stellt eine Verbindung mit dem FTP-Server zum Import der Dateien her.

    Returns:
    true, wenn die Verbindung zum FTP-Server erfolgreich aufgebaut werden konnte, false sonst.

    wechselInsKorrekteImportVerzeichnis

    private boolean wechselInsKorrekteImportVerzeichnis()
    Die Methode wechselt für den Import in das korrekte Verzeichnis.

    Returns:
    true, wenn der Wechsel geklappt hat, false sonst.