Hallo zusammen,
ich hoffe, ihr lasst euch nicht von der Unmenge Text abschrecken. Trotz mehrfacher Überarbeitung habe ich es nicht kürzer hinbekommen. Sorry dafür!
Ich habe eine Problemstellung, die ich nicht von Grund auf neu lösen, sondern mir Best Practices bzw. vielleicht schon bestehende Bibliotheken zu Nutzen machen möchte.
Und zwar folgendes:
"Ich" bekomme Dateien gesendet, deren Werte / Spalten Komma-, Strichpunktsepariert oder mit festen Breiten (z.B. ab Position 3 mit einer Länge von 10 befindet sich das Herstellungsdatum) abgebildet sind.
Bei den Dateien mit festen Breiten kommt es darüber hinaus noch vor, dass es verschiedene Ausprägungen gibt. Z.B. ist Ausprägung A ein Gut mit Verfallsdatum, Gut B ist aber eines ohne Verfallsdatum. Entsprechend hat Ausprägung A eben das Datum, als auch andere Parameter im Vergleich zu Ausprägung B. Um welche Ausprägung es sich handelt kann man feststellen, indem der erste Wert jeder Zeile für Ausprägung A z.B. ein "A" und für Ausprägung B ein "B" ist.
Mein Problem fängt nun schon bei der Validierung an. Zum einen darf für Ausprägung A das Verfallsdatum nicht leer sein, es muss aber gleichzeitig ein Datumsformat sein. Für Ausprägung B hingegen muss das Verfallsdatum leer sein, da ansonsten etwas mit der Datei nicht stimmt (dann ist bei der Dateierstellung schon irgendwas falsch gelaufen und sie muss zurückgewiesen werden).
Durch das Vorhanden sein eines Ablaufdatums bei Ausprägung A sind alle folgenden Positionen im Vergleich zu B verschoben. Z.B. befindet sich die Größenangabe für Ausprägung A nicht an Position 40 mit einer Länge von 4, sondern an Position 50 mit einer Länge von 4,...
Leider darf ich eine solche Datei nicht anhängen, sonst würde es das wohl klarer machen. Ich hoffe, ihr konntet mir trotzdem folgen. Was ich letztendlich machen möchte ich nun folgendes:
- über die Dateiinhalte iterieren
- bestimmen welche Auprägung jede Zeile hat
- deren Werte auf das passende Objekt mappen
- das Objekt validieren
- bei Validierungsfehlern diese entweder sammeln und am Ende ohne Weiterverarbeitung der Datei ausgeben oder nach jedem Fehler direkt abbrechen.
Gibt es für so eine Art der Datenverarbeitung schon fertige Bibiliotheken, die ich mir zu Nutzen machen kann? Oder wie würdet ihr das ganze angehen?
ich hoffe, ihr lasst euch nicht von der Unmenge Text abschrecken. Trotz mehrfacher Überarbeitung habe ich es nicht kürzer hinbekommen. Sorry dafür!
Ich habe eine Problemstellung, die ich nicht von Grund auf neu lösen, sondern mir Best Practices bzw. vielleicht schon bestehende Bibliotheken zu Nutzen machen möchte.
Und zwar folgendes:
"Ich" bekomme Dateien gesendet, deren Werte / Spalten Komma-, Strichpunktsepariert oder mit festen Breiten (z.B. ab Position 3 mit einer Länge von 10 befindet sich das Herstellungsdatum) abgebildet sind.
Bei den Dateien mit festen Breiten kommt es darüber hinaus noch vor, dass es verschiedene Ausprägungen gibt. Z.B. ist Ausprägung A ein Gut mit Verfallsdatum, Gut B ist aber eines ohne Verfallsdatum. Entsprechend hat Ausprägung A eben das Datum, als auch andere Parameter im Vergleich zu Ausprägung B. Um welche Ausprägung es sich handelt kann man feststellen, indem der erste Wert jeder Zeile für Ausprägung A z.B. ein "A" und für Ausprägung B ein "B" ist.
Mein Problem fängt nun schon bei der Validierung an. Zum einen darf für Ausprägung A das Verfallsdatum nicht leer sein, es muss aber gleichzeitig ein Datumsformat sein. Für Ausprägung B hingegen muss das Verfallsdatum leer sein, da ansonsten etwas mit der Datei nicht stimmt (dann ist bei der Dateierstellung schon irgendwas falsch gelaufen und sie muss zurückgewiesen werden).
Durch das Vorhanden sein eines Ablaufdatums bei Ausprägung A sind alle folgenden Positionen im Vergleich zu B verschoben. Z.B. befindet sich die Größenangabe für Ausprägung A nicht an Position 40 mit einer Länge von 4, sondern an Position 50 mit einer Länge von 4,...
Leider darf ich eine solche Datei nicht anhängen, sonst würde es das wohl klarer machen. Ich hoffe, ihr konntet mir trotzdem folgen. Was ich letztendlich machen möchte ich nun folgendes:
- über die Dateiinhalte iterieren
- bestimmen welche Auprägung jede Zeile hat
- deren Werte auf das passende Objekt mappen
- das Objekt validieren
- bei Validierungsfehlern diese entweder sammeln und am Ende ohne Weiterverarbeitung der Datei ausgeben oder nach jedem Fehler direkt abbrechen.
Gibt es für so eine Art der Datenverarbeitung schon fertige Bibiliotheken, die ich mir zu Nutzen machen kann? Oder wie würdet ihr das ganze angehen?