Class Teildatensatz

java.lang.Object
gdv.xport.satz.Satz
gdv.xport.satz.Teildatensatz
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
TeildatensatzXml

public class Teildatensatz extends Satz
Ein Teildatensatz hat immer genau 256 Bytes. Dies wird beim Export beruecksichtigt. Und ein Teildatensatz besteht aus mehreren Datenfeldern.
Since:
04.10.2009
Author:
ob@aosd.de
  • Field Details

    • satznummer

      protected Satznummer satznummer
      Dieses Feld brauchen wir, um die Satznummer abzuspeichern.
  • Constructor Details

    • Teildatensatz

      public Teildatensatz(SatzTyp satzTyp)
      Instantiiert einen neuen Teildatensatz mit der angegebenen Satzart.
      Parameters:
      satzTyp - z.B. 0220.050
    • Teildatensatz

      public Teildatensatz(SatzTyp satzTyp, int nr)
      Instantiiert einen neuen Teildatensatz mit der angegebenen Satzart und Nummer.
      Parameters:
      satzTyp - z.B. 0220.050
      nr - Nummer des Teildatensatzes (zwischen 1 und 9)
    • Teildatensatz

      public Teildatensatz(Satz satz, int nr)
      Instantiiert einen neuen Teildatensatz mit der angegebenen Satzart, Nummer und Version des zugeheorigen Satzes.
      Parameters:
      satz - z.B. 100
      nr - Nummer des Teildatensatzes (zwischen 1 und 9)
    • Teildatensatz

      public Teildatensatz(Teildatensatz other)
      Dies ist der Copy-Constructor, falls man eine Kopie eines Teildatensatzes braucht.
      Parameters:
      other - der andere Teildatensatz
  • Method Details

    • getSatzartFeld

      public NumFeld getSatzartFeld()
      Description copied from class: Satz
      Liefert die Satzart.
      Overrides:
      getSatzartFeld in class Satz
      Returns:
      the satzart
    • getSatznummer

      public Zeichen getSatznummer()
      Liefert die Satznummer zurueck. Sie wurde aus Symmetriegruenden zu setSatznummer(Zeichen) eingefuehrt und loest die alte getNummer()-Methode ab.
      Returns:
      Satznummer als einzelnes Zeichen ('1' ... '9')
      Since:
      5.0
    • setSatznummer

      @Deprecated public void setSatznummer(Zeichen satznummer)
      Deprecated.
      ab 5.1 nicht mehr noetig, da getSatznummer() jetzt die tatsaechliche Satznummer liefert
      Da nicht alle Satzarten die Satznummer am Ende des Satzes haben, kann man dies ueber diese Methode korrigieren.

      TODO: wird ab v7 nicht mehr unterstuetzt

      Parameters:
      satznummer - das neue Feld fuer die Satznummer
      Since:
      3.2
    • add

      public void add(Feld feld)
      Fuegt das angegebene Feld in den Teildatensatz ein. Bei Einfuegen wird ueberprueft, ob es zu Ueberschneidungen mit anderen Feldern kommt. Ausnahme hierbei ist das Satznummern-Feld auf Byte 256, mit dem der Teildatensatz vorinitialisiert wurde. Kommt es hier zu einer Ueberlappung, wird das Satznummern-Feld entfernt, da nicht alle Saetze dieses Feld besitzen.
      Overrides:
      add in class Satz
      Parameters:
      feld - Feld mit Name
    • remove

      public void remove(Feld feld)
      Falls ein Feld zuviel gesetzt wurde, kann es mit 'remove" wieder entfernt werden.
      Parameters:
      feld - das Feld, das entfernt werden soll
    • remove

      public void remove(Bezeichner bezeichner)
      Falls ein Feld zuviel gesetzt wurde, kann es mit 'remove" wieder entfernt werden.
      Overrides:
      remove in class Satz
      Parameters:
      bezeichner - der Feld-Beezeichner
      Since:
      1.0
    • setFeld

      public void setFeld(Bezeichner name, String value)
      Setzt das gewuenschte Feld. Falls es nicht vorhanden ist, wird analog zur Oberklasse eine IllegalArgumentException geworfen.
      Overrides:
      setFeld in class Satz
      Parameters:
      name - der Name des Feldes
      value - der gewuenschte Werte als String
      Since:
      5.2
    • set

      @Deprecated public void set(ByteAdresse adresse, String value)
      Deprecated.
      wurde durch setFeld(ByteAdresse, String) ersetzt
      Setzt das gewuenschte Feld anhand der uebergebenen ByteAdresse.
      Parameters:
      adresse - Adresse des gewuenschten Feldes
      value - Wert
      Since:
      5.0
    • setFeld

      public void setFeld(ByteAdresse adresse, String value)
      Setzt das gewuenschte Feld anhand der uebergebenen ByteAdresse.
      Overrides:
      setFeld in class Satz
      Parameters:
      adresse - Adresse des gewuenschten Feldes
      value - Wert
      Since:
      5.2
    • getFeld

      public Feld getFeld(Bezeichner bezeichner)
      Liefert das gewuenschte Feld.

      Falls kein Feld mit dem Bezeichner vorhanden ist, wird eine IllegalArgumentException geworfen. Ebenso wenn das Feld nicht eindeutig ist. Dann gibt es eine NotUniqueException (Ausnahme: Satznummer).

      Overrides:
      getFeld in class Satz
      Parameters:
      bezeichner - gewuenschter Bezeichner des Feldes
      Returns:
      das gesuchte Feld
    • getFeld

      public Feld getFeld(int nr)
      Liefert das Feld mit der gewuenschten Nummer zurueck.
      Parameters:
      nr - z.B. 1
      Returns:
      das Feld (z.B. mit der Satzart)
    • getFeld

      public Feld getFeld(ByteAdresse adresse)
      Liefert das Feld mit der angegebenen Byte-Adresse. Im Gegensatz zur Nr. in getFeld(int) aendert sich diese nicht, wenn neue Elemente in einem Teildatensatz hinzukommen.
      Overrides:
      getFeld in class Satz
      Parameters:
      adresse - zwischen 1 und 256
      Returns:
      das entsprechende Feld
      Since:
      5.0
    • hasFeld

      public boolean hasFeld(Bezeichner bezeichner)
      Fraegt ab, ob das entsprechende Feld vorhanden ist.
      Overrides:
      hasFeld in class Satz
      Parameters:
      bezeichner - gewuenschter Bezeichner des Feldes
      Returns:
      true / false
      Since:
      1.0
      See Also:
    • hasFeld

      public boolean hasFeld(Feld feld)
      Ueberprueft, ob das uebergebene Feld vorhanden ist.

      Anmerkung: Es wird nur der Name ueberprueft. D.h. es wird nicht ueberprueft, ob es evtl. einen Konflikt mit der Start- und End-Adresse gibt.

      Parameters:
      feld - the feld
      Returns:
      true, if successful
      Since:
      1.0
    • getFelder

      public final Collection<Feld> getFelder()
      Liefert alle Felder in der Reihenfolge innerhalb des Teildatensatzes zurueck.
      Overrides:
      getFelder in class Satz
      Returns:
      List der Felder (sortiert)
      Since:
      0.2
    • getSatzIdent

      public List<Zeichen> getSatzIdent()
      Liefert die Liste der speziellen Kennzeichen zur Identifikation beim Import zurueck. Jedes Element enthaelt Byte-Adresse und Inhalt.
      Returns:
      Liste der speziellen Kennzeichen
    • export

      public void export(Writer writer) throws IOException
      Description copied from class: Satz
      Exportiert den Satz.
      Overrides:
      export in class Satz
      Parameters:
      writer - the writer
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • export

      public void export(Writer writer, String eod) throws IOException
      Description copied from class: Satz
      Export.
      Overrides:
      export in class Satz
      Parameters:
      writer - the writer
      eod - das End-of-Datensatz- oder Trennzeichen (z.B. linefeed)
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • importFrom

      public Teildatensatz importFrom(String content) throws IOException
      Description copied from class: Satz
      Eigentlich wollte ich ja diese Methode "import" nennen, aber das kollidiert leider mit dem Schluesselwort "import" in Java. Inzwischen beruecksichtigt diese Import-Methode auch zusaetzlich eingestreute Newlines ("\n") oder/und Wagenruecklaeufe ("\r").

      Vor der Behebung von Issue #8 ist man davon ausgegangen, dass die Teildatensaetze hintereinander kommen und dass es keine Luecken gibt. Dies ist aber nicht der Fall. Jetzt koennen die Teildatensaetze in beliebiger Reihenfolge kommen. Nicht importierte Teildatensaetze werden am Ende aussortiert.

      Overrides:
      importFrom in class Satz
      Parameters:
      content - String zum Importieren
      Returns:
      Satz zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • isValid

      public boolean isValid()
      Description copied from class: Satz
      Aus Performance-Gruenden stuetzt sich diese Methode nicht auf die validate()-Methode ab.
      Overrides:
      isValid in class Satz
      Returns:
      true/false
    • validate

      public List<net.sf.oval.ConstraintViolation> validate(Config validationConfig)
      Description copied from class: Satz
      Im Unterschied zur normalen validate-Methode kann man hier eine die Validierung ueber Config.LAX oder Config.STRICT verschaerfen oder abmildern.
      Overrides:
      validate in class Satz
      Parameters:
      validationConfig - z.B. Config.STRICT
      Returns:
      Liste mit Constraint-Verletzungen
    • toShortString

      public String toShortString()
      Description copied from class: Satz
      To short string.
      Overrides:
      toShortString in class Satz
      Returns:
      the string
    • clone

      public Object clone()
      Legt eine Kopie des Teildatensatzes an.
      Overrides:
      clone in class Satz
      Returns:
      Kopie
      See Also: