DtausDateiParser
Date: 2015-04-26

de.jost_net.OBanToo.Dtaus

## Class DtausDateiParser

- java.lang.Object
- - de.jost_net.OBanToo.Dtaus.DtausDateiParser

-     public class DtausDateiParser
      extends java.lang.Object

  Parser für DTAUS-Dateien

  Mit dem DTAUS-Parser können DTAUS-Dateien geparst werden, die eine oder mehrere logische Dateien enthalten.

  Dem Parser kann über einen speziellen Konstruktor mitgeteilt werden, wie fehlertolerant er sein soll. Standardmässig wird das Encoding ISO-8859-1 verwendet. In einem Konstruktor kann ein anderes Encoding vorgegeben werden.

  - SPEZIFIKATIONSKONFORM - entsprechend der DTAUS-Spezifikation wird ohne Fehlertoleranz gearbeitet.
  - UMLAUTUMSETZUNG - Die Umlaute im DOS-Format werden in das DTAUS-Format konvertiert.
  - HEX00TOSPACE - Zusätzlich zur UMLAUTUMSETZUNG wird der Zeichencode 00 in Leerzeichen umgewandelt.
  - FALSCHESWAEHRUNGSKENNZEICHENERLAUBT - Ein fehlendes oder fehlerhaftes Währungskennzeichen im A-Satz wird protokolliert. Es wird jedoch keine DtausException geworfen

  Sollen verschiedene Toleranzen aktiviert werden, sind die Parameter zu addieren. Aus Kompatibilitätsgründen wird beim Parameter HEX00TOSPACE automatisch der Parameter UMLAUTUMSETZUNG aktiviert.

  Im Konstruktor wird der Parse-Vorgang gestartet. Die gesamte DTAUS-Datei verarbeitet. Die Daten werden in Objekten vom Typ "LogischeDatei" gespeichert.

  Sollte die zu parsende DTAUS-Datei fehlerhaft sein, werden entsprechende DtausExceptions geworfen.

  Nachdem das DtausDateiParser-Objekt instanziiert ist, kann über die Methode getAnzahlLogischerDateien() die Anzahl der enthaltenen logischen Dateien ermittelt werden.

  Standardmäßig beziehen sich die getASatz()-, next() und getESatz()-Methoden-Aufrufe auf die erste logische Datei. Mit setLogischeDatei(int) kann eine andere logische Datei ausgewählt werden.

  Beispiel Auflistung aller Datensätze der 2. logischen Datei:
  `DtausDateiParser p = new DtausDateiParser("/home/heiner/dtaus0.txt");
  p.setLogischeDatei(2);
  CSatz c = p.next();
  while (c != null)
  {
  System.out.println(c);
  c = p.next();
  }
  System.out.println("----");
  System.out.println(p.getASatz());
  System.out.println(p.getESatz());
  `

  Author:
    Heiner Jostkleigrewe

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private ASatz` | `asatz`
    `private java.io.InputStream` | `dtaus`
    `private java.lang.String` | `encoding`
    `private ESatz` | `esatz`
    `static int` | `FALSCHESWAEHRUNGSKENNZEICHENERLAUBT`
    `static int` | `HEX00TOSPACE`
    `private LogischeDatei` | `logdat`
    `private java.util.Vector<LogischeDatei>` | `logischeDateien`
    `static int` | `SPEZIFIKATIONSKONFORM`
    `private int` | `toleranz`
    `static int` | `UMLAUTUMSETZUNG`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DtausDateiParser(java.io.File file)`
    `DtausDateiParser(java.io.InputStream is)`
    `DtausDateiParser(java.io.InputStream is, int toleranz)`
    `DtausDateiParser(java.io.InputStream is, int toleranz, java.lang.String encoding)`
    `DtausDateiParser(java.lang.String filename)`
    `DtausDateiParser(java.lang.String filename, int toleranz)` Konstruktor mit der Möglichkeit, die Fehlertoleranz einzustellen.
    `DtausDateiParser(java.lang.String filename, int toleranz, java.lang.String encoding)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getAnzahlLogischerDateien()`
    `ASatz` | `getASatz()`
    `ESatz` | `getESatz()`
    `LogischeDatei` | `getLogischeDatei(int nr)`
    `private int` | `getSatzlaenge(java.lang.String satzlaengenfeld)` Umsetzung der logischen Satzlänge in die physikalische Satzlänge
    `private CSatz` | `internNext()`
    `private java.lang.String` | `lese()`
    `static void` | `main(java.lang.String[] args)`
    `CSatz` | `next()`
    `void` | `setLogischeDatei(int nr)` aktuelle logische Datei setzen.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### encoding

          private java.lang.String encoding

    - #### dtaus

          private java.io.InputStream dtaus

    - #### asatz

          private ASatz asatz

    - #### esatz

          private ESatz esatz

    - #### logischeDateien

          private java.util.Vector<LogischeDatei> logischeDateien

    - #### logdat

          private LogischeDatei logdat

    - #### SPEZIFIKATIONSKONFORM

          public static final int SPEZIFIKATIONSKONFORM

      See Also:
        Constant Field Values

    - #### UMLAUTUMSETZUNG

          public static final int UMLAUTUMSETZUNG

      See Also:
        Constant Field Values

    - #### HEX00TOSPACE

          public static final int HEX00TOSPACE

      See Also:
        Constant Field Values

    - #### FALSCHESWAEHRUNGSKENNZEICHENERLAUBT

          public static final int FALSCHESWAEHRUNGSKENNZEICHENERLAUBT

      See Also:
        Constant Field Values

    - #### toleranz

          private int toleranz

  - ### Constructor Detail

    - #### DtausDateiParser

          public DtausDateiParser(java.lang.String filename)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.io.File file)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.lang.String filename,
                          int toleranz)
                           throws java.io.IOException,
                                  DtausException

      Konstruktor mit der Möglichkeit, die Fehlertoleranz einzustellen.
      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.lang.String filename,
                          int toleranz,
                          java.lang.String encoding)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.io.InputStream is)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.io.InputStream is,
                          int toleranz)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### DtausDateiParser

          public DtausDateiParser(java.io.InputStream is,
                          int toleranz,
                          java.lang.String encoding)
                           throws java.io.IOException,
                                  DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

  - ### Method Detail

    - #### getAnzahlLogischerDateien

          public int getAnzahlLogischerDateien()

    - #### setLogischeDatei

          public void setLogischeDatei(int nr)
                                throws DtausException

      aktuelle logische Datei setzen. Werte von 1 bis getAnzahlLogischerDateien() sind zulässig
      Throws:
        `DtausException`

    - #### getLogischeDatei

          public LogischeDatei getLogischeDatei(int nr)

    - #### internNext

          private CSatz internNext()
                            throws java.io.IOException,
                                   DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### getASatz

          public ASatz getASatz()

    - #### next

          public CSatz next()

    - #### getESatz

          public ESatz getESatz()

    - #### lese

          private java.lang.String lese()
                                 throws java.io.IOException,
                                        DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### getSatzlaenge

          private int getSatzlaenge(java.lang.String satzlaengenfeld)
                             throws DtausException

      Umsetzung der logischen Satzlänge in die physikalische Satzlänge
      Throws:
        `DtausException`

    - #### main

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