Class SatzRegistry

java.lang.Object
gdv.xport.util.SatzRegistry
All Implemented Interfaces:
VersionHandler

public class SatzRegistry extends Object implements VersionHandler
Diese Klasse wurde von SatzFactory kopiert und so angepasst, dass auch verschiedene Instanzen fuer die jeweilige XML-Beschreibung der GDV- Datensaetze erzeugt werden koennen. Dies ist mit der SatzFactory-Klasse nicht moeglich, da sie ein rein statische Klasse ist.

Da die Klasse auch zum Registrieren eigener Satzarten gedacht ist, wurde sie in SatzRegistry umbenannt. Funktional entspricht sie aber der SatzFactory-Klasse (s.o.).

Since:
5.0
Author:
oliver (ob@aosd.de)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final gdv.xport.util.SatzRegistry.Validator
    Dieser Validator akzeptiert alle Satzarten zwischen 0 und 9999.
    static final gdv.xport.util.SatzRegistry.Validator
    Default-Validator, der nur Satzart 800 - 899 akzeptiert.
  • Method Summary

    Modifier and Type
    Method
    Description
    Liefert ein Datenpaket mit allen unterstuetzten Satzarten.
    Deprecated.
    wurde durch getSatz(SatzTyp) und generateDatensatz(SatzTyp) abgeloest
    Liefert das Release der jeweiligen XML-Beschreibung, aus der die GDV-Datensaetze erzeugt wurden.
    Hierueber kann man sich die Default-Factory mit der aktuell gueltigen XML-Beschreibung der GDV-Datensaetze holen.
    Hierueber kann man sich die Default-Factory anhand der gewuenschten Konfiguration die XML-Beschreibung der GDV-Datensaetze holen.
    getInstance(String resource)
    Hierueber kann man sich die Default-Factory mit der gewuenschten XML-Beschreibung der GDV-Datensaetze holen.
    Liefert den passenden Nachsatz.
    getSatz(SatzTyp satztyp)
    Liefert einen (normalerweise) einen Datensatz zurueck.
    static Satz
    getSatz(SatzTyp satzTyp, String version)
    Liefert den Datensatz mit der gewuenschten Version.
    getSatz(String content)
    Versucht anhand des uebergebenen Strings herauszufinden, um was fuer eine Satzart es sich handelt und liefert dann einen entsprechenden (gefuellten) Satz zurueck.
    Liefert ein Datenpaket mit den angegebenen Satzarten.
    Liefert die Version der angefragten Satzart
    Liefert den passenden Vorsatz.
    void
    register(Satz satz, SatzTyp satzNr)
    Mit dieser Methode kann ein beliebiger Satz registriert werden.
    void
    register(Satz satz, SatzTyp satzNr, gdv.xport.util.SatzRegistry.Validator validator)
    Mit dieser register-Methode kann ein eigener Validator mit uebergeben werden.
    void
    register(Class<? extends Datensatz> clazz, SatzTyp satzNr)
    Mit dieser Methode koennen eigene Klassen fuer (z.B. noch nicht unterstuetzte Datensaetze) registriert werden.
    void
    register(Class<? extends Satz> clazz, int satzart)
    Mit dieser Methode koennen eigene Klassen fuer (z.B. noch nicht unterstuetzte Datensaetze) registriert werden.
    void
    register(Class<? extends Satz> clazz, int satzart, gdv.xport.util.SatzRegistry.Validator validator)
    Mit dieser Methode kann ein Validator mit uebergeben werden.
     
    void
    Hiermit kann man eine Registrierung rueckgaengig machen (was z.B. fuer's Testen hilfreich sein kann).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • VALIDATOR

      public static final gdv.xport.util.SatzRegistry.Validator VALIDATOR
      Default-Validator, der nur Satzart 800 - 899 akzeptiert.
    • NO_VALIDATOR

      public static final gdv.xport.util.SatzRegistry.Validator NO_VALIDATOR
      Dieser Validator akzeptiert alle Satzarten zwischen 0 und 9999.
  • Method Details

    • getInstance

      public static SatzRegistry getInstance()
      Hierueber kann man sich die Default-Factory mit der aktuell gueltigen XML-Beschreibung der GDV-Datensaetze holen.
      Returns:
      Factory auf Basis von VUVM2018.xml
    • getInstance

      public static SatzRegistry getInstance(Config cfg)
      Hierueber kann man sich die Default-Factory anhand der gewuenschten Konfiguration die XML-Beschreibung der GDV-Datensaetze holen.
      Parameters:
      cfg - gewuenschte Konfiguration
      Returns:
      Factory auf Basis der uebergebenen Config
    • getInstance

      public static SatzRegistry getInstance(String resource)
      Hierueber kann man sich die Default-Factory mit der gewuenschten XML-Beschreibung der GDV-Datensaetze holen. Es wird dabei fuer die gleiche Resource auch die gleiche Instanz zurueckgegeben.
      Parameters:
      resource - z.B. "VUVM2015.xml"
      Returns:
      Factory auf Basis der uebergebenen Resource
    • getSatz

      public static Satz getSatz(SatzTyp satzTyp, String version)
      Liefert den Datensatz mit der gewuenschten Version. Dazu werden die Instanzen mit den verschiedenen XML-Beschreibungen durchsucht. Wird keine gefunden, wird der Satz der aktuellen Instanz zurueckgegeben.
      Parameters:
      satzTyp - SatzTyp
      version - gewuenschte Version
      Returns:
      Satz mit der gewuenschten Version
      Since:
      5.2
    • register

      public void register(Class<? extends Satz> clazz, int satzart)
      Mit dieser Methode koennen eigene Klassen fuer (z.B. noch nicht unterstuetzte Datensaetze) registriert werden. Die Kasse muss einen Default-Konstruktor bereitstellen. Ansonsten wird hier eine IllegalArgumentException geworfen.
      Parameters:
      clazz - the clazz
      satzart - the satzart
    • register

      public void register(Class<? extends Satz> clazz, int satzart, gdv.xport.util.SatzRegistry.Validator validator)
      Mit dieser Methode kann ein Validator mit uebergeben werden. So kann z.B. NO_VALIDATOR mit uebergeben werden, um die Default-Validierung abzuschalten. Als Default werden nur Datensaetze mit der Satzart 800 - 899 zugelassen.
      Parameters:
      clazz - the clazz
      satzart - the satzart
      validator - fuer die Validierung der Satzart
      See Also:
    • register

      public void register(Satz satz, SatzTyp satzNr)
      Mit dieser Methode kann ein beliebiger Satz registriert werden. Sie loest die alter registerEnum-Methode ab, in der ein Satz mithilfe einer Enum-Beschreibung registriert werden konnte.

      Mit der verbesserten Unterstuetzung der GDV-XML-Beschreibung in v5.0 kann jetzt auch diese XML-Beschreibung fuer die Registrierung eigener Datensaetze verwendet und hierueber registriert werden. So kann z.B. mit

       SatzRegistry.getDefault().register(SatzXml.of("Satz0221.051.xml"), SatzTyp.of("0221.051"));
       

      eine eigene Beschreibung fuer Satzart 0221.051 registriert werden.

      Parameters:
      satz - Satz-Vorlage (z.B. SatzXml.of("Satz0221.051.xml"))
      satzNr - Satzart (z.B. SatzTyp.of("0221.051"))
    • register

      public void register(Satz satz, SatzTyp satzNr, gdv.xport.util.SatzRegistry.Validator validator)
      Mit dieser register-Methode kann ein eigener Validator mit uebergeben werden. Dies ist hilfreich, wenn man den vom GDV vorgegebenen Bereich fuer eigene Datensaetze (800-899) verlassen will. Dann kann man z.B. den NO_VALIDATOR uebergeben, der alle Satzarten zwischen 0 und 9999 akzeptiert.
      Parameters:
      satz - Satz-Vorlage (z.B. SatzXml.of("Satz0221.051.xml"))
      satzNr - Satzart (z.B. SatzTyp.of("0221.051"))
      validator - Validator fuer den SatzTyp
    • unregister

      public void unregister(SatzTyp typ)
      Hiermit kann man eine Registrierung rueckgaengig machen (was z.B. fuer's Testen hilfreich sein kann). Diese unregister-Methode ersetzt ab 4.2 die anderen unregister-Methoden.
      Parameters:
      typ - SatzTyp bzw. Satzart
    • register

      public void register(Class<? extends Datensatz> clazz, SatzTyp satzNr)
      Mit dieser Methode koennen eigene Klassen fuer (z.B. noch nicht unterstuetzte Datensaetze) registriert werden.
      Parameters:
      clazz - the clazz
      satzNr - the satz nr
    • getSatz

      public Satz getSatz(SatzTyp satztyp)
      Liefert einen (normalerweise) einen Datensatz zurueck. Ausser bei Satzart 0001 und 9999 (Vorsatz und Nachsatz), da dies nur normale Saetze sind.
      Parameters:
      satztyp - der Satztyp
      Returns:
      angeforderter Satz
    • getSatz

      public Satz getSatz(String content)
      Versucht anhand des uebergebenen Strings herauszufinden, um was fuer eine Satzart es sich handelt und liefert dann einen entsprechenden (gefuellten) Satz zurueck.

      Im ersten Schritt wird versucht, einen moeglichst passenden SatzTyp zu ermitteln. Zu diesem SatzTyp wird dann versucht, eine registrierte Satzart zu finden. Wenn das fehlschlaegt, wird im 2. Schritt als Ersatz eine Satzart generiert aus "satzart" und "sparte".

      ACHTUNG: Um den ganz korrekten Satzaufbau zu liefern, muesste dazu die Version der Satzatz bekannt sein! Diese Info steht immer im Vorsatz des zugehörigen Datenpaketes. Lt. Auskunft vom GDV werden z.T. noch Saetze aus Release 01.11.2009 verarbeitet. Da hier aber die aktuellste Version verwendet wird, kann der zurueckgegebene Satz mehr Felder enthalten, als die tatsaechliche Version. Diese Unschaerfe wird hier in Kauf genommen, da i.d.R. immer nur Felder hinzugefuegt werden. Dies muss beim Zugriff ueber die Feld-Nr. beachtet werden.

      Parameters:
      content - the content
      Returns:
      einen gefuellten Satz
    • getVorsatz

      public Vorsatz getVorsatz()
      Liefert den passenden Vorsatz.
      Returns:
      Vorsatz
      Since:
      5.0
    • getNachsatz

      public Nachsatz getNachsatz()
      Liefert den passenden Nachsatz.
      Returns:
      Nachsatz
      Since:
      5.0
    • getDatensatz

      @Deprecated public Datensatz getDatensatz(SatzTyp satzNr)
      Deprecated.
      wurde durch getSatz(SatzTyp) und generateDatensatz(SatzTyp) abgeloest
      Liefert den gewuenschten Datensatz. Mit der uebergebenen Satznummer wird der Datensatz spezifizert, der folgendes enthaelt:
      • Satzart (z.B. 210)
      • Sparte (z.B. 70 fuer Rechtsschutz)
      • Wagnisart (z.B. 1 fuer Kapitallebensversicherung)
      • Teildatensatz-Nummer (6 = Bezugsrechte, 7 = Auszahlungen, 8 = zukünftige Summenänderungen, 9 = Wertungssummen)

      Falls der gewuenschte Datensatz nicht registriert ist, wird der Datensatz anhand der von XmlService bestimmt.

      Im Gegensatz zu getSatz(SatzTyp) wird hier auf jeden Fall ein Datensatz zurueckgeliefert, auch wenn der SatzTyp weder registriert noch ueber den XmlService verfuegbar ist. Dies ist vor allem fuer den Import relevant, damit er nicht bei unbekannten Datensaetzen abbricht.

      Parameters:
      satzNr - z.B. SatzTyp.of("0210.070.1.6")
      Returns:
      den passenden Datensatz
    • getAllSupportedSaetze

      public Datenpaket getAllSupportedSaetze()
      Liefert ein Datenpaket mit allen unterstuetzten Satzarten.

      Satzarten, die mit register(Class, int) registriert wurden, werden nicht aufgefuehrt!

      Grund: Ein Objekt vom Typ <code>Satz</code> kann nicht auf <code>Datensatz</code> gecastet werden.

      Returns:
      Datenpaket mit allen unterstuetzten Satzarten
    • getSupportedSaetzeWith

      public Datenpaket getSupportedSaetzeWith(SatzTyp... typen)
      Liefert ein Datenpaket mit den angegebenen Satzarten.
      Parameters:
      typen - gewuenschte Satzarten
      Returns:
      Datenpaket mit gewuenschten Satzarten
      Since:
      5.2
    • getGdvRelease

      public String getGdvRelease()
      Liefert das Release der jeweiligen XML-Beschreibung, aus der die GDV-Datensaetze erzeugt wurden.
      Returns:
      das Release der erzeugten XmlSaetze
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getVersionOf

      public String getVersionOf(SatzTyp satzTyp)
      Liefert die Version der angefragten Satzart
      Specified by:
      getVersionOf in interface VersionHandler
      Parameters:
      satzTyp - Satzart
      Returns:
      z.B. "2.4"