Program do walidacji plików

Udostępniliśmy do pobrania off-line’owy walidator plików.

Jest to aplikacja uruchamiana z linii poleceń, do jej uruchomienia wymagana jest Java w wersji 1.8 lub wyższej.

Pod Windows można ją uruchomić jako:

1
giif-xml2018-cli.exe --help

Pod Linuksem i OS-X jako:

1
java -jar giif-xml2018-cli.exe --help

W rezultacie otrzymujemy wynik podobny do tego:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Apr 02, 2019 10:21:44 AM org.jboss.weld.bootstrap.WeldStartup <clinit>
INFO: WELD-000900: 2.4.8 (Final)
Apr 02, 2019 10:21:44 AM org.jboss.weld.environment.deployment.discovery.ReflectionDiscoveryStrategy processAnnotatedDiscovery
INFO: WELD-ENV-000014: Falling back to Java Reflection for bean-discovery-mode="annotated" discovery. Add org.jboss:jandex to the classpath to speed-up startup.
Apr 02, 2019 10:21:44 AM org.jboss.weld.bootstrap.WeldStartup startContainer
INFO: WELD-000101: Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
Apr 02, 2019 10:21:45 AM org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent
INFO: WELD-ENV-002003: Weld SE container STATIC_INSTANCE initialized
Usage: <main class> [-hV] [COMMAND]
Prosta apka do walidacji plików.
-h, --help Show this help message and exit.
-V, --version Print version information and exit.
Commands:
validate Walidacja zgodności z regułami.
xsd-validate Waliduj zgodność z XSD.
Weld SE container STATIC_INSTANCE shut down by shutdown hook

Linie od 1 do 8 to log uruchamiania programu, jest on wypisywany na STDERR więc można go przekierować do /dev/null. Logi są wypisywane przez java.utils.logging, więc można je skonfigurować jak w każdym innym programie javowym przez, przez dodanie -Djava.util.logging.config.file=logging.properties przed -jar

Linie 9 do 15 to pomoc do programu.

Sprawdzenie zgodności ze schemą

1
java -jar giif-xml2018-cli.exe xsd-validate --help 2> /dev/null
1
2
3
4
5
6
7
8
9
10
11
12
Usage: <main class> xsd-validate [-hqV] [-f=<outputFormat>] [-o=<outputFile>]
plik...
Waliduj zgodność z XSD.
plik... Pliki do walidacji.
-f, --format=<outputFormat>
Format wyniku walidacji: TEXT, JSON, CSV, domyślnie TEXT.
-h, --help Show this help message and exit.
-o, --output=<outputFile>
Plik wynikowy, domyślnie STDOUT.
-q, --quiet Nie wypisuj komunikatu błędu na STDOUT.
-V, --version Print version information and exit.
Weld SE container STATIC_INSTANCE shut down by shutdown hook

Jeżeli żaden plik nie zawierał błędu aplikacja zwróci status 0.

Jeżeli co najmniej jeden z przetwarzanych plików zawierał błędy aplikacja zwróci 1.

Przykład

1
2
3
$ java -jar xml2018-cli-1.0.1.jar xsd-validate ~/Downloads/wymiana_export_0000000000_Transakcja_testowa\(1\).xml 2> /dev/null
Plik poprawny: /home/ksm/Downloads/wymiana_export_0000000000_Transakcja_testowa(1).xml
Weld SE container STATIC_INSTANCE shut down by shutdown hook

Przykład z błędem

1
2
3
$ java -jar giif-xml2018-cli.exe xsd-validate -f CSV -o wymiana.csv ~/Downloads/wymiana_export_0000000000_Transakcja_testowa\(1\).xml 2> /dev/null
Plik niepoprawny: /home/ksm/Downloads/wymiana_export_0000000000_Transakcja_testowa(1).xml
Weld SE container STATIC_INSTANCE shut down by shutdown hook

Powyższe polecenie sprawdza plik i zapisuje napotkane błędy do pliku wymiana.csv w formacie CSV. Utworzony plik wymiana CSV

1
2
Plik,Typ,Położenie karty,Karta po tagu,Identyfikator karty,Poprzedni identyfikator,Położenie błędu,Błąd po tagu,Komunikat,Dotyczy tagów,Wartość,Wyjątek
wymiana_export_0000000000_Transakcja_testowa(1).xml,BŁĄD,,/Dokument,Rekord Transakcja testowa,Przed pierwszym rekordem.,,,,,,"cvc-complex-type.2.4.a: Invalid content was found starting with element 't:DokumentTozsamosci'. One of '{""http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/10/10/giif/typy/"":PESEL, ""http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2018/10/10/giif/typy/"":DataUrodzenia}' is expected."

Sprawdzenie zgodności z regułami

1
java -jar giif-xml2018-cli.exe validate --help 2> /dev/null
1
2
3
4
5
6
7
8
9
10
11
12
Usage: <main class> validate [-hqV] [-f=<outputFormat>] [-o=<outputFile>]
plik...
Walidacja zgodności z regułami.
plik... Pliki do walidacji.
-f, --format=<outputFormat>
Format wyniku walidacji: TEXT, JSON, CSV, domyślnie TEXT.
-h, --help Show this help message and exit.
-o, --output=<outputFile>
Plik wynikowy, domyślnie STDOUT.
-q, --quiet Nie wypisuj komunikatu błędu na STDOUT.
-V, --version Print version information and exit.
Weld SE container STATIC_INSTANCE shut down by shutdown hook

Jeżeli żaden plik nie zawierał błędu aplikacja zwróci status 0.

Jeżeli co najmniej jeden z przetwarzanych plików zawierał błędy aplikacja zwróci 1.

Przykład

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ java -jar giif-xml2018-cli.exe validate ~/Downloads/wymiana_export_0000000000_Transakcja_testowa.xml 2>/dev/null
wymiana_export_0000000000_Transakcja_testowa.xml: {
położenieKarty: Dokument/TrescDokumentu/Karta
aktualnaKarta: Rekord Transakcja testowa
położenieBłędu: TrZlecanaPrzezKlienta/ZleceniodawcaOsobaFizyczna/OsFizycznaKlientIO/PESEL
komunikat: Niepoprawna suma kontrolna numeru PESEL.
wartość: 00000000001
}
{
położenieKarty: Dokument/TrescDokumentu/Karta
aktualnaKarta: Rekord Transakcja testowa
położenieBłędu: TrZlecanaPrzezKlienta/ZleceniodawcaOsobaFizyczna/OsFizycznaKlientIO/DokumentTozsamosci/SeriaINumerDokumentu
komunikat: Niepoprawna suma kontrolna numeru dowodu osobistego.
wartość: AAA000001
}
Plik niepoprawny: /home/ksm/Downloads/wymiana_export_0000000000_Transakcja_testowa.xml
Weld SE container STATIC_INSTANCE shut down by shutdown hook