Klasse Teildatensatz

Alle implementierten Schnittstellen:
Cloneable
Bekannte direkte Unterklassen:
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.
Seit:
04.10.2009
Autor:
ob@aosd.de
  • Konstruktordetails

    • Teildatensatz

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

      public Teildatensatz(SatzTyp satzTyp, int nr)
      Instantiiert einen neuen Teildatensatz mit der angegebenen Satzart und Nummer.
      Parameter:
      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.
      Parameter:
      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.
      Parameter:
      other - der andere Teildatensatz
  • Methodendetails

    • getSatzartFeld

      public NumFeld getSatzartFeld()
      Beschreibung aus Klasse kopiert: Satz
      Liefert die Satzart.
      Setzt außer Kraft:
      getSatzartFeld in Klasse Satz
      Gibt zurück:
      the satzart
    • getSatznummer

      public Satznummer getSatznummer()
      Liefert die Satznummer zurueck. Sie loest die alte getNummer()-Methode ab.
      Gibt zurück:
      Satznummer als einzelnes Zeichen ('1' ... '9')
      Seit:
      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.
      Setzt außer Kraft:
      add in Klasse Satz
      Parameter:
      feld - Feld mit Name
    • remove

      public void remove(Feld feld)
      Falls ein Feld zuviel gesetzt wurde, kann es mit 'remove" wieder entfernt werden.
      Parameter:
      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.
      Setzt außer Kraft:
      remove in Klasse Satz
      Parameter:
      bezeichner - der Feld-Beezeichner
      Seit:
      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.
      Setzt außer Kraft:
      setFeld in Klasse Satz
      Parameter:
      name - der Name des Feldes
      value - der gewuenschte Werte als String
      Seit:
      5.2
    • set

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

      public void setFeld(ByteAdresse adresse, String value)
      Setzt das gewuenschte Feld anhand der uebergebenen ByteAdresse.
      Setzt außer Kraft:
      setFeld in Klasse Satz
      Parameter:
      adresse - Adresse des gewuenschten Feldes
      value - Wert
      Seit:
      5.2
    • setSparte

      public void setSparte(int x)
      Beschreibung aus Klasse kopiert: 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.

      Setzt außer Kraft:
      setSparte in Klasse Datensatz
      Parameter:
      x - z.B. 70 (Rechtsschutz)
    • getSparte

      public int getSparte()
      Beschreibung aus Klasse kopiert: Datensatz
      Liefert den Inhalt des Sparten-Felds an Byte-Adresse 11.
      Setzt außer Kraft:
      getSparte in Klasse Datensatz
      Gibt zurück:
      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).

      Setzt außer Kraft:
      getFeld in Klasse Satz
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      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.

      Parameter:
      nr - z.B. 1
      Gibt zurück:
      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.
      Setzt außer Kraft:
      getFeld in Klasse Satz
      Parameter:
      adresse - zwischen 1 und 256
      Gibt zurück:
      das entsprechende Feld
      Seit:
      5.0
    • hasFeld

      public boolean hasFeld(Bezeichner bezeichner)
      Fraegt ab, ob das entsprechende Feld vorhanden ist.
      Setzt außer Kraft:
      hasFeld in Klasse Satz
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      true / false
      Seit:
      1.0
      Siehe auch:
    • 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.

      Parameter:
      feld - the feld
      Gibt zurück:
      true, if successful
      Seit:
      1.0
    • hasFeld

      public boolean hasFeld(ByteAdresse adresse)
      Ueberprueft, ein Feld mit der angegebenen Adresse vorhanden ist.
      Setzt außer Kraft:
      hasFeld in Klasse Satz
      Parameter:
      adresse - gesuchte Adresse
      Gibt zurück:
      true, if successful
      Seit:
      7.1
    • getFelder

      public final Collection<Feld> getFelder()
      Liefert alle Felder in der Reihenfolge innerhalb des Teildatensatzes zurueck.
      Setzt außer Kraft:
      getFelder in Klasse Satz
      Gibt zurück:
      List der Felder (sortiert)
      Seit:
      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.
      Gibt zurück:
      Liste der speziellen Kennzeichen
    • export

      public void export(Writer writer) throws IOException
      Beschreibung aus Klasse kopiert: Satz
      Exportiert den Satz.
      Setzt außer Kraft:
      export in Klasse Satz
      Parameter:
      writer - the writer
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • export

      public void export(Writer writer, String eod) throws IOException
      Beschreibung aus Klasse kopiert: Satz
      Export.
      Setzt außer Kraft:
      export in Klasse Satz
      Parameter:
      writer - the writer
      eod - das End-of-Datensatz- oder Trennzeichen (z.B. linefeed)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • importFrom

      public Teildatensatz importFrom(String content) throws IOException
      Beschreibung aus Klasse kopiert: 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.

      Setzt außer Kraft:
      importFrom in Klasse Satz
      Parameter:
      content - String zum Importieren
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • isValid

      public boolean isValid()
      Beschreibung aus Klasse kopiert: Satz
      Aus Performance-Gruenden stuetzt sich diese Methode nicht auf die validate()-Methode ab.
      Setzt außer Kraft:
      isValid in Klasse Satz
      Gibt zurück:
      true/false
    • validate

      public List<net.sf.oval.ConstraintViolation> validate(Config validationConfig)
      Beschreibung aus Klasse kopiert: Satz
      Im Unterschied zur normalen validate-Methode kann man hier eine die Validierung ueber Config.LAX oder Config.STRICT verschaerfen oder abmildern.
      Setzt außer Kraft:
      validate in Klasse Satz
      Parameter:
      validationConfig - z.B. Config.STRICT
      Gibt zurück:
      Liste mit Constraint-Verletzungen
    • toShortString

      public String toShortString()
      Beschreibung aus Klasse kopiert: Satz
      To short string.
      Setzt außer Kraft:
      toShortString in Klasse Satz
      Gibt zurück:
      the string
    • clone

      public Object clone()
      Legt eine Kopie des Teildatensatzes an.
      Setzt außer Kraft:
      clone in Klasse Satz
      Gibt zurück:
      Kopie
      Siehe auch: