Утилита для сверки транзакций из csv файла с транзакциями хранящимися в базе.
В качестве базы используется in memory h2, которая инициализируется
с помощью data.sql
и schema.sql
лежащими в src/main/resources
.
Собирать на java 11.
Выполнить ./mvnw clean package
в директории с проектом, в результате
чего мавен соберет target/tran-check-0.0.1-SNAPSHOT.jar
.
Или выполнить ./mvnw spring-boot:run
в корне проекта,
в результате должен появится файл report#..._.csv
рядом с ptxs.csv
в корне проекта
- Создать
config.properties
рядом с jar файлом. В нем указатьcsvFile=<полный путь до csv с транзакциями>
. Пример:
csvFile=./ptxs.csv
- Выполнить
java -jar tran-check-0.0.1-SNAPSHOT.jar
. Полезно смотреть в лог, нет лиERROR
. - В случае успеха в логе будет строка
Creating report file at <путь до репорта>
. Репорт будет лежать рядом с csv файлом с транзакциями.
PID;PAMOUNT;PDATA;
123;94.7;20160101120000;
124;150.75;20160101120001;
125;1020.2;20160101120002;
126;15.5;20160101120003;
127;120.74;20160101120004;
128;;20160101120003;
TOTAL;6;
Транзакции с PID: 123-127 валидные, утилита может их распознать. У транзакции с PID: 128 не указан amount, считаем эту запись невалидной.
PID;PAMOUNT;PDATA;RESULT;
RECOGNIZED;
123;94.7;20160101120000;Wrong transaction amount;
124;150.75;20160101120001;Transaction approved;
125;1020.2;20160101120002;Wrong transaction amount;
126;15.5;20160101120003;Transaction approved;
127;120.74;20160101120004;Transaction was not found in DB;
MALFORMED;
128;;20160101120003;
Формат файла с отчетом отчасти повторяет формат файла с транзакциями. Но делит список транзакций на два:
RECOGNIZED
означает что следующие транзакции были успешно прочитаны из файла
и сверены с транзакциями в базе. Рядом с каждой транзакцией
появилась еще одна запись RESULT
с сообщением от валидатора транзакций.
Возможные варианты сообщений:
Wrong transaction amount
- amount транзакции из csv не совпадает с amount'ом в базеTransaction approved
- транзакция из файла соответствует транзакции в базеTransaction was not found in DB
- транзакция с таким id отсутствует в базе
MALFORMED
означает что следующие транзакции не смогли быть распознаны парсером.
Например, как у PID: 128, не указан amount.