Package gdv.xport

Class Datenpaket

java.lang.Object
gdv.xport.Datenpaket
All Implemented Interfaces:
ImportListener, EventListener

public class Datenpaket extends Object implements ImportListener
Ein Datenpaket besteht aus Vorsatz, mehrere Datensatz-Elementen und einem Nachsatz.
Since:
23.10.2009
Author:
oliver
  • Constructor Details

    • Datenpaket

      public Datenpaket()
      Wenn man den Default-Konstruktor verwendet, sollte man vorher die VU-Nummer konfiguriert haben.
      See Also:
    • Datenpaket

      public Datenpaket(Config config)
      Hierueber kann eine eigene Config mit uebergeben werden.
      Parameters:
      config - eigene Config
      Since:
      5.3
    • Datenpaket

      public Datenpaket(String vuNummer)
      Falls die VU-Nummer noch nicht konfiguriert ist, kann man zu diesem Konstruktor greifen.

      Absender wird jetzt nicht mehr vorbelegt, da der Absender der Klarname des VUs ist (und nicht bekannt ist). Auch das ErstellungsDatumBis wird nicht mehr vorbelegt.

      Parameters:
      vuNummer - die Nummer des Versicherungsunternehmens (VU)
      Since:
      0.3
  • Method Details

    • of

      public static Datenpaket of(Collection<Satz> datensaetze)
      Legt ein Datenpaket mit den angegebenen Datensaetze an.
      Parameters:
      datensaetze - fuers Datenpaket
      Returns:
      ein neues Datenpaket
      Since:
      5.2
    • of

      public static Datenpaket of(File file) throws IOException
      Legt ein Datenpaket anhand der uebergebenen Datei an.
      Parameters:
      file - Datei mit Datenpaket
      Returns:
      Datenpaket
      Throws:
      IOException - bei Lesefehlern
      Since:
      6.3
    • of

      public static Datenpaket of(Collection<Satz> datensaetze, Config cfg)
      Legt ein Datenpaket mit den angegebenen Datensaetze an.
      Parameters:
      datensaetze - fuers Datenpaket
      cfg - gemeinsame Config fuer alle Datensaetze
      Returns:
      ein neues Datenpaket
      Since:
      6.2
    • getConfig

      public Config getConfig()
      Liefert die eingestelle Konfiguration des Datenpakets zurueck.
      Returns:
      Konfiguration
      Since:
      6.2
    • setVuNummer

      public void setVuNummer(String vuNummer)
      Um die VU-Nummer setzen zu koennen.
      Parameters:
      vuNummer - VU-Nummer (max. 5-stellig)
    • getVuNummer

      public String getVuNummer()
      Dazu verwenden wir den Vorsatz, um die VU-Nummer zu bestimmen.
      Returns:
      VU-Nummer aus dem Vorsatz
      Since:
      0.3
    • getDatensaetze

      public List<Datensatz> getDatensaetze()
      Gets the datensaetze.
      Returns:
      the datensaetze
    • getDatensaetze

      public List<Datensatz> getDatensaetze(SatzTyp typ)
      Liefert die Liste der Datensaetze zurueck, die mit dem uebergebenen SatzTyp uebereinstimmen.
      Parameters:
      typ - gewuenschter SatzTyp
      Returns:
      Liste von Datensaetzen
      Since:
      5.2
    • getAllSaetze

      public List<Satz> getAllSaetze()
      Gets the saetze.
      Returns:
      the saetze
      Since:
      5.0
    • setDatensaetze

      public void setDatensaetze(List<Datensatz> datensaetze)
      Sets the datensaetze.
      Parameters:
      datensaetze - the datensaetze to set
    • getVorsatz

      public Vorsatz getVorsatz()
      Liefert den internen Vorsatz.

      Achtung:Der Vorsatz wird intern durch das Datenpaket verwaltet. Er kann aber veraendert werden, wenn dies notwendig ist (z.B. zum Setzen der Satzart-Versionen).

      Returns:
      Vorsatz
    • getNachsatz

      public Nachsatz getNachsatz()
      Liefert den internen Nachsatz.

      Achtung:Der Nachsatz wird intern durch das Datenpaket verwaltet. Aus Symmetriegruenden zum Vorsatz kann auch der Nachsatz veraendert werden. Normalerweise sollte das aber nicht notwendig sein.

      Returns:
      Nachsatz
    • add

      public void add(Datensatz datensatz)
      Fuegt den uebergebenen Datensatz hinzu.

      Achtung: Satzart 001 (Vorsatz) bzw. Satzart 9999 (Nachsatz) kann nicht hinzugefuegt werden!

      Parameters:
      datensatz - Datensatz, der hinzugefuegt werden soll
    • export

      public void export(File file) throws IOException
      Export.
      Parameters:
      file - Datei, in die exportiert werden soll
      Throws:
      IOException - falls was schiefgelaufen ist (z.B. Platte voll)
    • export

      public void export(File file, String encoding) throws IOException
      Export.
      Parameters:
      file - Datei, in die exportiert werden soll
      encoding - z.B. "ISO-8859-1"
      Throws:
      IOException - falls was schiefgelaufen ist (z.B. Platte voll)
      Since:
      1.0
    • export

      public void export(File file, Charset encoding) throws IOException
      Export.
      Parameters:
      file - Datei, in die exportiert werden soll
      encoding - z.B. "ISO-8859-1"
      Throws:
      IOException - falls was schiefgelaufen ist (z.B. Platte voll)
      Since:
      1.0
    • export

      public void export(OutputStream ostream) throws IOException
      Falls wir einen Stream haben, koennen wir diese Methode benutzen.
      Parameters:
      ostream - z.B. System.out
      Throws:
      IOException - falls was schiefgelaufen ist
      Since:
      0.3
    • export

      public void export(Writer writer) throws IOException
      Export.
      Parameters:
      writer - wird zum Export verwendet
      Throws:
      IOException - falls was schiefgelaufen ist
    • importFrom

      public Datenpaket importFrom(URI uri) throws IOException
      Damit kann direkt ueber das Netz importiert werden. Gibt man eine File-URL (oder File) an, kann man damit auch direkt aus einer Datei importieren.
      Parameters:
      uri - z.B. http://www.gdv-online.de/vuvm/musterdatei_bestand/musterdatei_041222.txt
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - wenn z.B. das Netz weg ist
      Since:
      3.0
    • importFrom

      public Datenpaket importFrom(URL url) throws IOException
      Damit kann direkt ueber das Netz importiert werden. Gibt man eine File-URL (oder File) an, kann man damit auch direkt aus einer Datei importieren.
      Parameters:
      url - z.B. http://www.gdv-online.de/vuvm/musterdatei_bestand/musterdatei_041222.txt
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - wenn z.B. das Netz weg ist
      Since:
      0.3
    • importFrom

      public Datenpaket importFrom(String content) throws IOException
      Importiert direkt aus einem String.
      Parameters:
      content - Inhalt der eingelesen wird
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - sollte eigentlich nicht vorkommen
      Since:
      0.3
    • importFrom

      public Datenpaket importFrom(InputStream istream) throws IOException
      Importiert von einem InputStream.
      Parameters:
      istream - z.B. Sytem.in
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - falls es Fehler beim Lesen gibt
    • importFrom

      public Datenpaket importFrom(Reader reader) throws IOException
      Import von einem Reader.
      Parameters:
      reader - hiervon wird importiert
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - falls was schiefgelaufen ist
    • importFrom

      public Datenpaket importFrom(PushbackLineNumberReader reader) throws IOException
      Der hier verwendete PushbackReader wird benoetigt, damit die gelesene Satzart und Sparte wieder zurueckgestellt werden kann.

      Im Gegensatz zu importSatz(PushbackLineNumberReader, Map) werden die Versionen (aus dem Vorsatz) nicht beruecksichtigt.

      Parameters:
      reader - PushbackReader mit einem Puffer von mind. 14 Zeichen
      Returns:
      das Datenpaket zur Weiterverabeitung (seit 5.2)
      Throws:
      IOException - falls was schief gelaufen ist
    • importSatz

      protected static Satz importSatz(PushbackLineNumberReader reader, Map<SatzTyp,Version> satzartVersionen) throws IOException
      Der hier verwendete PushbackReader wird benoetigt, damit die gelesene Satzart und Sparte wieder zurueckgestellt werden kann.
      Parameters:
      reader - PushbackReader mit einem Puffer von mind. 14 Zeichen
      satzartVersionen - Satz-Versionen aus dem Vorsatz
      Returns:
      das Datenpaket zur Weiterverabeitung
      Throws:
      IOException - falls was schief gelaufen ist
    • importSatz

      public static Satz importSatz(PushbackLineNumberReader reader) throws IOException
      Importiert einen einzelnen Satz. Dies kann entweder ein Datensatz, oder aber der Nachsatz sein.
      Parameters:
      reader - the reader
      Returns:
      the satz
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • importFrom

      public void importFrom(File file) throws IOException
      Importieren einer Datei.
      Parameters:
      file - Import-Datei
      Throws:
      IOException - falls was schiefgelaufen ist
      Since:
      0.2
    • importFrom

      public void importFrom(File file, String encoding) throws IOException
      Importieren einer Datei.
      Parameters:
      file - Import-Datei
      encoding - z.B. "ISO-8859-1"
      Throws:
      IOException - falls was schiefgelaufen ist
      Since:
      1.0
    • importFrom

      public void importFrom(File file, Charset encoding) throws IOException
      Importieren einer Datei.
      Parameters:
      file - Import-Datei
      encoding - z.B. "ISO-8859-1"
      Throws:
      IOException - falls was schiefgelaufen ist
      Since:
      1.0
    • pack

      public Datenpaket pack()
      Fasst benachbarte Saetze mit Luecken zusammen, sofern es sinnvoll ist. So kann z.B. folgende Reihenfolge in den Datensaetzen vorkommen:
           0220.010.13.1 Teildatensatz 1
           0221.010.13.1 Teildatensatz 1
           0220.010.13.1 Teildatensatz 2
       
      Logisch gehoeren Teildatensatz 1 und 2 von Satzart 0220.010.13.1 zusammen. Gemaess den FAQ des GDVs ist es wohl zulaessig, dass Teildatensatz 1 von Satzart 0221.xxx dazwischen stehen darf. Daher fasst die pack-Methode dieses getrennten Teildatensaetze wieder zusammen.

      Diese Version wurde mit Issue #62 eingefuehrt. Naehere Infos siehe https://github.com/oboehm/gdv.xport/issues/62.

      Returns:
      das Datenpaket selbst zur Weiterverarbeitung
      Since:
      5.2
    • setErstellungsDatumVon

      public void setErstellungsDatumVon(Datum d)
      Sets the erstellungsDatumVon im Vorsatz (Byte 70 - 77) (alle Teildatensätze)
      Parameters:
      d - Erstellungsdatum von
    • getErstellungsDatumVon

      public Datum getErstellungsDatumVon()
      Gets the erstellungs datum von.
      Returns:
      Erstellungsdatum bis
    • setErstellungsDatumBis

      public void setErstellungsDatumBis(Datum d)
      Sets the erstellungs datum bis.
      Parameters:
      d - Erstellungsdatum bis
    • getErstellungsDatumBis

      public Datum getErstellungsDatumBis()
      Gets the erstellungs datum bis.
      Returns:
      Erstellungdatum bis
    • setAbsender

      public void setAbsender(String absender)
      Sets the absender im Vorsatz (Byte 10 - 39) (alle Teildatensätze)
      Parameters:
      absender - neuer Absender
    • getAbsender

      public String getAbsender()
      Gets the absender im Vorsatz (Byte 10 - 39) (alle Teildatensätze)
      Returns:
      Absender
    • setAdressat

      public void setAdressat(String s)
      Sets the adressat.
      Parameters:
      s - Adressat
    • getAdressat

      public String getAdressat()
      Gets the adressat.
      Returns:
      Adressat
    • setVermittler

      public void setVermittler(String s)
      Sets the vermittler Um Geschaeftsstelle/Vermittler in Vorsatz (alle Teildatensaetze) und Nachsatz setzen zu koennen.
      Parameters:
      s - Vermittler
    • getVermittler

      public String getVermittler()
      Gets the vermittler.
      Returns:
      Vermittler
    • isValid

      public boolean isValid()
      Aus Performance-Gruenden wird nicht auf die validate-Methode zurueckgegriffen (die dauert zu lang).
      Returns:
      true/false
    • validate

      public List<net.sf.oval.ConstraintViolation> validate()
      Validiert die einzelnen Saetze (inkl. Vorsatz und Nachsatz).
      Returns:
      Liste der ConstraintViolations
    • validate

      public List<net.sf.oval.ConstraintViolation> validate(Config validationConfig)
    • toString

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

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • notice

      public void notice(Satz satz)
      Damit kann das Datenpaket selbst als Listener beim DatenpaketStreamer registriert werden.
      Specified by:
      notice in interface ImportListener
      Parameters:
      satz - der importierte Satz
      Since:
      5.3