Klasse Satz

java.lang.Object
gdv.xport.satz.Satz
Alle implementierten Schnittstellen:
Cloneable
Bekannte direkte Unterklassen:
Datensatz, Nachsatz, Teildatensatz, Vorsatz

public abstract class Satz extends Object implements Cloneable
Die Satz-Klasse ist die oberste Klasse, von der alle weiteren Saetze abgeleitet sind.
Autor:
oliver
  • Konstruktordetails

    • Satz

      public Satz(SatzTyp art, int n)
      Mit diesem Konstruktor wird ein Satz fuer die entsprechende Satzart mit n Teildatensaetzen angelegt.
      Parameter:
      art - z.B. Satzart 0100 (f. Adressteil)
      n - Anzahl der Teildatensaetze
      Seit:
      5.0
    • Satz

      protected Satz(SatzTyp art, int n, Config cfg)
    • Satz

      protected Satz()
    • Satz

      public Satz(Satz satz, int n)
      The Constructor.
      Parameter:
      satz - z.B. Satzart 0100 (f. Adressteil)
      n - Anzahl der Teildatensaetze
    • Satz

      public Satz(SatzTyp art, List<? extends Teildatensatz> tdsList)
      Instanziiert einen neuen Satz.
      Parameter:
      art - Satzart, z.B. 100 (f. Adressteil)
      tdsList - Liste mit den Teildatensaetzen
      Seit:
      5.0
    • Satz

      protected Satz(Satz satz, List<? extends Teildatensatz> tdsList)
      Instanziiert einen neuen Satz.
      Parameter:
      satz - z.B. 100 (f. Adressteil)
      tdsList - Liste mit den Teildatensaetzen
  • Methodendetails

    • getConfig

      public final Config getConfig()
      Liefert die aktuelle Konfiguration zurueck.
      Gibt zurück:
      aktuelles Config-Objekt
      Seit:
      6.2
    • getTeildatensaetze

      public final List<Teildatensatz> getTeildatensaetze()
      Liefert alle Teildatensaetze zurueck. Aus Performance-Gruenden wird keine Kopie zurueckgegeben. Sollte eine Kopie gewuenscht sein, kann man auf cloneTeildatensaetze() zurueckgreifen.
      Gibt zurück:
      Teildatensaetze
      Seit:
      0.2
    • cloneTeildatensaetze

      protected final List<Teildatensatz> cloneTeildatensaetze()
      Hier wird eine Kopie aller Teildatensaetze zurueckgegeben.
      Gibt zurück:
      Liste mit Teildatensaetzen
      Seit:
      1.0
    • getNumberOfTeildatensaetze

      public final int getNumberOfTeildatensaetze()
      Liefert die Anzahl der Teildatensaetze.
      Gibt zurück:
      Anzahl der Teildatensaetze.
      Seit:
      0.6
    • getTeildatensatz

      public final Teildatensatz getTeildatensatz(int n)
      Liefert den n-ten Teildatensatz aus der Liste der Teildatensätze zurueck.

      Achtung n ist nicht immer identisch mit der Satznummer des Teildatensatzes (siehe z.B. Satzart 0221.140). Dazu besser getTeildatensatzBySatzNr(int) verwenden.

      Parameter:
      n - Nummer (Index n-1 in der Liste der Teildatensätze) des Teildatensatzes (beginnend mit 1)
      Gibt zurück:
      the teildatensatz
      Seit:
      0.2
    • getTeildatensatzBySatzNr

      public final Teildatensatz getTeildatensatzBySatzNr(int n)
      Liefert den Teildatensatz mit der wirklichen Satznummer n zurueck.
      Parameter:
      n - Satznummer des Teildatensatzes
      Gibt zurück:
      the teildatensatz
    • removeAllTeildatensaetze

      public final void removeAllTeildatensaetze()
      Hiermit koennen Unterklassen alle Teildatensaetze wieder entfernen (wird z.B. vom Satz 0220.030 benoetigt).
      Seit:
      0.4
    • removeTeildatensatz

      public final void removeTeildatensatz(int n)
      Entfernt den gewuenschten Teildatensatz. Ein neuer Teildatensatz kann ueber add() hinzugefuegt werden.
      Parameter:
      n - der gewuenschte Teildatensatz (beginnend bei 1)
      Seit:
      0.4
      Siehe auch:
    • removeTeildatensatzBySatzNr

      public final void removeTeildatensatzBySatzNr(int n)
      Entfernt den gewuenschten Teildatensatz mit der wirklichen Satznummer n.
      Parameter:
      n - wirkliche Satznummer des Teildatensatzes
    • add

      public final void add(Teildatensatz tds)
      Und hierueber kann ein Teildatensatz hinzugefuegt werden.
      Parameter:
      tds - der neue (gefuellte) Teildatensatz
      Seit:
      0.4
    • add

      public void add(Feld feld)
      Fuegt das uebergebene Feld zur Liste der Datenfelder hinzu.
      Parameter:
      feld - das Feld
    • addAll

      public void addAll(Feld feld)
      Fuegt das uebergebene Feld in jeden Teildatensatz hinzu.
      Parameter:
      feld - das Feld
      Seit:
      6.1
    • add

      public void add(Feld feld, int teildatensatzNr)
      Fuegt das uebergebene Feld zur Liste der Datenfelder hinzu.
      Parameter:
      feld - the feld
      teildatensatzNr - the teildatensatz nr
    • addFiller

      public void addFiller()
      Fuellt fuer alle leeren Stellen ein entsprechendes Fuellfeld auf.
    • remove

      public void remove(String name)
      Falls ein Feld zuviel gesetzt wurde, kann es mit 'remove" wieder entfernt werden.
      Parameter:
      name - Name des Feldes
    • remove

      public void remove(Bezeichner bezeichner)
      Falls ein Feld zuviel gesetzt wurde, kann es mit 'remove" wieder entfernt werden.
      Parameter:
      bezeichner - der Feld-Beezeichner
      Seit:
      1.0
    • setFeld

      public void setFeld(String name, String value)
      Setzt das angegebene Feld in allen Teildatensaetzen, in denen es gefunden wird. Normalerweise braeuchten wir eigentlich nur die erste Fundstelle setzen, da die anderen Teildatensaetze (hoffentlich) auf die gleiche Referenz verweisen - aber sicher ist sicher. Falls das Feld nicht gefunden wird, wird eine IllegalArgumentException geworfen.
      Parameter:
      name - Name des Felds (Bezeichnung)
      value - the value
      Seit:
      5.2
    • setFeld

      public void setFeld(Bezeichner name, Integer value)
      Setzt den Inhalt des gewuenschten Feldes.
      Parameter:
      name - Name des Felds (Bezeichnung)
      value - neuer Inhalt
      Seit:
      5.2
    • setFeld

      public void setFeld(Bezeichner name, String value)
      Setzt das angegebene Feld in allen Teildatensaetzen, in denen es gefunden wird. Normalerweise braeuchten wir eigentlich nur die erste Fundstelle setzen, da die anderen Teildatensaetze (hoffentlich) auf die gleiche Referenz verweisen - aber sicher ist sicher. Falls das Feld nicht gefunden wird, wird eine IllegalArgumentException geworfen.
      Parameter:
      name - Name des Felds (Bezeichnung)
      value - the value
      Seit:
      5.2
    • setFeld

      public void setFeld(ByteAdresse adresse, String value)
      Setzt das angegebene Feld anhand der Adresse in allen Teildatensaetzen. Das macht nur Sinn fuer Felder, die in allen Teildatensaezten vorkommen (z.B. die ersten 7 Felder). Moechte man hingegen nur das Feld in einem Teildatensatz setzen, so sollte man sich den entsprechenden Teildatensatz holen und das Feld dort setzen.
      Parameter:
      adresse - Adresse des Felds (Bezeichnung)
      value - neuer Wert
      Seit:
      6.2
    • setVermittler

      public final void setVermittler(String vermittler)
      Setzt den Vermittler in das entsprechende Feld.
      Parameter:
      vermittler - der Vermittler
      Seit:
      5.2
    • getVermittler

      public final String getVermittler()
      Liefert den Vermittler zurueck.
      Gibt zurück:
      Vermittler
      Seit:
      5.2
    • setGdvSatzartNummer

      protected void setGdvSatzartNummer(String x)
      Setzt die Satzartnummer einer Satzart. Nicht verwechseln mit Satznummer!
      Parameter:
      x - z.B. "6" fuer Satzart 0220, Sparte 010, Wagnisart 2, Bezugsrechte
    • getGdvSatzartNummer

      public String getGdvSatzartNummer()
      Gets die Satzartnummer. Nicht verwechseln mit Satznummer!

      Manche Satzarten wie Leben haben ein Element fuer die Satznummer, im Feld Satzartnummer gespeichert. Dies ist z.B. fuer Satz 0220.010.13.6 (Bezugsrechte) der Fall.

      Gibt zurück:
      die Satzartnummer als String
    • getGdvSatzartName

      public String getGdvSatzartName()
      Gibt zurück:
      Name der GDV-Satzart gemaess Online-Version bei gdv-online.de
    • setGdvSatzartName

      protected void setGdvSatzartName(String string)
      Setzen des Namens einer Gdv-Satzart.

      Der string wird mit dem Trennzeichen '.' an den bisherigen Inhalt angehaengt.

      Parameter:
      string - Satzart-Name
    • resetGdvSatzartName

      public void resetGdvSatzartName()
    • getSatzversion

      public final AlphaNumFeld getSatzversion()
      Liefert die Satzversion
      Gibt zurück:
      die Satzversion
    • getVersion

      public final String getVersion()
      Liefert die Version des Satzes.
      Gibt zurück:
      z.B. "1.2"
      Seit:
      5.2
    • getFeld

      public Feld getFeld(String name) throws IllegalArgumentException
      Liefert das gewuenschte Feld.
      Parameter:
      name - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      das gesuchte Feld
      Löst aus:
      IllegalArgumentException - falls es das Feld nicht gibt
    • hasFeld

      public boolean hasFeld(Bezeichner bezeichner)
      Fraegt ab, ob das entsprechende Feld vorhanden ist.
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      true / false
    • getFeld

      public Feld getFeld(Bezeichner bezeichner) throws IllegalArgumentException
      Liefert das gewuenschte Feld.
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      das gesuchte Feld
      Löst aus:
      IllegalArgumentException - falls es das Feld nicht gibt
    • getFeld

      public Feld getFeld(ByteAdresse adresse)
      Holt sich das entsprechende Feld aus dem Teildatensatz.
      Parameter:
      adresse - ByteAdresse des entsprechende Feld
      Gibt zurück:
      das Feld aus dem ersten Teildatensatz.
      Seit:
      6.2
    • getFeld

      public <T extends Feld> T getFeld(Bezeichner bezeichner, Class<T> clazz)
      Liefert das gewuenschte Feld im gewuenschten Typ. Falls als Typ BetragMitVorzeichen gewuenscht wird, wird das Feld mit dem angegebenen Bezeichner und das benachbarte Vorzeichenfeld zusammengefasst und als Einheit zurueckgegeben.
      Typparameter:
      T - Unterklasse von Feld
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      clazz - Feld-Typ
      Gibt zurück:
      das gesuchte Feld
      Löst aus:
      IllegalArgumentException - falls es das Feld nicht gibt
      Seit:
      5.0
    • getFeldInhalt

      public final String getFeldInhalt(Bezeichner bezeichner) throws IllegalArgumentException
      Liefert den Inhalt des gewuenschten Feldes.
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      Gibt zurück:
      Inhalt des Feldes (getrimmt, d.h. ohne Leerzeichen am Ende)
      Löst aus:
      IllegalArgumentException - falls es das Feld nicht gibt
      Seit:
      2.0
    • getFeld

      public final Feld getFeld(Bezeichner bezeichner, int nr) throws IllegalArgumentException
      Liefert das gewuenschte Feld.
      Parameter:
      bezeichner - gewuenschter Bezeichner des Feldes
      nr - Nummer des Teildatensatzes (1, 2, ...)
      Gibt zurück:
      NULL_FELD, falls das angegebene Feld nicht gefunden wird
      Löst aus:
      IllegalArgumentException - falls es das Feld nicht gibt
      Seit:
      2.0
    • getFeld

      public final Feld getFeld(String name, int nr)
      Liefert das gewuenschte Feld.
      Parameter:
      name - gewuenschter Bezeichner des Feldes
      nr - Nummer des Teildatensatzes (1, 2, ...)
      Gibt zurück:
      NULL_FELD, falls das angegebene Feld nicht gefunden wird
      Seit:
      0.2
    • getFeldInhalt

      public final String getFeldInhalt(String name, int nr)
      Liefert den Inhalt des gewuenschten Feldes.
      Parameter:
      name - gewuenschter Bezeichner des Feldes
      nr - Nummer des Teildatensatzes (1, 2, ...)
      Gibt zurück:
      Inhalt des Feldes (getrimmt, d.h. ohne Leerzeichen am Ende)
      Seit:
      0.3
    • getSatzartFeld

      public NumFeld getSatzartFeld()
      Liefert die Satzart.
      Gibt zurück:
      the satzart
    • getSatzart

      public int getSatzart()
      Liefert die Satzart zurueck.
      Gibt zurück:
      die Satzart als int
      Seit:
      0.3
    • getSatzTyp

      public SatzTyp getSatzTyp()
      Liefert den Satz-Typ zurueck. Der Satz-Typ ist eine Zusammenfassung aus Satzart und Sparte.
      Gibt zurück:
      den Satz-Typ
      Seit:
      1.0
    • hasSparte

      public boolean hasSparte()
      Schaut nach einem Feld "SPARTE" und liefert true zurueck, falls es existiert.
      Gibt zurück:
      true, falls Sparten-Feld vorhanden ist
      Seit:
      0.9
    • hasWagnisart

      public boolean hasWagnisart()
      Schaut nach einem Feld "WAGNISART" und liefert true zurueck, falls es existiert.
      Gibt zurück:
      true, falls Wagnisart-Feld vorhanden ist
      Seit:
      1.0
    • hasKrankenFolgeNr

      public boolean hasKrankenFolgeNr()
      Schaut nach dem 10. Feld in Satzart 220, Sparte 20 (Kranken) und liefert true zurueck, falls es existiert.
      Gibt zurück:
      true, falls das Feld existiert
      Seit:
      18.04.2018
    • hasBausparenArt

      public boolean hasBausparenArt()
      /** Schaut nach dem 9. Feld in Satzart 220, Sparte 580 (Bausparen) und liefert true zurueck, falls es existiert.
      Gibt zurück:
      true, falls das Feld existiert
      Seit:
      30.06.2021
    • getSparte

      public int getSparte()
      Liefert den Inhalt des Sparten-Felds. Vorher sollte allerdings mittels hasSparte() geprueft werden, ob der Satz ein Sparten-Feld besitzt.
      Gibt zurück:
      die Sparte
      Seit:
      0.9
    • getWagnisart

      public final String getWagnisart()
      Liefert den Inhalt des Wagnisart-Felds. Vorher sollte allerdings mittels hasWagnisart() geprueft werden, ob der Satz ein Wagnisart-Feld besitzt.

      Anmerkung: Vor 1.0 war diese Methode noch in der Datensatz-Klasse beheimatet.

      Gibt zurück:
      die Wagnisart
    • getKrankenFolgeNr

      public final String getKrankenFolgeNr()
      Liefert den Inhalt des 10. Feldes in Satzart 220, Sparte 20 (Kranken). Vorhersollte allerdings mittels hasKrankenFolgeNr() geprueft werden, ob der Satz eine KrankenfolgeNr-Feld besitzt.

      Gibt zurück:
      die KrankenFolgeNr
    • getBausparenArt

      public final String getBausparenArt()
      Liefert den Inhalt des 9. Feldes in Satzart 0220, Sparte 580 (Bausparen). Vorher sollte allerdings mittels hasBausparenArt() geprueft werden, ob der Satz ein Bausparenart-Feld besitzt.

      Gibt zurück:
      die Bausparenart
    • export

      public void export(Writer writer) throws IOException
      Exportiert den Satz.
      Parameter:
      writer - the writer
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • export

      public void export(File file) throws IOException
      Exportiert den Satz.
      Parameter:
      file - Datei
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • export

      public void export(Writer writer, String eod) throws IOException
      Export.
      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.
    • export

      public void export(OutputStream ostream) throws IOException
      Parameter:
      ostream - z.B. System.out
      Löst aus:
      IOException - falls mal was schief geht
      Seit:
      0.3
    • importFrom

      public Satz importFrom(String s) throws IOException
      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.

      Parameter:
      s - String zum Importieren
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • removeUnusedTeildatensaetze

      protected void removeUnusedTeildatensaetze(SortedSet<Integer> usedIndexes)
    • importFrom

      public Satz importFrom(File file) throws IOException
      Importiert einen Satz von der angegebenen Datei.
      Parameter:
      file - die Import-Datei
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • getSatzlength

      protected final int getSatzlength(String s)
      Ermittelt die Satzlaenge. Je nachdem, ob das Zeilenende aus keinem, einem oder zwei Zeichen besteht, wird 256, 257 oder 258 zurueckgegeben.
      Parameter:
      s - der komplette Satz
      Gibt zurück:
      256, 257 oder 258
      Seit:
      0.4
    • importFrom

      public final Satz importFrom(InputStream istream) throws IOException
      Import von einem InputStream.
      Parameter:
      istream - the istream
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • importFrom

      public final Satz importFrom(Reader reader) throws IOException
      Import von einem Reader.
      Parameter:
      reader - the reader
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • importFrom

      public final Satz importFrom(PushbackLineNumberReader reader) throws IOException
      Der hier verwendete PushbackReader wird benoetigt, damit die gelesene Satzart und Sparte wieder zurueckgesetllt werden kann.
      Parameter:
      reader - the reader
      Gibt zurück:
      Satz zur Weiterverabeitung (seit 5.2)
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • matchesNextTeildatensatz

      protected boolean matchesNextTeildatensatz(PushbackLineNumberReader reader, char[] lastFeld1To7, Character satznummer) throws IOException
      Prueft, ob die kommende Zeile noch zu dem aktuellen Datensatz gehoert. D.h. es wird geprueft, ob es ein weiterer Teildatensatz oder ein neuer Datensatz ist.

      Unterklassen (wie Datensatz) sind dafuer verantwortlich, dass auch noch die Sparte/... ueberprueft wird, ob sie noch richtig ist oder ob da schon der naechste Satz beginnt. Hier (fuer den allgemeinen Fall) wird nur die Satzart ueberprueft.

      Parameter:
      reader - den Reader
      lastFeld1To7 - die Felder 1 .. 7 aus dem letzten Datensatz
      satznummer - die Satznummer
      Gibt zurück:
      true wenn wenigstens die Satzart uebereinstimmt (nur für Vor/Nachsatz anwendbar)
      Löst aus:
      IOException - bei I/O-Fehlern
      Seit:
      0.5.1
    • readSatzart

      @Deprecated public static int readSatzart(PushbackLineNumberReader reader) throws IOException
      Veraltet.
      wurde nach Importer.readSatzart() verschoben
      Liest 4 Bytes, um die Satzart zu bestimmen und stellt die Bytes anschliessend wieder zurueck in den Reader.
      Parameter:
      reader - the reader
      Gibt zurück:
      Satzart
      Löst aus:
      IOException - Signals that an I/O exception has occurred.
    • isValid

      public boolean isValid()
      Aus Performance-Gruenden stuetzt sich diese Methode nicht auf die validate()-Methode ab.
      Gibt zurück:
      true/false
    • isComplete

      public boolean isComplete()
      Sind alle Teildatensaetze eines Satzes vorhanden und ausgefuellt, liefert diese Methode 'true' zurueck.
      Gibt zurück:
      false, wenn ein Teildatensatz fehlt
      Seit:
      5.2
    • mergeWith

      public void mergeWith(Satz other)
      Vereinigt den anderen Satz mit dem aktuellen Satz, falls das moeglich ist. In diesem Fall werden aus dem anderen Satz alle Teildatensaetze entfernt.
      Parameter:
      other - der andere Satz, aus dem die Teildatensaetze gezogen werden
      Seit:
      5.2
    • validate

      public List<net.sf.oval.ConstraintViolation> validate()
      Validiert die einzelnen Teildatensaetze mit der eingestellten Standard-Konfiguration.
      Gibt zurück:
      Liste mit Constraint-Verletzungen
    • validate

      public List<net.sf.oval.ConstraintViolation> validate(Config validationConfig)
      Im Unterschied zur normalen validate-Methode kann man hier eine die Validierung ueber Config.LAX oder Config.STRICT verschaerfen oder abmildern.
      Parameter:
      validationConfig - z.B. Config.STRICT
      Gibt zurück:
      Liste mit Constraint-Verletzungen
      Seit:
      5.4
    • toString

      public final String toString()
      Setzt außer Kraft:
      toString in Klasse Object
    • toShortString

      public String toShortString()
      To short string.
      Gibt zurück:
      the string
    • toLongString

      public String toLongString()
      To long string.
      Gibt zurück:
      the string
    • equals

      public boolean equals(Object obj)
      Zwei Saetze sind gleich, wenn sie die gleichen Daten besitzen. Die Idee dabei ist, dass wir die beiden Saetze exportieren und dann das Resultat vergleichen.
      Setzt außer Kraft:
      equals in Klasse Object
      Parameter:
      obj - der andere Satz
      Gibt zurück:
      true, wenn beide Saetze gleich sind
      Siehe auch:
    • hashCode

      public int hashCode()
      Setzt außer Kraft:
      hashCode in Klasse Object
    • getFelder

      public Collection<Feld> getFelder()
      Liefert die Felder aller Teildatensaetze zurueck.
      Gibt zurück:
      the felder
      Seit:
      1.2
    • clone

      public Object clone() throws CloneNotSupportedException
      Legt eine Kopie des Satzes an.
      Setzt außer Kraft:
      clone in Klasse Object
      Gibt zurück:
      Kopie
      Löst aus:
      CloneNotSupportedException - sollte nicht auftreten
      Siehe auch: