Class Teildatensatz

All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
TeildatensatzXml

public class Teildatensatz extends Datensatz
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
  • 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(Datensatz 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 Satznummer getSatznummer()
      Liefert die Satznummer zurueck. Sie loest die alte getNummer()-Methode ab.
      Returns:
      Satznummer als einzelnes Zeichen ('1' ... '9')
      Since:
      5.0
    • 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
    • setSparte

      public void setSparte(int x)
      Description copied from class: Datensatz
      Setzt die Sparte.

      Diese Methode ist nur sinnvoll bei Satzarten, die ueberhaupt eine Sparte (Produkt) haben (an ByteAdresse 11 mit Laenge 3) wie z.B. "0200", "0100", "0210.000", "0400" und nicht nur fuer eine einzige Sparte gedacht sind. Passt die Sparte nicht zur Satzart, wird eine IllegalArgumentException geworfen, wenn die Validierung an ist.

      Overrides:
      setSparte in class Datensatz
      Parameters:
      x - z.B. 70 (Rechtsschutz)
    • getSparte

      public int getSparte()
      Description copied from class: Datensatz
      Liefert den Inhalt des Sparten-Felds an Byte-Adresse 11.
      Overrides:
      getSparte in class Datensatz
      Returns:
      die Sparte
    • 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 und unterschiedliche Werte hat. 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.

      In der Beschreibung zur 2018er-Version gibt es bei der Feld-Nr. bei manchen Satzarten Ungereimtheiten. So hat im Teildatensatz 1 der Satzart 100 das Feld fuer die Satznummer die Feld-Nr. 27 und es gibt kein Feld 26. Auch bei diesen Satzarten ist eine Luecke in der Nummerierung:

      • Satart 0100, TDS 1: Feld 26 fehlt
      • Satart 0210.050, TDS 1: Feld 34 fehlt
      • Satart SA0220.010.13.1, TDS 1: Feld 45 fehlt
      • Satart 0600, TDS 2: Feld 12 fehlt
      • Satart 0600, TDS 3: Feld 13 fehlt
      • Satart 9950, TDS 1: Feld 10 fehlt
      • Satart 9951, TDS 1: Feld 10 fehlt

      In der 2023er-Version wurde das in der Beschreibung korrigiert. Um den Zugriff zu vereinfachen, wird daher bei Feld-Nummern, die zu gross sind, das letzte Feld zurueckgegeben.

      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: Mit 4.4 wird nicht nur der Name ueberprueft sondern alle Attribute.

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

      public boolean hasFeld(ByteAdresse adresse)
      Ueberprueft, ein Feld mit der angegebenen Adresse vorhanden ist.
      Overrides:
      hasFeld in class Satz
      Parameters:
      adresse - gesuchte Adresse
      Returns:
      true, if successful
      Since:
      7.1
    • 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: