de.inovat.kex.bast.exporter
Class DataChannelAxlBAStEF1

java.lang.Object
  extended by de.inovat.kex.bast.exporter.FileDataChannel
      extended by de.inovat.kex.bast.exporter.AbstractDataChannelBASt
          extended by de.inovat.kex.bast.exporter.DataChannelAxlBAStEF1
All Implemented Interfaces:
ResultDataChannel

public class DataChannelAxlBAStEF1
extends AbstractDataChannelBASt

Das Format Einzelfahrzeugdaten - EF1 dient zur Übermittlung der Daten von Achslastmessstellen an die BASt, sofern die Daten nicht direkt von der Messstelle an die BASt weitergeleitet werden. Die eingehenden Daten von der Achslastmesstele werden in dem Typ typ.deAxl, der Attributgrupe atg.tlsEinzelErgebnisMeldungAchslastenUndKfzGesamtGewichteVersion3 und dem Aspekt asp.tlsAntwort an den Datenverteiler publiziert. Dementsprechend werden genau diese Datensätze aus dem Archiv ausgelesen und in die Exportdatei geschrieben. Folgende Schritte werden dabei vollzogen:

  • 1. Bestimmung der DE-Kanäle zu der übergebenen Langzeitzählstelle. Fehlermeldung, wenn es sich nicht um eine Achslasterfassende Langzeitzählstelle Handelt.
  • 2. Auslesen der Daten aus dem Archiv (zu Prüfen ob es zu Performanceeinbußen kommt, wenn die Tagesdatensätze ausgelesen werden und nicht der Monatsdatensatz...)
  • 3. Bestimmung des Filenamens (pro Tag, pro Zählstelle wird ein Dateiname erzeugt)
  • 4. Erzeugung der Datei mit bestimmten Dateinamen auf dem FTP-Server.
  • 5. Schreiben der Stundendatensätze in die Datei, wobei eine Konvertierung in Binärformat durchgeführt wird.
  • 6. Bestimmung der Länge des Austauschformates, schreiben dieser Länge an Position Byte 1.
  • Für jeden Tag und jede Messstelle wird eine Datei angelegt, in der die Achslastmessstelldaten im Binärformat enthalten sind.

    Version:
    $Revision: 0 $ / $Date: neu $ / ($Author: DR $)
    Author:
    inovat, innovative systeme - verkehr - tunnel - technik, Dagmar Rostek (DR)

    Field Summary
    private  int[] _arIntValues
              Array mit der binären Repräsentation des zu exportierenden Datensatzes.
    private  AuswerteQuerschnitt _AuswerteQuerschnitt
              Attribut Auswertequerschnitt, repräsentiert ein Objekt der Klasse.
    private  int[] _copyArIntValues
              Kopie des Arrays zur Anpassung des Binärarrays entsprechend der zu exportierenden Datensätze.
    private  de.bsvrz.dav.daf.main.ClientDavInterface _dav
              ClientDavInteface.
    private  java.lang.String _Fernziel
              Attribut Fernziel.
    private  Fahrstreifen[] _FSArray
              Array der Fahrstreifen.
    private  Fahrstreifen[] _FSMitDatenerfassungArray
              DatenerfassungsArray.
    private  int _Richtung
              Richtungsangabe.
    private static de.bsvrz.sys.funclib.debug.Debug debug
              DebugLogger fuer Debug-Ausgaben.
    static int GEGEN_RICHTUNG
              Konstante zum Erzeugen ein Channels für die GEGEN-Richtung
    static int IN_RICHTUNG
              Konstante zum Erzeugen ein Channels für die IN-Richtung
    private static int LENGTH_LVE
              Länge für einen zu exportierenden Datensatz für deLve.
    private static int MINLENGTH
              Minimallänge für einen zu exportierenden Datensatz.
     
    Fields inherited from class de.inovat.kex.bast.exporter.AbstractDataChannelBASt
    _CountOfFS, _LastHour, _ZaehlStelle, MONATE, TWO_DIGIT_FORMAT
     
    Constructor Summary
    DataChannelAxlBAStEF1(int inRichtung, de.bsvrz.dav.daf.main.ClientDavInterface dav, SendeBAStStatusDaten bastStatusDaten)
               
     
    Method Summary
    private  int anpassenWert(int wert, int anzByte, int nichtErmittelbarDav)
              Anpassung des Wertes.
    private  int bestimmeFahrstreifenkennung(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime)
              Die Methode ermittelt die Fahrstreifenkennung für den übergebenen Datensatz.
    private  int bestimmeHigh4Bits(int high4BitsIntValue, int ueberschreitung)
              Die Methode bestimmt den Wert für die 4 höchsten Bit. 5..6 = 0 7: 0 keine Ueberschreitung/1 Ueberschreitung
    private  int bestimmeLower4Bits(int lower4BitsIntValue)
              Die Methode bestimmt für den uebergebenen Integer Wert die zugehörigen 4 niedrigsten Bit.
    private  int bestimmeTelegrammDatenFest(de.bsvrz.dav.daf.main.Data data)
              Die Methode bestimmt die Telegrammdaten.
    private  void bestimmeTelegrammDatenFestLve(de.bsvrz.dav.daf.main.Data data)
              Die Methode bestimmt die Telegrammdaten für deLve.
    private  void bestimmeTelegrammDatenvariabel(int index, de.bsvrz.dav.daf.main.Data data)
              Die Methode bestimmt die variablen UeberlastungsAchsendaten.
    private  void bestimmeZeitangabe(java.util.Calendar calendar)
              Die Methode bestimmt die Zeitbereichsangabe für den Datensatz anhand des Calendar Objektes.
    private  java.lang.String bestimmeZweiStelligeDatumsangaben(java.lang.String value)
              Die Methode bestimmt einen zweistelligen Monats oder Tageswert.
    protected  java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle, int year, int month)
              gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat ergibt.
    protected  java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle, int year, int month, int day)
              gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat und dem Tag ergibt.
    private  int getExtraHighByte(int value)
              Die Methode bestimmt ExtraHighByte.
    private  int getHighByte(int value)
              Die Methode bestimmt HighByte.
    private  int getLowByte(int value)
              Die Methode bestimmt LowByte.
    (package private)  int invertiereBit(int n, int pos)
              Invertieren der Binaerdarstellung des Wertes.
     void processRecord(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime, java.util.Calendar calendar)
              Die Methode wertet einen Datensatz der Achslastmessstelle aus.
    private  void reziseByteArray(int resizeGroesse)
              Die Methode vergroessert das Array um die uebergebene Groesse * 5, da pro Ueberlastungsachsen Datensatz 5 Werte bestimmt werden.
    (package private)  int setBit(int n, int pos)
              Setzen eines Bit an der Postion pos.
     void setZaehlstelle(LangZeitZaehlStelle zaehlstelle)
              setzt die Zählstelle.
    private  byte toByte(int intValueOfByte)
              Die Methode toByte konvertiert den uebergebenen Integerwert in einen Bytewert.
    protected  void writeHeader(java.io.PrintWriter writer)
              ermöglicht das Schreiben von Daten am Anfang der Datei.
    protected  void writeHeaderFTP(java.io.BufferedOutputStream bos)
               
     
    Methods inherited from class de.inovat.kex.bast.exporter.AbstractDataChannelBASt
    hasData, reset, reset
     
    Methods inherited from class de.inovat.kex.bast.exporter.FileDataChannel
    close, deleteLastLine, flush, reset, spool
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    GEGEN_RICHTUNG

    public static final int GEGEN_RICHTUNG
    Konstante zum Erzeugen ein Channels für die GEGEN-Richtung

    See Also:
    Constant Field Values

    IN_RICHTUNG

    public static final int IN_RICHTUNG
    Konstante zum Erzeugen ein Channels für die IN-Richtung

    See Also:
    Constant Field Values

    LENGTH_LVE

    private static final int LENGTH_LVE
    Länge für einen zu exportierenden Datensatz für deLve.

    See Also:
    Constant Field Values

    debug

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


    MINLENGTH

    private static final int MINLENGTH
    Minimallänge für einen zu exportierenden Datensatz.

    See Also:
    Constant Field Values

    _arIntValues

    private int[] _arIntValues
    Array mit der binären Repräsentation des zu exportierenden Datensatzes.


    _AuswerteQuerschnitt

    private AuswerteQuerschnitt _AuswerteQuerschnitt
    Attribut Auswertequerschnitt, repräsentiert ein Objekt der Klasse.


    _copyArIntValues

    private int[] _copyArIntValues
    Kopie des Arrays zur Anpassung des Binärarrays entsprechend der zu exportierenden Datensätze.


    _dav

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


    _Fernziel

    private java.lang.String _Fernziel
    Attribut Fernziel.


    _FSArray

    private Fahrstreifen[] _FSArray
    Array der Fahrstreifen.


    _FSMitDatenerfassungArray

    private Fahrstreifen[] _FSMitDatenerfassungArray
    DatenerfassungsArray.


    _Richtung

    private int _Richtung
    Richtungsangabe.

    Constructor Detail

    DataChannelAxlBAStEF1

    public DataChannelAxlBAStEF1(int inRichtung,
                                 de.bsvrz.dav.daf.main.ClientDavInterface dav,
                                 SendeBAStStatusDaten bastStatusDaten)
    Method Detail

    anpassenWert

    private int anpassenWert(int wert,
                             int anzByte,
                             int nichtErmittelbarDav)
    Anpassung des Wertes. Wert aus Dav wird in ef1-Format-Wert abgebildet.

    Parameters:
    wert - Wert aus DaV.
    anzByte - anzahl der Bytes für den Wert im ef1-Format.
    nichtErmittelbarDav - Nicht ermittelbar für DaV-Wert.
    Returns:
    Wert im ef1-Format.

    bestimmeFahrstreifenkennung

    private int bestimmeFahrstreifenkennung(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime)
    Die Methode ermittelt die Fahrstreifenkennung für den übergebenen Datensatz. Die Fahrstreifenkennung ist gleich dem DEKanal.

    Parameters:
    rsArrayAtTime - Datensatz für den die Fahrstreifenkennung ermittelt wird.
    Returns:
    DEKanal.

    bestimmeHigh4Bits

    private int bestimmeHigh4Bits(int high4BitsIntValue,
                                  int ueberschreitung)
    Die Methode bestimmt den Wert für die 4 höchsten Bit. 5..6 = 0 7: 0 keine Ueberschreitung/1 Ueberschreitung

    Parameters:
    high4BitsIntValue - der Integerwert, für den der Wert bestimmt wird.
    ueberschreitung - Bit das angibt ob eine Ueberschreitung vor liegt oder nicht.
    Returns:
    byte mit entsprechend angepasstem Bit an Position 7.

    bestimmeLower4Bits

    private int bestimmeLower4Bits(int lower4BitsIntValue)
    Die Methode bestimmt für den uebergebenen Integer Wert die zugehörigen 4 niedrigsten Bit. Zum Beispiel wird das Byte bestimmt, welches den Zustand des Attributes Ueberladung repräsentiert. Mit diesem Byte wird eine Ueberschreitung des zulaessigen Gesamtgewichts oder Achsgewichts gekennzeichnet. Bit 0..4 ist wie folgt umzusetzten:
  • 0: keine Ueberladung
  • 1: Ueberschreitung des Gesamtgewichts
  • 2: Ueberschreitung mindestens eines Einzel-, Doppel, oder Dreifachachsgewichts des Fahrzeugs
  • 3: Ueberschreitung des Gesamtgewichts und mindestens eines Einzel-, Doppel, oder Dreifachgewichts des Fahrzeugs
  • Parameters:
    lower4BitsIntValue - Ueberladung.
    Returns:
    Inhalt Byte Ueberladung.

    bestimmeTelegrammDatenFest

    private int bestimmeTelegrammDatenFest(de.bsvrz.dav.daf.main.Data data)
    Die Methode bestimmt die Telegrammdaten.
  • Fahrzeugtyp
  • Fahrzeuglänge low Byte
  • Fahrzeuglänge high Byte
  • Parameters:
    data - Daten anhand die zu extrahierenden Werte bestimmt werden.
    Returns:
    Anzahl der Dynamischen Telegramm Parameter "ÜberlastungAchse".

    bestimmeTelegrammDatenFestLve

    private void bestimmeTelegrammDatenFestLve(de.bsvrz.dav.daf.main.Data data)
    Die Methode bestimmt die Telegrammdaten für deLve.
  • Fahrzeugtyp
  • Fahrzeuglänge low Byte
  • Fahrzeuglänge high Byte
  • Parameters:
    data - Daten anhand die zu extrahierenden Werte bestimmt werden.

    bestimmeTelegrammDatenvariabel

    private void bestimmeTelegrammDatenvariabel(int index,
                                                de.bsvrz.dav.daf.main.Data data)
    Die Methode bestimmt die variablen UeberlastungsAchsendaten.

    Parameters:
    index - Index gibt an, ab wo das Array mit Daten gefüllt wird.
    data - Dataset mit den aktuellen Werten für die ein Export durchgeführt wird.

    bestimmeZeitangabe

    private void bestimmeZeitangabe(java.util.Calendar calendar)
    Die Methode bestimmt die Zeitbereichsangabe für den Datensatz anhand des Calendar Objektes.

    Parameters:
    calendar - Calendarobjekt.

    bestimmeZweiStelligeDatumsangaben

    private java.lang.String bestimmeZweiStelligeDatumsangaben(java.lang.String value)
    Die Methode bestimmt einen zweistelligen Monats oder Tageswert.

    Parameters:
    value - der Tageswert, oder Monatswert, der bzgl. Zweistelligkeit geprüft und ggf. zweistellig transformiert wird.
    Returns:
    zweistelliger Wert des übergebenem Wertes.

    constructFilename

    protected java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle,
                                                 int year,
                                                 int month)
    Description copied from class: AbstractDataChannelBASt
    gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat ergibt.

    Specified by:
    constructFilename in class AbstractDataChannelBASt
    Parameters:
    zaehlStelle - Zählstelle.
    year - Jahr.
    month - Monat.
    Returns:
    vollständig klassifizierter Dateiname

    constructFilename

    protected java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle,
                                                 int year,
                                                 int month,
                                                 int day)
    Description copied from class: AbstractDataChannelBASt
    gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat und dem Tag ergibt.

    Specified by:
    constructFilename in class AbstractDataChannelBASt
    Parameters:
    zaehlStelle - Zählstelle.
    year - Jahr.
    month - Monat.
    day - Tag.
    Returns:
    Filename als String.

    getExtraHighByte

    private int getExtraHighByte(int value)
    Die Methode bestimmt ExtraHighByte.

    Parameters:
    value - Wert für den das ExtraHighByte bestimmt wird.
    Returns:
    ExtraHighByte Wert.

    getHighByte

    private int getHighByte(int value)
    Die Methode bestimmt HighByte.

    Parameters:
    value - Wert für den das HighByte bestimmt wird.
    Returns:
    HighByte Wert.

    getLowByte

    private int getLowByte(int value)
    Die Methode bestimmt LowByte.

    Parameters:
    value - Integervalue für den das LowByte bestimmt wird.
    Returns:
    lowByte.

    invertiereBit

    int invertiereBit(int n,
                      int pos)
    Invertieren der Binaerdarstellung des Wertes.

    Parameters:
    n - Wert der invertiert werden soll.
    pos - An welcher Position die invertierung durchgeführt werden soll.
    Returns:
    int mit invertiertem Bit des Wertes n, an Position pos.

    processRecord

    public void processRecord(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime,
                              java.util.Calendar calendar)
                       throws ChannelException
    Die Methode wertet einen Datensatz der Achslastmessstelle aus.

    Parameters:
    rsArrayAtTime - ResultData[] Archivanfrageresultdata.
    calendar - Calendarobjekt zur Bestimmung der Zeit.
    Throws:
    ChannelException - Exception.

    reziseByteArray

    private void reziseByteArray(int resizeGroesse)
    Die Methode vergroessert das Array um die uebergebene Groesse * 5, da pro Ueberlastungsachsen Datensatz 5 Werte bestimmt werden.

    Parameters:
    resizeGroesse - Groesse um die das Array (multipliziert mit 5) vergroeßert wird.

    setBit

    int setBit(int n,
               int pos)
    Setzen eines Bit an der Postion pos.

    Parameters:
    n - Bit das Gesetzt wird.
    pos - Position an der das Bit gesetzt wird.
    Returns:
    Bit.

    setZaehlstelle

    public void setZaehlstelle(LangZeitZaehlStelle zaehlstelle)
                        throws ChannelException
    Description copied from class: AbstractDataChannelBASt

    setzt die Zählstelle.

    Specified by:
    setZaehlstelle in class AbstractDataChannelBASt
    Parameters:
    zaehlstelle - LangZeitZaehlStelle
    Throws:
    ChannelException - .

    toByte

    private byte toByte(int intValueOfByte)
    Die Methode toByte konvertiert den uebergebenen Integerwert in einen Bytewert.

    Parameters:
    intValueOfByte - Wert der konvertiert wird.
    Returns:
    konvertierte Bytewert.

    writeHeader

    protected void writeHeader(java.io.PrintWriter writer)
                        throws java.io.IOException
    Description copied from class: FileDataChannel
    ermöglicht das Schreiben von Daten am Anfang der Datei.

    Specified by:
    writeHeader in class FileDataChannel
    Parameters:
    writer - PrintWriter
    Throws:
    java.io.IOException - wenn beim Schreiben _Fehler auftreten.

    writeHeaderFTP

    protected void writeHeaderFTP(java.io.BufferedOutputStream bos)
                           throws java.io.IOException
    Specified by:
    writeHeaderFTP in class FileDataChannel
    Throws:
    java.io.IOException