diff --git a/src/main/java/ru/nbch/indicsearchservice/cron/JobCleaner.java b/src/main/java/ru/nbch/indicsearchservice/cron/JobCleaner.java index 93bfb42..ec22649 100644 --- a/src/main/java/ru/nbch/indicsearchservice/cron/JobCleaner.java +++ b/src/main/java/ru/nbch/indicsearchservice/cron/JobCleaner.java @@ -46,7 +46,7 @@ public class JobCleaner implements Runnable, CronJob { return; } - LocalDateTime hourBefore = LocalDateTime.now().minusMinutes(1); + LocalDateTime hourBefore = LocalDateTime.now().minusHours(1); // Очищаем Map Iterator> iterator = searchJobs.entrySet().iterator(); diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/AccountTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/AccountTableLoader.java index 6b13950..e3e2c1e 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/AccountTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/AccountTableLoader.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.UUID; import org.apache.ibatis.cursor.Cursor; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import ru.nbch.indicsearchservice.exception.InternalException; import ru.nbch.indicsearchservice.loader.subtable.AccountSubTableLoader; import ru.nbch.indicsearchservice.model.TableMetaData; @@ -59,6 +60,7 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor } @Override + @Transactional(readOnly = true) public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, @@ -117,6 +119,7 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor } @Override + @Transactional(readOnly = true) public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, @@ -126,10 +129,13 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor Map tableMetaDataMap) { if (dataType == DataType.TUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + accountSubTableLoaders.parallelStream().forEach(tl -> tl.searchByAccountFid(taskId, fids, tableFileMap, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoader.java index dbcda49..28735a9 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoader.java @@ -77,10 +77,12 @@ public class BankruptcyTableLoader implements FirstLevelTableLoader, TableLoader Map tableMetaDataMap) { if (dataType == DataType.TUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoader.java index 7055308..2b4922d 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoader.java @@ -77,10 +77,12 @@ public class ConsumerBankruptcyTableLoader implements FirstLevelTableLoader, Tab Map tableMetaDataMap) { if (dataType == DataType.TUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/InformationTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/InformationTableLoader.java index 79eb186..319b18e 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/InformationTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/InformationTableLoader.java @@ -100,10 +100,12 @@ public class InformationTableLoader implements FirstLevelTableLoader, TableLoade Map tableMetaDataMap) { if (dataType == DataType.TUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/LegalTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/LegalTableLoader.java index 542b133..c4f5b25 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/LegalTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/LegalTableLoader.java @@ -77,10 +77,12 @@ public class LegalTableLoader implements FirstLevelTableLoader, TableLoaderForId Map tableMetaDataMap) { if (dataType == DataType.TUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoader.java index 5b84bf5..c99f698 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoader.java @@ -100,10 +100,12 @@ public class RuApplicationTableLoader implements FirstLevelTableLoader, TableLoa Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoader.java index d5fb28b..7ec188b 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoader.java @@ -77,10 +77,12 @@ public class RuBankruptcyTableLoader implements FirstLevelTableLoader, TableLoad Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoader.java index cf3ebc4..039c6ef 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoader.java @@ -77,10 +77,12 @@ public class RuCapabilityTableLoader implements FirstLevelTableLoader, TableLoad Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoader.java index a173a43..36267ba 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoader.java @@ -77,10 +77,12 @@ public class RuDebtBurdenInfoTableLoader implements FirstLevelTableLoader, Table Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoader.java index 0fe77b0..a02b1b6 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoader.java @@ -77,10 +77,12 @@ public class RuObligPartTakeTableLoader implements FirstLevelTableLoader, TableL Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoader.java index ee23096..57672cd 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoader.java @@ -77,10 +77,12 @@ public class RuOtherLegalTableLoader implements FirstLevelTableLoader, TableLoad Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoader.java index 6182f78..f7d05bc 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoader.java @@ -77,10 +77,12 @@ public class RuSettledTableLoader implements FirstLevelTableLoader, TableLoaderF Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/RuUidTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/RuUidTableLoader.java index 190745c..a5b4f67 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/RuUidTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/RuUidTableLoader.java @@ -116,10 +116,13 @@ public class RuUidTableLoader implements FirstLevelTableLoader, TableLoaderForId Map tableMetaDataMap) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, fids, tableFileMap, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/AccountAmendTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/AccountAmendTableLoader.java index 3217aaa..c2c8c97 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/AccountAmendTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/AccountAmendTableLoader.java @@ -36,10 +36,12 @@ public class AccountAmendTableLoader implements AccountSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccountAmend(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccountAmend(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/BankGuaranteeTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/BankGuaranteeTableLoader.java index 911a358..7716d0f 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/BankGuaranteeTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/BankGuaranteeTableLoader.java @@ -36,10 +36,12 @@ public class BankGuaranteeTableLoader implements AccountSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankGuarantee(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankGuarantee(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/CollateralTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/CollateralTableLoader.java index a54c580..e51021f 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/CollateralTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/CollateralTableLoader.java @@ -36,10 +36,12 @@ public class CollateralTableLoader implements AccountSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromCollateral(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromCollateral(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/GuarantorTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/GuarantorTableLoader.java index 957b984..79c4b3a 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/GuarantorTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/GuarantorTableLoader.java @@ -36,10 +36,12 @@ public class GuarantorTableLoader implements AccountSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromGuarantor(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromGuarantor(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/PaymentTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/PaymentTableLoader.java index ba88906..e28fd75 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/PaymentTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/PaymentTableLoader.java @@ -36,10 +36,12 @@ public class PaymentTableLoader implements AccountSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromPayment(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromPayment(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAccountAmtTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAccountAmtTableLoader.java index 8d0df5d..322ff11 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAccountAmtTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAccountAmtTableLoader.java @@ -36,10 +36,12 @@ public class RuAccountAmtTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerIndividTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerIndividTableLoader.java index 853107b..cad4438 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerIndividTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerIndividTableLoader.java @@ -36,10 +36,12 @@ public class RuAcquirerIndividTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerLegalTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerLegalTableLoader.java index f3cae55..2776e85 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerLegalTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAcquirerLegalTableLoader.java @@ -36,10 +36,12 @@ public class RuAcquirerLegalTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAllArrearsTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAllArrearsTableLoader.java index 7dcfa2f..f892d6e 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAllArrearsTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAllArrearsTableLoader.java @@ -36,10 +36,12 @@ public class RuAllArrearsTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmendmentTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmendmentTableLoader.java index 020ca24..7fc8d7b 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmendmentTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmendmentTableLoader.java @@ -36,10 +36,12 @@ public class RuAmendmentTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmountInfoTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmountInfoTableLoader.java index 35bad4b..b624109 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmountInfoTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuAmountInfoTableLoader.java @@ -36,10 +36,12 @@ public class RuAmountInfoTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuArrearTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuArrearTableLoader.java index b20951d..c2e4efb 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuArrearTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuArrearTableLoader.java @@ -36,10 +36,12 @@ public class RuArrearTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuBankruptcyBlocksTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuBankruptcyBlocksTableLoader.java index b5aa76f..493b0c7 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuBankruptcyBlocksTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuBankruptcyBlocksTableLoader.java @@ -36,10 +36,12 @@ public class RuBankruptcyBlocksTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCoborrowerTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCoborrowerTableLoader.java index f093bf7..0245f60 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCoborrowerTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCoborrowerTableLoader.java @@ -36,10 +36,12 @@ public class RuCoborrowerTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatInsuredTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatInsuredTableLoader.java index 0ba1ad2..98e495f 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatInsuredTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatInsuredTableLoader.java @@ -36,10 +36,12 @@ public class RuCollatInsuredTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatRepayTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatRepayTableLoader.java index dcff360..e57a445 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatRepayTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollatRepayTableLoader.java @@ -36,10 +36,12 @@ public class RuCollatRepayTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralBlocksTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralBlocksTableLoader.java index 68b33cd..0a2b0b2 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralBlocksTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralBlocksTableLoader.java @@ -36,10 +36,12 @@ public class RuCollateralBlocksTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralTableLoader.java index 95478bb..cfc7e14 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuCollateralTableLoader.java @@ -36,10 +36,12 @@ public class RuCollateralTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuContractTermsChangesTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuContractTermsChangesTableLoader.java index 9f3de70..f855870 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuContractTermsChangesTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuContractTermsChangesTableLoader.java @@ -36,10 +36,12 @@ public class RuContractTermsChangesTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuDueArrearTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuDueArrearTableLoader.java index a75a3c5..af0ced6 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuDueArrearTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuDueArrearTableLoader.java @@ -36,10 +36,12 @@ public class RuDueArrearTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuFundDateTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuFundDateTableLoader.java index 985c1f3..8bb2783 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuFundDateTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuFundDateTableLoader.java @@ -36,10 +36,12 @@ public class RuFundDateTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuaranteeRepayTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuaranteeRepayTableLoader.java index 47783f2..299e383 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuaranteeRepayTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuaranteeRepayTableLoader.java @@ -36,10 +36,12 @@ public class RuGuaranteeRepayTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuarantorTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuarantorTableLoader.java index 29175a4..a98b5a4 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuarantorTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuGuarantorTableLoader.java @@ -36,10 +36,12 @@ public class RuGuarantorTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuIndepGuarantorTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuIndepGuarantorTableLoader.java index 1762bda..0fbad2c 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuIndepGuarantorTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuIndepGuarantorTableLoader.java @@ -36,10 +36,12 @@ public class RuIndepGuarantorTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuLegalRecordTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuLegalRecordTableLoader.java index 7e9b25f..4f0e8d3 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuLegalRecordTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuLegalRecordTableLoader.java @@ -36,10 +36,12 @@ public class RuLegalRecordTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuMonthAverPaymtTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuMonthAverPaymtTableLoader.java index 2c96878..cd9d228 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuMonthAverPaymtTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuMonthAverPaymtTableLoader.java @@ -36,10 +36,12 @@ public class RuMonthAverPaymtTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligAccountTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligAccountTableLoader.java index 19af6f5..b462281 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligAccountTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligAccountTableLoader.java @@ -36,10 +36,12 @@ public class RuObligAccountTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligTerminationTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligTerminationTableLoader.java index 3ae6ca7..04f7272 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligTerminationTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligTerminationTableLoader.java @@ -36,10 +36,12 @@ public class RuObligTerminationTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcBankruptTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcBankruptTableLoader.java index ace4f00..7f0ac0e 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcBankruptTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcBankruptTableLoader.java @@ -36,10 +36,12 @@ public class RuObligsRcBankruptTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcLiquidTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcLiquidTableLoader.java index d10a613..f54a616 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcLiquidTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuObligsRcLiquidTableLoader.java @@ -36,10 +36,12 @@ public class RuObligsRcLiquidTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuOverallvalTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuOverallvalTableLoader.java index f3ceea4..bf66c1a 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuOverallvalTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuOverallvalTableLoader.java @@ -37,10 +37,12 @@ public class RuOverallvalTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPastDueArrearTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPastDueArrearTableLoader.java index d8e8a3b..9e68cdc 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPastDueArrearTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPastDueArrearTableLoader.java @@ -36,10 +36,12 @@ public class RuPastDueArrearTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtConditionTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtConditionTableLoader.java index 18526d1..9dfca3d 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtConditionTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtConditionTableLoader.java @@ -36,10 +36,12 @@ public class RuPaymtConditionTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtTableLoader.java index b08beb6..b608445 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuPaymtTableLoader.java @@ -36,10 +36,12 @@ public class RuPaymtTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuServiceCoTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuServiceCoTableLoader.java index 6083458..a951cd3 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuServiceCoTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuServiceCoTableLoader.java @@ -36,10 +36,12 @@ public class RuServiceCoTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSourceNonMonetObligTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSourceNonMonetObligTableLoader.java index 7aee343..3b6ed55 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSourceNonMonetObligTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSourceNonMonetObligTableLoader.java @@ -36,10 +36,12 @@ public class RuSourceNonMonetObligTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubjectNonMonetObligTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubjectNonMonetObligTableLoader.java index 7fe3dba..7e74424 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubjectNonMonetObligTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubjectNonMonetObligTableLoader.java @@ -36,10 +36,12 @@ public class RuSubjectNonMonetObligTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubmitHoldTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubmitHoldTableLoader.java index 886573f..1b412f6 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubmitHoldTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuSubmitHoldTableLoader.java @@ -36,10 +36,12 @@ public class RuSubmitHoldTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuTradeTableLoader.java b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuTradeTableLoader.java index a6b57af..c6b6cbf 100644 --- a/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuTradeTableLoader.java +++ b/src/main/java/ru/nbch/indicsearchservice/loader/subtable/RuTradeTableLoader.java @@ -36,10 +36,12 @@ public class RuTradeTableLoader implements RuUidSubTableLoader { Set fids, Map tableFileMap, Map tableMetaDataMap) { - try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) { - tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); - } catch (IOException e) { - throw new InternalException("Failed to read cursor " + e); + if (!fids.isEmpty()) { + try (Cursor> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) { + tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); + } catch (IOException e) { + throw new InternalException("Failed to read cursor " + e); + } } } } diff --git a/src/test/java/ru/nbch/indicsearchservice/IndicSearchProcessorApplicationTests.java b/src/test/java/ru/nbch/indicsearchservice/IndicSearchProcessorApplicationTests.java deleted file mode 100644 index 220bbc1..0000000 --- a/src/test/java/ru/nbch/indicsearchservice/IndicSearchProcessorApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.nbch.indicsearchservice; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class IndicSearchProcessorApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/AccountTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/AccountTableLoaderTest.java new file mode 100644 index 0000000..b4e8660 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/AccountTableLoaderTest.java @@ -0,0 +1,301 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class AccountTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private AccountTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByUUID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.UUID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "550e8400-e29b-41d4-a716-446655440000", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByACCT_NUM() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.ACCT_NUM; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "ACCT-111-100", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesBySERIAL_NUM_ACCT() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.SERIAL_NUM_ACCT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "100", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoaderTest.java new file mode 100644 index 0000000..c1940c0 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/BankruptcyTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class BankruptcyTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private BankruptcyTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%COURT%%%Court A%%%CASE_NUM%%%CASE-001%%%DCSN_DTE%%%2026-03-01%%%REPORTED_DT%%%2026-03-15%%%PLNTFF_NME%%%Plaintiff X%%%STATUS%%%01%%%RESOL_TXT%%%Resolved%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-03-15%%%LAST_UPDATED_DT%%%2026-03-15 00:00:00.0%%%SRC_COUNTRY_CODE%%%RU%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%COURT%%%Court A%%%CASE_NUM%%%CASE-001%%%DCSN_DTE%%%2026-03-01%%%REPORTED_DT%%%2026-03-15%%%PLNTFF_NME%%%Plaintiff X%%%STATUS%%%01%%%RESOL_TXT%%%Resolved%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-03-15%%%LAST_UPDATED_DT%%%2026-03-15 00:00:00.0%%%SRC_COUNTRY_CODE%%%RU%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoaderTest.java new file mode 100644 index 0000000..7db6308 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/ConsumerBankruptcyTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class ConsumerBankruptcyTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private ConsumerBankruptcyTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("CONSUMER_BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("CONSUMER_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW%%%CASE_ID%%%CB-001%%%REPORTED_DT%%%2026-01-15%%%BANKRUPTCY_PROC%%%1%%%DT_BANKRUPTCYREPORTED%%%2026-01-10%%%DT_BANKRUPTCYCLOSED%%%%%%ADDITIONAL_INFO%%%0%%%OTHER_INFO%%%Info1%%%DT_INCLUSION%%%2026-01-01%%%DT_POWERSTART%%%2026-01-05%%%DT_POWEREND%%%2026-07-05%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%SRC_COUNTRY_CODE%%%RU")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("CONSUMER_BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("CONSUMER_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW%%%CASE_ID%%%CB-001%%%REPORTED_DT%%%2026-01-15%%%BANKRUPTCY_PROC%%%1%%%DT_BANKRUPTCYREPORTED%%%2026-01-10%%%DT_BANKRUPTCYCLOSED%%%%%%ADDITIONAL_INFO%%%0%%%OTHER_INFO%%%Info1%%%DT_INCLUSION%%%2026-01-01%%%DT_POWERSTART%%%2026-01-05%%%DT_POWEREND%%%2026-07-05%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%SRC_COUNTRY_CODE%%%RU")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/IdTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/IdTableLoaderTest.java new file mode 100644 index 0000000..88fa125 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/IdTableLoaderTest.java @@ -0,0 +1,415 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class IdTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private IdTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByTUTDFAndOGRN() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.OGRN; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "NORM-001", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "INFORMATION" -> assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%COURT%%%Court A%%%CASE_NUM%%%CASE-001%%%DCSN_DTE%%%2026-03-01%%%REPORTED_DT%%%2026-03-15%%%PLNTFF_NME%%%Plaintiff X%%%STATUS%%%01%%%RESOL_TXT%%%Resolved%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-03-15%%%LAST_UPDATED_DT%%%2026-03-15 00:00:00.0%%%SRC_COUNTRY_CODE%%%RU%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "CONSUMER_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("CONSUMER_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW%%%CASE_ID%%%CB-001%%%REPORTED_DT%%%2026-01-15%%%BANKRUPTCY_PROC%%%1%%%DT_BANKRUPTCYREPORTED%%%2026-01-10%%%DT_BANKRUPTCYCLOSED%%%%%%ADDITIONAL_INFO%%%0%%%OTHER_INFO%%%Info1%%%DT_INCLUSION%%%2026-01-01%%%DT_POWERSTART%%%2026-01-05%%%DT_POWEREND%%%2026-07-05%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%SRC_COUNTRY_CODE%%%RU")); + case "LEGAL" -> assertThat(lines) + .isEqualTo(List.of("LEGAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILING_NUMBER%%%FL-001%%%COURT%%%Court A%%%REPORTED_DT%%%2026-01-15%%%DCSN_DTE%%%2026-01-10%%%SATISFIED_DT%%%%%%PLAINTIFF%%%Plaintiff A%%%RESOL_TXT%%%Resolved text%%%SRC_COUNTRY_CODE%%%RU%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByTUTDFAndPassport() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "NORM-002", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "ACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW %%%ACCT_NUM%%%ACCT-111-100%%%ACCT_TYPE%%%1%%%OWNER_INDIC%%%Y%%%OPENED_DT%%%2026-01-01%%%LAST_PAYMT_DT%%%2026-06-01%%%ACCT_RTE_CDE%%%1%%%ACCT_RTE_DTE%%%2026-01-01%%%REPORTING_DT%%%2026-07-01%%%CREDIT_LIMIT%%%100000%%%CUR_BALANCE_AMT%%%50000%%%AMT_PAST_DUE%%%2000%%%TERMS_AMT%%%1500%%%TERMS_FREQUENCY%%%M%%%PAYMT_PAT%%%YYYYYY%%%CURRENCY_CODE%%%RUB%%%COLTRL_TYP_CDE%%%1%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-08-01%%%INT_PAYT_DUE_DTE%%%2026-08-15%%%INT_PAYT_FREQ_CDE%%%M%%%ACCT_NUM_DISPLAY%%%1%%%CONSENT%%%Y%%%POSTED_DT%%%2026-01-15%%%NARRATIVE_CODE1%%%01%%%NARRATIVE_CODE2%%%02%%%HIGH_CREDIT_AMT%%%120000%%%TERMS_NUM_PAYMTS%%%12%%%BALOON_PAYMT_AMT%%%0%%%BALOON_PAYMT_DT%%%%%%LAST_PURCHASED_DT%%%2026-05-01%%%FIRST_DELQ_DT%%%%%%MAX_DELQ_DT%%%%%%MAX_DELQ%%%0%%%MAX_DELQ_AMT_DT%%%%%%MAX_DELQ_AMT%%%0%%%MONTHS_REVIEWED%%%24%%%NUM_DAYS_30%%%0%%%NUM_DAYS_60%%%0%%%NUM_DAYS_90%%%0%%%NUM_DAYS_120%%%0%%%PAYMT_PAT_START_DT%%%2026-01-01%%%SRC_COUNTRY_CODE%%%RU%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-07-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%12345%%%AMT_OUTSTANDING%%%48000%%%GUARANTOR_IND%%%Y%%%DEBT_SECURED%%%Y%%%GUARANTEED_SUM%%%100000%%%GUARANTEED_TERM%%%2025-01-01%%%BANK_GUR_IND%%%N%%%BANK_SEC_DEBT%%%N%%%BANK_GUD_SUM%%%0%%%BANK_GUD_TERM%%%%%%COLL_VALUE%%%50000%%%COLL_DATE%%%2026-01-01%%%COLL_EXPR_DATE%%%2025-01-01%%%VAL_OF_CREDIT%%%VAL001%%%ACQUIRER_NAME%%%Acquirer Name%%%ACQ_REG_DATA%%%RegData%%%ACQ_TAX_ID%%%1234567890%%%ACQ_INS_NUM%%%987654321%%%PERF_OF_OBLIGATION%%%2025-01-01%%%PRINCIPAL_OUTSTANDING%%%30000%%%INT_OUTSTANDING%%%15000%%%OTHER_AMT_OUTSTANDING%%%3000%%%PRINCIPAL_PAST_DUE%%%2000%%%INT_PAST_DUE%%%500%%%OTHER_AMT_PAST_DUE%%%500%%%GRACE_END_DT%%%2026-12-31%%%MOP%%%1%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-01-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "INFORMATION" -> assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%COURT%%%Court A%%%CASE_NUM%%%CASE-001%%%DCSN_DTE%%%2026-03-01%%%REPORTED_DT%%%2026-03-15%%%PLNTFF_NME%%%Plaintiff X%%%STATUS%%%01%%%RESOL_TXT%%%Resolved%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-03-15%%%LAST_UPDATED_DT%%%2026-03-15 00:00:00.0%%%SRC_COUNTRY_CODE%%%RU%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "CONSUMER_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("CONSUMER_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%MEMBER_CODE%%%QQ66WW%%%CASE_ID%%%CB-001%%%REPORTED_DT%%%2026-01-15%%%BANKRUPTCY_PROC%%%1%%%DT_BANKRUPTCYREPORTED%%%2026-01-10%%%DT_BANKRUPTCYCLOSED%%%%%%ADDITIONAL_INFO%%%0%%%OTHER_INFO%%%Info1%%%DT_INCLUSION%%%2026-01-01%%%DT_POWERSTART%%%2026-01-05%%%DT_POWEREND%%%2026-07-05%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%SRC_COUNTRY_CODE%%%RU")); + case "LEGAL" -> assertThat(lines) + .isEqualTo(List.of("LEGAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILING_NUMBER%%%FL-001%%%COURT%%%Court A%%%REPORTED_DT%%%2026-01-15%%%DCSN_DTE%%%2026-01-10%%%SATISFIED_DT%%%%%%PLAINTIFF%%%Plaintiff A%%%RESOL_TXT%%%Resolved text%%%SRC_COUNTRY_CODE%%%RU%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + case "ACCOUNT_AMEND" -> assertThat(lines) + .isEqualTo(List.of("ACCOUNT_AMEND%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%CREDIT_LIMIT%%%120000%%%TERMS_AMT%%%1800%%%CURRENCY_CODE%%%RUB%%%CLOSED_DT%%%%%%PAYT_DUE_DTE%%%2026-09-01%%%INT_PAYT_DUE_DTE%%%2026-09-10%%%VAL_OF_CREDIT%%%VAL001%%%AMEND_TYPE%%%A%%%GRACE_END_DT%%%2026-10-01%%%REPORTING_DT%%%2026-08-01%%%FILE_SINCE_DT%%%2026-08-01%%%LAST_UPDATED_DT%%%2026-08-01 00:00:00.0%%%GRACE_DECLINED_DT%%%%%%GRACE_REASON%%%0%%%GRACE_START_DT%%%2026-08-01%%%OVERALL_VAL_OF_CREDIT%%%OVC001")); + case "PAYMENT" -> assertThat(lines) + .isEqualTo(List.of("PAYMENT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%PAYMT_AMT%%%5000%%%PAYMT_AMT_DUE%%%5500%%%CURRENCY_CODE%%%RUB%%%PAYMT_DTE%%%2026-06-01%%%PAYMT_VOL%%%1%%%M24_TOTAL%%%60000%%%MEMBER_CODE%%%QQ66WW %%%FILE_SINCE_DT%%%2026-06-01%%%LAST_UPDATED_DT%%%2026-06-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%")); + case "COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%COL-001%%%COLLTRL_TYP_CDE%%%1%%%VALUE%%%80000%%%DATE%%%2026-01-01%%%EXPR_DATE%%%2028-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%GUA-001%%%VOL_OF_DEBT%%%1%%%SUM%%%40000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%CURRENCY_CODE%%%RUB")); + case "BANK_GUARANTEE" -> assertThat(lines) + .isEqualTo(List.of("BANK_GUARANTEE%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%AGR_NUM%%%AGR-001%%%VOL_OF_DEBT%%%1%%%SUM%%%50000%%%TERM%%%2025-01-01%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111%%%TERMINATION_REASONS%%%%%%CURRENCY_CODE%%%RUB")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByGUTDFAndOGRN() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.OGRN; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "NORM-003", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByGUTDFAndPassport() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "NORM-004", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/InformationTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/InformationTableLoaderTest.java new file mode 100644 index 0000000..3379445 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/InformationTableLoaderTest.java @@ -0,0 +1,219 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class InformationTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private InformationTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByOLD_APP_NUM() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.OLD_APP_NUM; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "APP-001", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("INFORMATION")) { + assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesBySERIAL_NUM_APP() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.SERIAL_NUM_APP; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "100", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("INFORMATION")) { + assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("INFORMATION")) { + assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("INFORMATION")) { + assertThat(lines) + .isEqualTo(List.of("INFORMATION%%%FID%%%111%%%SERIAL_NUM%%%100%%%APP_NUM%%%APP-001%%%APP_DATE%%%2026-01-01%%%CREDITOR_TYPE%%%1%%%TYPE_FLAG%%%1%%%LOAN_TYPE%%%1%%%SHIPMENT_WAY%%%01%%%FLAG_OF_APPROVAL%%%Y%%%APPROVAL_EXPR_DTE%%%2026-06-01%%%REJECTED_AMT%%%10000%%%REJ_AMT_CUR%%%RUB%%%REJECTION_DTE%%%%%%REJECTION_REASON%%%01%%%AGREEMENT_NUM%%%AG-001%%%APP_LOAN_TYP%%%1%%%DEFAULT_FLAG%%%Y%%%LOAN_RETURNED_IND%%%N%%%OLD_APP_NUM%%%OLD-001%%%CANCELLATION_FLAG%%%N%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/LegalTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/LegalTableLoaderTest.java new file mode 100644 index 0000000..39c5bc7 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/LegalTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class LegalTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private LegalTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("LEGAL")) { + assertThat(lines) + .isEqualTo(List.of("LEGAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILING_NUMBER%%%FL-001%%%COURT%%%Court A%%%REPORTED_DT%%%2026-01-15%%%DCSN_DTE%%%2026-01-10%%%SATISFIED_DT%%%%%%PLAINTIFF%%%Plaintiff A%%%RESOL_TXT%%%Resolved text%%%SRC_COUNTRY_CODE%%%RU%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.TUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("LEGAL")) { + assertThat(lines) + .isEqualTo(List.of("LEGAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILING_NUMBER%%%FL-001%%%COURT%%%Court A%%%REPORTED_DT%%%2026-01-15%%%DCSN_DTE%%%2026-01-10%%%SATISFIED_DT%%%%%%PLAINTIFF%%%Plaintiff A%%%RESOL_TXT%%%Resolved text%%%SRC_COUNTRY_CODE%%%RU%%%MEMBER_CODE%%%QQ66WW%%%FILE_SINCE_DT%%%2026-01-15%%%LAST_UPDATED_DT%%%2026-01-15 00:00:00.0%%%FREEZE_FLAG%%%0%%%SUPPRESS_FLAG%%%0%%%SUPPRESS_STR_DT%%%%%%SUPPRESS_END_DT%%%%%%INDIC_CRC%%%11111")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoaderTest.java new file mode 100644 index 0000000..85cafaa --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuApplicationTableLoaderTest.java @@ -0,0 +1,219 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuApplicationTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuApplicationTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByAPPLICATION_NUMBER() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.APPLICATION_NUMBER; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "APP-001", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_APPLICATION")) { + assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByOLD_APP_NUM() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.OLD_APP_NUM; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "OLD-APP-001", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_APPLICATION")) { + assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_APPLICATION")) { + assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_APPLICATION")) { + assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoaderTest.java new file mode 100644 index 0000000..7208ee7 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuBankruptcyTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuBankruptcyTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuBankruptcyTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_BANKRUPTCY")) { + assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoaderTest.java new file mode 100644 index 0000000..4d3ca38 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuCapabilityTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuCapabilityTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuCapabilityTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_CAPABILITY")) { + assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_CAPABILITY")) { + assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoaderTest.java new file mode 100644 index 0000000..0b69ad9 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuDebtBurdenInfoTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuDebtBurdenInfoTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuDebtBurdenInfoTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_DEBT_BURDEN_INFO")) { + assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_DEBT_BURDEN_INFO")) { + assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoaderTest.java new file mode 100644 index 0000000..4014b9d --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuObligPartTakeTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuObligPartTakeTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuObligPartTakeTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_OBLIGPARTTAKE")) { + assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_OBLIGPARTTAKE")) { + assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoaderTest.java new file mode 100644 index 0000000..6f08578 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuOtherLegalTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuOtherLegalTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuOtherLegalTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_OTHERLEGAL")) { + assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_OTHERLEGAL")) { + assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoaderTest.java new file mode 100644 index 0000000..5aa34e1 --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuSettledTableLoaderTest.java @@ -0,0 +1,145 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuSettledTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuSettledTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_SETTLED")) { + assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + if (tableName.equals("RU_SETTLED")) { + assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + } else { + fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/loader/RuUidTableLoaderTest.java b/src/test/java/ru/nbch/indicsearchservice/loader/RuUidTableLoaderTest.java new file mode 100644 index 0000000..c8dbf3b --- /dev/null +++ b/src/test/java/ru/nbch/indicsearchservice/loader/RuUidTableLoaderTest.java @@ -0,0 +1,543 @@ +package ru.nbch.indicsearchservice.loader; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.fail; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import javax.sql.DataSource; +import org.h2.tools.RunScript; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ActiveProfiles; +import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; +import ru.nbch.indicsearchservice.model.TableMetaData; +import ru.nbch.indicsearchservice.model.enums.DataType; +import ru.nbch.indicsearchservice.model.enums.SearchParameter; +import ru.nbch.indicsearchservice.util.TableMetaDataUtil; + +@SpringBootTest +@ActiveProfiles("test") +class RuUidTableLoaderTest { + @Autowired + private ApplicationSettings settings; + @Autowired + @Qualifier("indicDataSource") + private DataSource indicDataSource; + @Autowired + private RuUidTableLoader loader; + @Autowired + private TableMetaDataUtil tableMetaDataUtil; + + private final Set createdFiles = new HashSet<>(); + + @BeforeEach + void setUp() { + settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); + settings.getJobCleaner().setEnabled(false); + + try (Connection connection = indicDataSource.getConnection()) { + RunScript.execute(connection, new FileReader(new ClassPathResource("sql/indic/indic.sql").getFile())); + } catch (SQLException | IOException e) { + throw new RuntimeException(e); + } + } + + @AfterEach + void tearDown() { + createdFiles.forEach(f -> { + try { + Files.deleteIfExists(f); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void searchBy_shouldCreateTableFilesByUUID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.UUID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "550e8400-e29b-41d4-a716-446655440000", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByACCT_NUM() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.ACCT_NUM; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "ACCT-111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchBy_shouldCreateTableFilesByFID() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.FID; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchBy( + id, + dataType, + searchParameter, + "111", + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } + + @Test + void searchById_shouldCreateTableFiles() throws IOException { + DataType dataType = DataType.GUTDF; + SearchParameter searchParameter = SearchParameter.PASSPORT; + + UUID id = UUID.randomUUID(); + Map tableFileMap = new ConcurrentHashMap<>(); + Map tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(dataType, searchParameter); + + loader.searchById( + id, + dataType, + searchParameter, + Set.of(111), + "QQ66WW", + tableFileMap, + tableMetaDataMap + ); + + assertThat(tableFileMap.size()).isNotZero(); + createdFiles.addAll(tableFileMap.values()); + + for (Map.Entry entry : tableFileMap.entrySet()) { + String tableName = entry.getKey(); + Path filePath = entry.getValue(); + + List lines = Files.readAllLines(filePath); + + switch (tableName) { + case "RU_UID" -> assertThat(lines) + .isEqualTo(List.of("RU_UID%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%UUID%%%550e8400-e29b-41d4-a716-446655440000%%%ACCT_NUM%%%ACCT-111%%%CRC_SEARCH%%%123456%%%HEADER_REPORTING_DT%%%2026-01-15%%%OPENED_DT%%%2026-01-01%%%REF_UID%%%REF-UID-001%%%VERSION%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01%%%LAST_RECEIVED%%%2026-01-01 00:00:00.0%%%HAS_BLOCKS%%%Y")); + case "RU_APPLICATION" -> assertThat(lines) + .isEqualTo(List.of("RU_APPLICATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%REQUESTED_FLAG_INDICATOR_CODE%%%RF01%%%REQUESTED_AMT%%%50000.00%%%REQUESTED_CURRENCY_CODE%%%RUB%%%APPLICATION_NUMBER%%%APP-001%%%APPLICATION_DATE%%%2026-01-10%%%CREDITOR_TYPE_CODE%%%CT01%%%APPLICATION_SHIPMENT_CODE%%%AS01%%%APPROVAL_EXPIRE_DATE%%%2026-06-10%%%REJECTED_DATE%%%%%%REJECTED_REASON_CODE%%%RR01%%%OLD_APP_NUM%%%OLD-APP-001%%%CRC_SEARCH%%%123456%%%CANCELLATION_FLAG%%%N%%%CANCELLATION_TSP%%%%%%CONSIDERATION_SHIPMENT_DATE%%%2026-01-12%%%TRANSIT_DATE%%%2026-01-13%%%HEADER_REPORTING_DT%%%2026-01-15%%%REQUESTLOAN_CODE%%%RLC01%%%CONSIDERATION_SHIPMENT_CODE%%%CSC01%%%APPLICATION_CODE%%%AC01%%%LOAN_SUM%%%48000.00%%%VERSION%%%1%%%DEAL_FLAG%%%1%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OBLIGPARTTAKE" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGPARTTAKE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%FLAG_INDICATOR_CODE%%%FL01%%%APPROVED_LOAN_TYPE_CODE%%%LT01%%%AGREEMENT_NUMBER%%%AGR-111%%%FUND_DT%%%2026-01-10%%%DEFAULT_FLAG%%%0%%%LOAN_INDICATOR%%%1%%%OLD_OBLIG_NUM%%%OLD-111%%%CANCELLATION_FLAG%%%N%%%HEADER_REPORTING_DT%%%2026-01-15")); + case "RU_BANKRUPTCY" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY%%%FID%%%111%%%SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CASE_NUM%%%CASE-111%%%STAGE_CODE%%%STG01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://link%%%ILLEG_ACT_CODE%%%0%%%ILLEG_ACT_INFO_DT%%%%%%FICTITIOUS_ACT_CODE%%%0%%%FICTITIOUS_ACT_DT%%%%%%ADDITIONAL_INFO%%%Additional info%%%MEMBER_BC_START%%%2026-01-01%%%MEMBER_BC_END%%%2026-07-01%%%HEADER_REPORTING_DT%%%2026-01-15%%%ILLEG_ACT_INFO_DT_EXTRA%%%extra1%%%FICTITIOUS_ACT_DT_EXTRA%%%extra2%%%HAS_BLOCKS%%%Y")); + case "RU_BANKRUPTCY_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_BANKRUPTCY_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%PARENT_SERIAL_NUM%%%100%%%STAGE_CODE%%%BLK01%%%PROCEDURE_INCLUSION_DT%%%2026-01-10%%%PROCEDURE_LINK%%%http://block1")); + case "RU_SETTLED" -> assertThat(lines) + .isEqualTo(List.of("RU_SETTLED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CLOSE_DT%%%2026-12-31%%%IS_SETTLED%%%1%%%SETTLE_DT%%%2026-06-01%%%RESUME_DT%%%%%%HEADER_REPORTING_DT%%%2026-01-15%%%REAL_MEMBERCODE%%%REAL001 %%%SOURCE_CODE%%%01")); + case "RU_OTHERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OTHERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%DEBT_CODE%%%DC01%%%COURT_NAME%%%Court A%%%COURT_ACT_NUM%%%ACT-001%%%COURT_ACT_DT%%%2026-01-10%%%RESOLUTION%%%Resolution text%%%EXEC_NUM%%%EX-001%%%COLLECT_END%%%2026-12-31%%%COLLECT_FIRST_AMT%%%5000.00%%%COLLECT_AMT%%%4500.00%%%CALC_DT%%%2026-06-01%%%COLLECT_REGULAR_AMT%%%500.00%%%FREQUENCY_CODE%%%FQ01%%%COLLECT_CURRENCY%%%RUB%%%HEADER_REPORTING_DT%%%2026-01-15%%%VERSION%%%1")); + case "RU_CAPABILITY" -> assertThat(lines) + .isEqualTo(List.of("RU_CAPABILITY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%CAPABILITY%%%1%%%INCAP_DECISION_DT%%%2026-01-10%%%INCAP_DECISION_NUM%%%INC-001%%%INCAP_COURT_NAME%%%Court A%%%CAP_DECISION_DT%%%2026-06-01%%%CAP_DECISION_NUM%%%CAP-001%%%CAP_COURT_NAME%%%Court B")); + case "RU_DEBT_BURDEN_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_DEBT_BURDEN_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%MEMBER_CODE%%%QQ66WW %%%REPORTED_DT%%%2026-01-15%%%LOAD_RANGE%%%LR01%%%LOAD_CALC_DATE%%%2026-01-10%%%INCOME_INFO%%%II01%%%INCOME_INFO_SOURCE%%%SRC01%%%LOAD_FACT%%%Y%%%LOAD_CALCULATION_FACT%%%Y%%%DEAL_UID%%%550e8400-e29b-41d4-a716-446655440000%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_TRADE" -> assertThat(lines) + .isEqualTo(List.of("RU_TRADE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OWNER_INDIC%%%OWN01%%%OPENED_DT%%%2026-01-01%%%TRADE_TYPE_CODE%%%TT01%%%LOAN_KIND_CODE%%%LK01%%%ACCT_TYPE%%%consumer%%%IS_CONSUMER_LOAN%%%1%%%HAS_CARD%%%1%%%IS_NOVATION%%%0%%%IS_MONEY_SOURCE%%%0%%%IS_MONEY_BORROWER%%%0%%%CLOSE_DT%%%%%%OBTAINPART_CRED%%%1%%%CREDIT_LINE%%%1%%%INTERESTRATE_FLOAT%%%0%%%TRANSPART_CRED%%%0%%%TRANSPART_CRED_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_DATE%%%2026-01-10%%%LENDERTYPE_CODE%%%LT01%%%CREDIT_LINE_CODE%%%CL01%%%REPAYMENT_FACT%%%Y%%%TRANSFER_FACT%%%N%%%PARTNER_FINANCING_FACT%%%N%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_ACCOUNT_AMT" -> assertThat(lines) + .isEqualTo(List.of("RU_ACCOUNT_AMT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_LIMIT%%%150000.00%%%CURRENCY_CODE%%%RUB%%%ENSURED_AMT%%%140000.00%%%COMMITCURR_CODE%%%RUB%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%COMMIT_CODE%%%CMT01%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_COBORROWER" -> assertThat(lines) + .isEqualTo(List.of("RU_COBORROWER%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_SOLIDARY%%%1%%%SOLIDARY_NUM%%%2%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT_CONDITION" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT_CONDITION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PRINCIPAL_TERMS_AMT%%%1500.00%%%PRINCIPAL_TERMS_AMT_DT%%%2026-01-10%%%INTEREST_TERMS_AMT%%%500.00%%%INTEREST_TERMS_AMT_DT%%%2026-01-10%%%TERMS_FREQUENCY%%%M %%%MIN_PAYMT%%%1000.00%%%GRACE_START_DT%%%2026-01-01%%%GRACE_END_DT%%%2026-07-01%%%INTEREST_PAYMENT_DUE_DATE%%%2026-08-15%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_OVERALLVAL" -> assertThat(lines) + .isEqualTo(List.of("RU_OVERALLVAL%%%FID%%%111%%%SERIAL_NUM%%%1067%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%CREDIT_TOTAL_AMT%%%150.000%%%CREDIT_TOTAL_MONETARY_AMT%%%150000.00%%%CREDIT_TOTAL_AMT_DATE%%%2026-01-10%%%MAX_PERCENT_COST%%%25.000%%%MAX_COST%%%5000.00%%%MAX_PERCENT_CASH%%%30.000%%%MAX_PERCENT_CASHLESS%%%20.000%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_AMENDMENT" -> assertThat(lines) + .isEqualTo(List.of("RU_AMENDMENT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AMEND_DATE%%%2026-01-10%%%AMEND_TYPE%%%AM01%%%SPEC_TYPE%%%SP01%%%OTHER_DESC%%%Description%%%START_DT%%%2026-01-10%%%PLAN_END_DT%%%2026-06-10%%%FACT_END_DT%%%%%%END_REASON%%%ER01%%%CUR_RATE%%%12.5000")); + case "RU_FUNDDATE" -> assertThat(lines) + .isEqualTo(List.of("RU_FUNDDATE%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%FUND_DATE%%%2026-01-10%%%TRANCHE_NUM%%%1%%%START_AMT_OUTSTANDING%%%100000.00%%%VERSION%%%1")); + case "RU_ARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_ARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_AMT_OUTSTANDING%%%50000.00%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%52000.00%%%PRINCIPAL_OUTSTANDING%%%40000.00%%%INT_OUTSTANDING%%%8000.00%%%OTHER_AMT_OUTSTANDING%%%4000.00%%%CALC_DATE%%%2026-01-10%%%UNCONFIRM_GRACE%%%0%%%IS_EMPTY%%%0%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_DUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_DUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%START_DT%%%2026-01-05%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_OUTSTANDING%%%15000.00%%%PRINCIPAL_OUTSTANDING%%%10000.00%%%INT_OUTSTANDING%%%3000.00%%%OTHER_AMT_OUTSTANDING%%%2000.00%%%CALC_DATE%%%2026-01-10%%%IS_EMPTY%%%0%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PASTDUEARREAR" -> assertThat(lines) + .isEqualTo(List.of("RU_PASTDUEARREAR%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAST_DUE_DT%%%2026-02-01%%%LAST_PAYMENT_DUE_CODE%%%1%%%AMT_PAST_DUE%%%3000.00%%%PRINCIPAL_AMT_PAST_DUE%%%2000.00%%%INT_AMT_PAST_DUE%%%500.00%%%OTHER_AMT_PAST_DUE%%%500.00%%%CALC_DATE%%%2026-01-10%%%PRINCIPAL_MISSED_DATE%%%2026-01-20%%%INT_MISSED_DATE%%%2026-01-25%%%IS_EMPTY%%%0%%%MISS_FACT%%%Y%%%DAYS_PAST_DUE%%%30%%%REPAID_MISS_DURATION%%%15%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_PAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_PAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%PAYMT_DATE%%%2026-02-01%%%PAYMT_AMT%%%5000.00%%%PRINCIPAL_PAYMT_AMT%%%3000.00%%%INT_PAYMT_AMT%%%1000.00%%%OTHER_PAYMT_AMT%%%1000.00%%%TOTAL_AMT%%%5000.00%%%PRINCIPAL_TOTAL_AMT%%%3000.00%%%INT_TOTAL_AMT%%%1000.00%%%OTHER_TOTAL_AMT%%%1000.00%%%AMT_KEEP_CODE%%%AK01%%%TERMS_DUE_CODE%%%TD01%%%DAYS_PAST_DUE%%%30%%%CALC_DATE%%%2026-01-10%%%LAST_MISS_PAY_SUM%%%500.00%%%PAY_SUM_24%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_MONTHAVERPAYMT" -> assertThat(lines) + .isEqualTo(List.of("RU_MONTHAVERPAYMT%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%AVER_PAYMT_AMT%%%5000%%%CALC_DATE%%%2026-01-10%%%SUM_TOTAL%%%60000.00%%%VERSION%%%1%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_SOURCENONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SOURCENONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SRC_NON_MONET_OBLIG%%%Source Non-Monetary%%%SRC_NON_MONET_OBLIG_CODE%%%SNM01%%%SRC_NON_MONET_OBLIG_OBJECT%%%Object description%%%SRC_NON_MONET_OBLIG_DT%%%2026-01-10%%%SRC_NON_MONET_OBLIG_CODE_IDENT%%%IDENT-001")); + case "RU_SUBJECTNONMONETOBLIG" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBJECTNONMONETOBLIG%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SUBJ_NON_MONET_OBLIG%%%Subject NM%%%SUBJ_NON_MONET_OBLIG_OBJECT%%%Object NM%%%SUBJ_NON_MONET_OBLIG_REGUL%%%Regulation%%%SUBJ_NON_MONET_OBLIG_ADVERSE_CODE%%%1%%%RECEIVEDPROP_CODE%%%RP01")); + case "RU_COLLATERAL" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLATERAL_CODE%%%COL01%%%COLLATERAL_ID%%%COL-ID-001%%%COLLATERAL_AGREEMENT_DT%%%2026-01-10%%%COLLATERAL_VALUE%%%100000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_ENCUM%%%0%%%COLLATERAL_EXPIRATION_DATE%%%2028-01-10%%%COLLATERAL_FACT_EXPIRATION_DATE%%%%%%COLLATERAL_END_REASON%%%ER01%%%COLLATERALCOMM_AMT%%%95000.00%%%COLLATERALCONT_CNT%%%1%%%COLLATERAL_VALUE_TYPE%%%VT01%%%LOCATION%%%Moscow %%%ACTUAL_COST%%%90000.00%%%CALC_DATE%%%2026-01-10%%%HAS_BLOCKS%%%Y%%%VERSION%%%1")); + case "RU_COLLATERAL_BLOCKS" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATERAL_BLOCKS%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%PARENT_SERIAL_NUM%%%100%%%COLLATERAL_VALUE%%%50000.00%%%CURRENCY_CODE%%%RUB%%%COLLATERAL_DATE%%%2026-01-10%%%COLLATERAL_VALUE_TYPE%%%VT01")); + case "RU_GUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%GUARANTEE_VOLUME%%%30000.00%%%CURRENCY_CODE%%%RUB%%%GUARANTEE_AGREEMENT_DT%%%2026-01-10%%%GUARANTEE_EXPIRATION_DATE%%%2025-01-10%%%GUARANTEE_FACT_EXPIRATION_DATE%%%%%%GUARANTEE_END_REASON%%%ER01%%%OLD_GUAR_NUM%%%OLD-GUAR-001")); + case "RU_INDEPGUARANTOR" -> assertThat(lines) + .isEqualTo(List.of("RU_INDEPGUARANTOR%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INDEP_GUARANTEE_UUID%%%770e8400-e29b-41d4-a716-446655440002%%%INDEP_GUARANTEE_VOLUME%%%35000.00%%%CURRENCY_CODE%%%RUB%%%INDEP_GUARANTEE_DT%%%2026-01-10%%%INDEP_GUARANTEE_EXPIRATION_DATE%%%2025-06-10%%%INDEP_GUARANTEE_FACT_EXPIRATION_DATE%%%%%%INDEP_GUARANTEE_END_REASON%%%ER01%%%OLD_INDEPGUAR_NUM%%%OLD-IND-001")); + case "RU_COLLATINSURED" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATINSURED%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%INSUR_LIMIT%%%100000%%%CURRENCY_CODE%%%RUB%%%HAS_FRANCHISE%%%1%%%INSUR_START_DT%%%2026-01-10%%%INSUR_END_DT%%%2028-01-10%%%INSUR_FACT_END_DT%%%%%%INSUR_END_REASON%%%ER01%%%COLLATERAL_ID%%%COL-ID-001%%%VERSION%%%1")); + case "RU_COLLATREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_COLLATREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%COLLAT_REPAY_CODE%%%CRC01%%%COLLAT_REPAY_DT%%%2026-06-01%%%COLLAT_REPAY_AMT%%%5000.00%%%FILE_DT%%%2026-01-01 00:00:00.0%%%RECORD_POS%%%1%%%RECORD_POS_3_2%%%2")); + case "RU_GUARANTEEREPAY" -> assertThat(lines) + .isEqualTo(List.of("RU_GUARANTEEREPAY%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%GUARANTEE_TO_REPAY%%%20000.00%%%GUARANTEE_REPAY_AMT%%%5000.00%%%GUARANTEE_REPAY_KEEP_CODE%%%1%%%GUARANTEE_DATE%%%2026-06-01")); + case "RU_OBLIGTERMINATION" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGTERMINATION%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%LOAN_INDICATOR%%%1%%%LOAN_INDICATOR_DT%%%2026-06-01")); + case "RU_SUBMITHOLD" -> assertThat(lines) + .isEqualTo(List.of("RU_SUBMITHOLD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HOLD_CODE%%%HLD01%%%HOLD_DT%%%2026-01-10")); + case "RU_ACQUIRERLEGAL" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERLEGAL%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_CODE%%%RC01%%%RIGHT_OF_CLAIM_RUS%%%1%%%RIGHT_OF_CLAIM_FULLNAME%%%OOO Romashka%%%RIGHT_OF_CLAIM_NAME%%%Romashka%%%RIGHT_OF_CLAIM_OTHER_NAME%%%Romashka Ltd%%%RIGHT_OF_CLAIM_LEI%%%LEI1234567890%%%RIGHT_OF_CLAIM_REG_NUM%%%1234567890%%%RIGHT_OF_CLAIM_TAX_CODE%%%1%%%RIGHT_OF_CLAIM_TAX_NUM%%%1234567890%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAX_EXTRA%%%extra_tax")); + case "RU_ACQUIRERINDIVID" -> assertThat(lines) + .isEqualTo(List.of("RU_ACQUIRERINDIVID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%RIGHT_OF_CLAIM_LAST_NAME%%%Ivanov%%%RIGHT_OF_CLAIM_FIRST_NAME%%%Ivan%%%RIGHT_OF_CLAIM_MIDDLE_NAME%%%Ivanovich%%%RIGHT_OF_CLAIM_BIRTH_DT%%%1980-01-01%%%RIGHT_OF_CLAIM_PLACE_OF_BIRTH%%%Moscow%%%RIGHT_OF_CLAIM_TAXPAYER_ID_CODE%%%1%%%RIGHT_OF_CLAIM_TAXPAYER_ID%%%1234567890%%%RIGHT_OF_CLAIM_SNILS%%%123-456-789%%%RIGHT_OF_CLAIM_ID_TYPE%%%01%%%RIGHT_OF_CLAIM_OTHER_ID%%%other-id%%%RIGHT_OF_CLAIM_ID_SERIES%%%AB%%%RIGHT_OF_CLAIM_ID_NUM%%%123456%%%RIGHT_OF_CLAIM_ID_ISSUE_DT%%%2020-01-01%%%RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY%%%MVD%%%RIGHT_OF_CLAIM_ID_DIV_CODE%%%770-001%%%RIGHT_OF_CLAIM_DT%%%2026-01-01%%%RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA%%%extra123")); + case "RU_SERVICECO" -> assertThat(lines) + .isEqualTo(List.of("RU_SERVICECO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SERV_RUS%%%1%%%SERV_FULL_NAME%%%ServiceCo Full%%%SERV_SHORT_NAME%%%ServiceCo%%%SERV_OTHER_NAME%%%ServCo%%%SERV_REG_NUM%%%1234567890%%%SERV_TAXPAYER_ID_CODE%%%1%%%SERV_TAXPAYER_ID%%%1234567890%%%SERV_START_DT%%%2026-01-01%%%SERV_END_DT%%%2025-01-01%%%SERV_EMITENT_NAME%%%Emitent Name%%%SERV_EMITENT_REG_NUM%%%EM123456%%%SERV_TAXPAYER_ID_CODE_EXTRA%%%extra_tax")); + case "RU_OBLIGACCOUNT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGACCOUNT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%OBLIG_ACCOUNT_CODE%%%1%%%INT_RATE%%%12.50%%%OFFBALANCE_AMT%%%5000.00%%%PREFEREN_FINANC%%%1%%%PREFEREN_FINANC_INFO%%%Pref info%%%MAX_INTEREST%%%25.00%%%CALC_DATE%%%2026-01-10%%%VERSION%%%1")); + case "RU_LEGALRECORD" -> assertThat(lines) + .isEqualTo(List.of("RU_LEGALRECORD%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%HAS_COURT_ACT%%%1%%%COURT_ACT_DT%%%2026-01-10%%%COURT_ACT_NUM%%%CA-001%%%RESOLUTION%%%Resolved%%%COURT_ACT_EFFECT_CODE%%%1%%%LAWSUIT_CODE%%%LS01%%%SUM_TOTAL%%%5000.00%%%INFO%%%Legal info%%%VERSION%%%1")); + case "RU_OBLIGSRCBANKRUPT" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCBANKRUPT%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SB_START_OUTSTANDING%%%80000.00%%%SB_START_DT%%%2026-01-01%%%SB_END_OUTSTANDING%%%75000.00%%%SB_END_DT%%%2026-06-01%%%SB_LAST_PAY_OUTSTANDING%%%10000.00%%%SB_LAST_PAYMT_DT%%%2026-05-15%%%SB_TRANSFER_CODE%%%1%%%SB_LOAN_INDICATOR%%%1%%%SB_LOAN_INDICATOR_REASON%%%R01%%%SB_ARR_CURRENCY%%%RUB")); + case "RU_OBLIGSRCLIQUID" -> assertThat(lines) + .isEqualTo(List.of("RU_OBLIGSRCLIQUID%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%SL_START_OUTSTANDING%%%90000.00%%%SL_START_DT%%%2026-01-01%%%SL_BALANCE_OUTSTANDING%%%85000.00%%%SL_BALANCE_DT%%%2026-06-01%%%SL_LAST_PAY_OUTSTANDING%%%12000.00%%%SL_LAST_PAYMT_DT%%%2026-05-15%%%SL_TRANSFER_CODE%%%1%%%SL_LOAN_INDICATOR%%%1%%%SL_LOAN_INDICATOR_REASON%%%LR01%%%SL_ARR_CURRENCY%%%RUB")); + case "RU_AMOUNT_INFO" -> assertThat(lines) + .isEqualTo(List.of("RU_AMOUNT_INFO%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%ENSURED_AMT%%%120000.00%%%COMMITCURR_CODE%%%RUB%%%COMMIT_CODE%%%CC01%%%AMT_DATE%%%2026-01-10%%%COMMIT_UUID%%%550e8400-e29b-41d4-a716-446655440000%%%LIABILITY_LIMIT%%%LIMIT01")); + case "RU_CONTRACT_TERMS_CHANGES" -> assertThat(lines) + .isEqualTo(List.of("RU_CONTRACT_TERMS_CHANGES%%%FID%%%111%%%SERIAL_NUM%%%1000%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15%%%TERMS_CHANGE_CODE%%%TC01%%%TERMS_CHANGE_DESC%%%Change desc 1%%%CHANGING_DATE%%%2026-03-01")); + case "RU_ALL_ARREARS" -> assertThat(lines) + .isEqualTo(List.of("RU_ALL_ARREARS%%%FID%%%111%%%SERIAL_NUM%%%100%%%ACC_SERIAL_NUM%%%100%%%FILE_SINCE_DT%%%2026-01-01%%%LAST_UPDATED_DT%%%2026-01-01 00:00:00.0%%%REPORTED_DT%%%2026-01-15")); + default -> fail("Table " + tableName + " not found"); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/ru/nbch/indicsearchservice/processor/IndicSearchProcessorTest.java b/src/test/java/ru/nbch/indicsearchservice/processor/IndicSearchProcessorTest.java index 244269d..2c265c8 100644 --- a/src/test/java/ru/nbch/indicsearchservice/processor/IndicSearchProcessorTest.java +++ b/src/test/java/ru/nbch/indicsearchservice/processor/IndicSearchProcessorTest.java @@ -123,7 +123,7 @@ class IndicSearchProcessorTest { @Test void export_shouldExportAsJson() throws IOException { - UUID uuid = UUID.fromString("75c56eaf-3e15-4faa-8525-79a59d3cf0ac"); + UUID uuid = UUID.fromString("d5b00112-59b5-451f-9385-9fe70145407d"); SearchJob job = new SearchJob( uuid, diff --git a/src/test/resources/sql/indic/indic.sql b/src/test/resources/sql/indic/indic.sql index 488ad37..44a04da 100644 --- a/src/test/resources/sql/indic/indic.sql +++ b/src/test/resources/sql/indic/indic.sql @@ -1380,8 +1380,11 @@ VALUES INSERT INTO INDIC.ID(FID, SERIAL_NUM, ID_TYPE, SER_NUM, ID_NUM, ISS_DTE, ISS_AUTH_NME, ISS_LOC_NME, ISSUE_COUNTRY, ID_NORM, SPSD_SERIAL_NUM, SRC_COUNTRY_CODE, MEMBER_CODE, FILE_SINCE_DT, LAST_UPDATED_DT, FREEZE_FLAG, SUPPRESS_FLAG, SUPPRESS_STR_DT, SUPPRESS_END_DT, VALIDITY_INDICATOR, REPORTED_DT, ID_TYPE2, IS_PREV_ID, OKSM, OTHER_COUNTRY, OTHER_ID, DIV_CODE, VALID_TO, TRACKED, SPECTAX_CODE, FOREIGNER_CODE, VERSION, IS_CHECKED, ID_HASH2, REPORTED_TIME, REPORTED_TZ) VALUES - (111, 100, '01', 'AB123', 'ID-111-100', '2020-01-01', 'Authority', 'Location', 'RU', 'NORM-001', 10, 'RU', 'QQ66WW', '2026-01-01', '2026-01-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-01-01', 'PASSPORT', 0, '643', NULL, 'other-id', '7700001', '2030-01-01', 1, 123, 'FGN01', 1, 1, 1234567890, '12:00:00', 3), - (222, 200, '02', 'CD456', 'ID-222-200', '2020-02-01', 'Authority2', 'Location2', 'US', 'NORM-002', 20, 'US', 'QQ77WW', '2026-02-01', '2026-02-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-02-01', 'DRVLIC', 0, '840', NULL, 'other-id2', '7700002', '2031-02-01', 2, 456, 'FGN02', 1, 0, 9876543210, '15:30:00', 5); + (111, 100, '34', 'AB123', 'ID-111-100', '2020-01-01', 'Authority', 'Location', 'RU', 'NORM-001', 10, 'RU', 'QQ66WW', '2026-01-01', '2026-01-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-01-01', 'PASSPORT', 0, '643', NULL, 'other-id', '7700001', '2030-01-01', 1, 123, 'FGN01', 1, 1, 1234567890, '12:00:00', 3), + (111, 100, '10', 'AB123', 'ID-111-100', '2020-01-01', 'Authority', 'Location', 'RU', 'NORM-002', 10, 'RU', 'QQ66WW', '2026-01-01', '2026-01-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-01-01', 'PASSPORT', 0, '643', NULL, 'other-id', '7700001', '2030-01-01', 1, 123, 'FGN01', 1, 1, 1234567890, '12:00:00', 3), + (111, 100, '34', 'AB123', 'ID-111-100', '2020-01-01', 'Authority', 'Location', 'RU', 'NORM-003', 10, 'RU', 'QQ66WW', '2026-01-01', '2026-01-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-01-01', 'PASSPORT', 0, '643', NULL, 'other-id', '7700001', '2030-01-01', 1, 123, 'FGN01', 1, 1, 1234567890, '12:00:00', 3), + (111, 100, '21', 'AB123', 'ID-111-100', '2020-01-01', 'Authority', 'Location', 'RU', 'NORM-004', 10, 'RU', 'QQ66WW', '2026-01-01', '2026-01-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-01-01', 'PASSPORT', 0, '643', NULL, 'other-id', '7700001', '2030-01-01', 1, 123, 'FGN01', 1, 1, 1234567890, '12:00:00', 3), + (222, 200, '02', 'CD456', 'ID-222-200', '2020-02-01', 'Authority2', 'Location2', 'US', 'NORM-005', 20, 'US', 'QQ77WW', '2026-02-01', '2026-02-01 00:00:00', 0, 0, NULL, NULL, 'Y', '2026-02-01', 'DRVLIC', 0, '840', NULL, 'other-id2', '7700002', '2031-02-01', 2, 456, 'FGN02', 1, 0, 9876543210, '15:30:00', 5); INSERT INTO INDIC.INFORMATION(FID, SERIAL_NUM, APP_NUM, APP_DATE, CREDITOR_TYPE, TYPE_FLAG, LOAN_TYPE, SHIPMENT_WAY, FLAG_OF_APPROVAL, APPROVAL_EXPR_DTE, REJECTED_AMT, REJ_AMT_CUR, REJECTION_DTE, REJECTION_REASON, AGREEMENT_NUM, APP_LOAN_TYP, DEFAULT_FLAG, LOAN_RETURNED_IND, OLD_APP_NUM, CANCELLATION_FLAG, MEMBER_CODE, FILE_SINCE_DT, LAST_UPDATED_DT, FREEZE_FLAG, SUPPRESS_FLAG, SUPPRESS_STR_DT, SUPPRESS_END_DT, INDIC_CRC) VALUES