Skip to content

Latest commit

 

History

History
43 lines (25 loc) · 2.42 KB

09_design_decisions.adoc

File metadata and controls

43 lines (25 loc) · 2.42 KB

Entwurfsentscheidungen

Enum-Beschreibung

In der Anfangszeit konnten die verschiedenen GDV-Datensätze über Aufzählungstypen (Enums) zusammen mit Annotationen beschrieben werden. Dies hatte den Vorteil, dass mit reinen Java-Mitteln Datensätze definiert werden konnte, ohne dass man auf Unterstützung durch die IDE verzichten musste.

Mit v2 gab es dann mit der XML-Beschreibung durch GDV-Online eine Unterstützung aller Satzarten. Allerdings gibt es in den GDV-Datensätzen einige Sonderfälle, die damit in v2 nur unzureichend abgedeckt werden konnten. Deswegen war bis v4 immer noch die Unterstützung durch die Enum-Beschreibungen notwendig, wenn auch mit fallender Bedeutung.

Mit v5 ist jetzt eine durchgehende Abdeckung durch die XML-Beschreibung möglich. Um vor allem für Neu-Einsteiger die Verwirrung gering zu halten, wird mit v6 nur noch der XML-Ansatz für die Datensatz-Beschreibung unterstützt. Mit dem GdvXmlFormatter kann man Enum-Beschreibung nach XML überführen, sodass man eigene Enum-Beschreibungen (sofern vorhanden) nach XML konvertieren und weiterverwenden kann.

XML-Parsing

Die XML-Beschreibung der GDV-Datensätze, aus denen die verschiedenen Satz-Klassen generiert werden, ist ca. 8 MB groß. Um die Startup-Phase von gdv.xport zu beschleunigen, wurde auf einen DOM-Parser verzichtet. Stattdessen wird ein StAX-Parser verwendet.

Mit v5 wurde mit dem GdvXmlFormatter die ursprüngliche XML-Datei (VUVM2018.xml) nochmal aus allen Satzarten, die unterstützt werden, generiert. Dadurch konnte die XML-Datei zum Parsen auf ca. 2 MB reduziert werden, was das Parsen um weitere 40% beschleunigte.

Ungültige Werte

Damit es beim Import nicht zu Unterbrechungen durch fehlerhafte Werte kommt, werden fehlerhafte Werte bei Konstruktoren oder Methoden akzeptiert, die für den Import benötigt werden. Um dennoch feststellen zu können, ob ein Wert oder Datensatz gültig ist, gibt es in den Klassen eine isVald() und validate()-Methode.

Logging

Als Log-Framework wird Log4J 2 verwendet, da es sehr weit verbreitet und performant ist. Aktuell sind die Log-Meldungen noch größtenteils auf Englisch. Da GDV vorwiegend im deutschsprachigen Raum eingesetzt wird, werden künftig die Log-Meldungen auf Deutsch (ohne Umlaute) ausgegeben. Dies hilft, Log-Meldungen von gdv.xport von System-Meldungen zu unterscheiden.