Compare commits

..

5 commits

Author SHA1 Message Date
Ivan Nikolaev-Axenov
affc95d624 .gitlab-ci.yml and Dockerfile added 2026-06-01 18:24:27 +03:00
Ivan Nikolaev-Axenov
795eb7baae loader tests added, minor bug fixes 2026-06-01 18:21:09 +03:00
Ivan Nikolaev-Axenov
13739a9ebe IndicSearchProcessorTest added 2026-06-01 15:13:29 +03:00
Ivan Nikolaev-Axenov
03c72b4076 job cleaner cron added 2026-06-01 12:08:50 +03:00
Ivan Nikolaev-Axenov
4eab19e87e async jobs added 2026-05-28 18:25:55 +03:00
94 changed files with 6228 additions and 396 deletions

33
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,33 @@
image:
name: maven:3-eclipse-temurin-21-alpine
pull_policy: if-not-present
stages:
- build
- test
- publish
build:
stage: build
script:
- mvn clean compile -Dmaven.test.skip=true
resource_group: indic-search-service-test
test:
stage: test
script:
- mvn clean prepare-package
artifacts:
name: "$CI_COMMIT_REF_NAME"
expire_in: 1 day
paths:
- target/site
- target/jacoco.exec
resource_group: indic-search-service-test
publish:
stage: publish
when: manual
script:
- mvn -P with-docker-registry clean install -Dmaven.test.skip=true
resource_group: indic-search-service-test

36
Dockerfile Normal file
View file

@ -0,0 +1,36 @@
FROM eclipse-temurin:21-jre-alpine
ENV TZ="Europe/Moscow"
USER root
WORKDIR /opt/app
COPY maven/elastic-apm-agent-1.50.0.jar elastic-apm-agent.jar
COPY maven/indic-search-service*.jar indic-search-service.jar
COPY maven/application.properties application.properties
CMD java \
-javaagent:/opt/app/elastic-apm-agent.jar \
-Xmx${XMX_MB}m \
-XX:+UseZGC \
-XX:+ZGenerational \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=1234 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dnode_routing_suffix=${JVM_ROUTE} \
-Delastic.apm.service_name="${APM_SERVICE_NAME}" \
-Delastic.apm.server_urls="${APM_SERVER_URLS}" \
-Delastic.apm.application_packages=ru.nbch \
-Delastic.apm.environment="${APM_ENVIRONMENT}" \
-Delastic.apm.service_node_name="${APM_SERVICE_NODE_NAME}" \
-Delastic.apm.hostname="${APM_SERVICE_NODE_NAME}" \
-Delastic.apm.service_version=${APM_SERVICE_VERSION} \
-Delastic.apm.enable_log_correlation=true \
-Delastic.apm.stack_trace_limit=0 \
-Delastic.apm.span_stack_trace_min_duration=-1ms \
-Dlog4j2.formatMsgNoLookups=true \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5555 \
${JAVA_OPTS} \
-jar indic-search-service.jar \
--spring.config.location=application.properties

View file

@ -0,0 +1,26 @@
package ru.nbch.indicsearchservice.config;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.nbch.indicsearchservice.model.SearchJob;
@Configuration
public class IndicSearchConfig {
private final ExecutorService searchJobExecutor = Executors.newFixedThreadPool(5);
private final Map<UUID, SearchJob> searchJobs = new ConcurrentHashMap<>();
@Bean("searchJobExecutor")
public ExecutorService searchJobExecutor() {
return searchJobExecutor;
}
@Bean("searchJobsMap")
public Map<UUID, SearchJob> searchJobsMap() {
return searchJobs;
}
}

View file

@ -5,6 +5,7 @@ import java.nio.file.Path;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import ru.nbch.indicsearchservice.config.settings.cron.JobCleanerSettings;
@Configuration @Configuration
@ConfigurationProperties(prefix = "app") @ConfigurationProperties(prefix = "app")
@ -13,9 +14,11 @@ public class ApplicationSettings {
private DataSourceSettings dataSource; private DataSourceSettings dataSource;
private DataSourceSettings indicDataSource = new DataSourceSettings(); private DataSourceSettings indicDataSource = new DataSourceSettings();
private File storageDirectory = Path.of("/opt/app/indic-search-service-storage").toAbsolutePath().toFile(); private File storageDirectory = Path.of("/opt/app/indic-search-service-storage").toAbsolutePath().toFile();
@NestedConfigurationProperty
private JobCleanerSettings jobCleaner = new JobCleanerSettings();
public DataSourceSettings getDataSource() { public DataSourceSettings getDataSource() {
return dataSource; return dataSource;
} }
@ -39,4 +42,12 @@ public class ApplicationSettings {
public void setStorageDirectory(File storageDirectory) { public void setStorageDirectory(File storageDirectory) {
this.storageDirectory = storageDirectory; this.storageDirectory = storageDirectory;
} }
public JobCleanerSettings getJobCleaner() {
return jobCleaner;
}
public void setJobCleaner(JobCleanerSettings jobCleaner) {
this.jobCleaner = jobCleaner;
}
} }

View file

@ -0,0 +1,22 @@
package ru.nbch.indicsearchservice.config.settings.cron;
public class JobCleanerSettings {
private boolean enabled = true;
private String cron;
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public String getCron() {
return cron;
}
public void setCron(String cron) {
this.cron = cron;
}
}

View file

@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.responses.ApiResponses;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import java.util.Optional; import java.util.Optional;
import java.util.UUID;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError; import org.springframework.validation.FieldError;
@ -24,6 +25,7 @@ import ru.nbch.indicsearchservice.dto.request.AddSearchJobRequestDto;
import ru.nbch.indicsearchservice.dto.response.AddSearchJobResponseDto; import ru.nbch.indicsearchservice.dto.response.AddSearchJobResponseDto;
import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto; import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto;
import ru.nbch.indicsearchservice.exception.InternalException; import ru.nbch.indicsearchservice.exception.InternalException;
import ru.nbch.indicsearchservice.model.enums.ExportType;
import ru.nbch.indicsearchservice.service.IndicSearchService; import ru.nbch.indicsearchservice.service.IndicSearchService;
import ru.nbch.indicsearchservice.service.SettingsService; import ru.nbch.indicsearchservice.service.SettingsService;
@ -63,7 +65,7 @@ public class IndicSearchController {
description = "Success") description = "Success")
}) })
@GetMapping("/job_status/{id}") @GetMapping("/job_status/{id}")
public JobStatusResponseDto getJobStatus(@PathVariable("id") Long id) { public JobStatusResponseDto getJobStatus(@PathVariable("id") UUID id) {
return indicSearchService.getJobStatus(id); return indicSearchService.getJobStatus(id);
} }
@ -77,8 +79,8 @@ public class IndicSearchController {
description = "Success") description = "Success")
}) })
@GetMapping("/export/{id}") @GetMapping("/export/{id}")
public ResponseEntity<?> export(@PathVariable("id") Long id, public ResponseEntity<?> export(@PathVariable("id") UUID id,
@RequestParam(name = "type", defaultValue = "JSON") String exportType) { @RequestParam(name = "type", defaultValue = "JSON") ExportType exportType) {
return indicSearchService.export(id, exportType); return indicSearchService.export(id, exportType);
} }

View file

@ -0,0 +1,19 @@
package ru.nbch.indicsearchservice.cron;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.event.CronChangedEvent;
@Component
public class CronChangeListener {
private final CronJobManager cronJobManager;
public CronChangeListener(CronJobManager cronJobManager) {
this.cronJobManager = cronJobManager;
}
@EventListener
public void onCronChanged(CronChangedEvent event) {
cronJobManager.rescheduleNow(event.jobName(), event.newCron());
}
}

View file

@ -0,0 +1,5 @@
package ru.nbch.indicsearchservice.cron;
public interface CronJob {
CronJobName getCronJobName();
}

View file

@ -0,0 +1,78 @@
package ru.nbch.indicsearchservice.cron;
import jakarta.annotation.PostConstruct;
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;
import java.util.function.Supplier;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.service.SettingsService;
@Component
@EnableScheduling
public class CronJobManager {
private final TaskScheduler taskScheduler;
private final ApplicationSettings settings;
private final List<CronJob> cronJobs;
private final SettingsService settingsService;
private final Map<CronJobName, Runnable> tasks = new ConcurrentHashMap<>();
private final Map<CronJobName, ScheduledFuture<?>> futures = new ConcurrentHashMap<>();
public CronJobManager(TaskScheduler taskScheduler,
ApplicationSettings settings,
List<CronJob> cronJobs,
SettingsService settingsService) {
this.taskScheduler = taskScheduler;
this.settings = settings;
this.cronJobs = cronJobs;
this.settingsService = settingsService;
for (CronJob cronJob : cronJobs) {
if (cronJob instanceof Runnable runnableCronJob) {
tasks.put(cronJob.getCronJobName(), runnableCronJob);
}
}
}
@PostConstruct
public void scheduleAll() {
for (CronJob cronJob : cronJobs) {
if (cronJob instanceof Runnable) {
if (cronJob instanceof JobCleaner) {
Optional<String> cron = settingsService.getOptionalSettingsValueByName("jobCleaner.cron");
if (cron.isPresent()) {
settings.getJobCleaner().setCron(cron.get());
schedule(cronJob.getCronJobName(), cron::get);
}
} else {
return;
}
}
}
}
private void schedule(CronJobName jobName, Supplier<String> cronSupplier) {
Runnable task = tasks.get(jobName);
CronTrigger trigger = new CronTrigger(cronSupplier.get());
ScheduledFuture<?> f = taskScheduler.schedule(task, trigger);
futures.put(jobName, f);
}
public void rescheduleNow(CronJobName jobName, String newCron) {
ScheduledFuture<?> f = futures.get(jobName);
if (f != null) {
f.cancel(false);
}
CronTrigger trigger = CronTrigger.resumeLenientExecution(newCron, Instant.now());
ScheduledFuture<?> nf = taskScheduler.schedule(tasks.get(jobName), trigger);
futures.put(jobName, nf);
}
}

View file

@ -0,0 +1,5 @@
package ru.nbch.indicsearchservice.cron;
public enum CronJobName {
JOB_CLEANER
}

View file

@ -0,0 +1,102 @@
package ru.nbch.indicsearchservice.cron;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.time.LocalDateTime;
import java.util.Iterator;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import org.apache.commons.io.FilenameUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.exception.InternalException;
import ru.nbch.indicsearchservice.model.SearchJob;
import ru.nbch.indicsearchservice.service.SettingsService;
@Component
public class JobCleaner implements Runnable, CronJob {
private static final Logger log = LoggerFactory.getLogger(JobCleaner.class);
private final ApplicationSettings settings;
private final Map<UUID, SearchJob> searchJobs;
public JobCleaner(ApplicationSettings settings,
SettingsService settingsService,
@Qualifier("searchJobsMap") Map<UUID, SearchJob> searchJobs) {
this.settings = settings;
this.searchJobs = searchJobs;
Optional<String> enabled = settingsService.getOptionalSettingsValueByName("jobCleaner.enabled");
if (enabled.isPresent()) {
settings.getJobCleaner().setEnabled(Boolean.parseBoolean(enabled.get()));
} else {
log.warn("There is no jobCleaner.enabled in SETTINGS table!");
}
}
@Override
public void run() {
if (!settings.getJobCleaner().isEnabled()) {
log.debug("Job cleaning disabled");
return;
}
LocalDateTime hourBefore = LocalDateTime.now().minusHours(1);
// Очищаем Map
Iterator<Map.Entry<UUID, SearchJob>> iterator = searchJobs.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<UUID, SearchJob> entry = iterator.next();
SearchJob searchJob = entry.getValue();
if (searchJob.getFinishedAt().isBefore(hourBefore)) {
iterator.remove();
}
}
// Очищаем папку
for (File file : Optional.ofNullable(settings.getStorageDirectory().listFiles()).orElse(new File[0])) {
String fileNameWithoutExtension = FilenameUtils.getBaseName(file.getName());
String fileExtension = FilenameUtils.getExtension(file.getName());
UUID parsedUuid = null;
if (fileNameWithoutExtension.startsWith("AGGREGATED-")) {
try {
parsedUuid = UUID.fromString(fileNameWithoutExtension.replace("AGGREGATED-", ""));
} catch (Exception e) {
log.warn("Could not parse UUID from file name: {}, removing", fileNameWithoutExtension, e);
}
} else if (fileExtension.startsWith("json") || fileExtension.startsWith("xlsx")) {
try {
parsedUuid = UUID.fromString(fileNameWithoutExtension);
} catch (Exception e) {
log.warn("Could not parse UUID from file name: {}, removing", fileNameWithoutExtension, e);
}
} else {
try {
parsedUuid = UUID.fromString(fileNameWithoutExtension.substring(fileNameWithoutExtension.lastIndexOf('_') + 1));
} catch (Exception e) {
log.warn("Could not parse UUID from file name: {}, removing", fileNameWithoutExtension, e);
}
}
if (parsedUuid == null || !searchJobs.containsKey(parsedUuid)) {
try {
Files.deleteIfExists(file.toPath());
} catch (IOException e) {
throw new InternalException("Failed to delete file " + file + " " + e);
}
}
}
}
@Override
public CronJobName getCronJobName() {
return CronJobName.JOB_CLEANER;
}
}

View file

@ -3,25 +3,26 @@ package ru.nbch.indicsearchservice.dto.response;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.Objects; import java.util.Objects;
import java.util.UUID;
@Schema(description = "Add search job response data transfer object") @Schema(description = "Add search job response data transfer object")
public class AddSearchJobResponseDto { public class AddSearchJobResponseDto {
@Schema(description = "Job id", example = "1") @Schema(description = "Job id", example = "63e6dcb5-c5bd-4ce6-adb1-947ef2a2f22c")
@NotNull @NotNull
private Long jobId; private UUID jobId;
public AddSearchJobResponseDto() { public AddSearchJobResponseDto() {
} }
public AddSearchJobResponseDto(Long jobId) { public AddSearchJobResponseDto(UUID jobId) {
this.jobId = jobId; this.jobId = jobId;
} }
public Long getJobId() { public UUID getJobId() {
return jobId; return jobId;
} }
public void setJobId(Long jobId) { public void setJobId(UUID jobId) {
this.jobId = jobId; this.jobId = jobId;
} }

View file

@ -0,0 +1,9 @@
package ru.nbch.indicsearchservice.event;
import ru.nbch.indicsearchservice.cron.CronJobName;
public record CronChangedEvent(
CronJobName jobName,
String newCron
) {
}

View file

@ -46,9 +46,9 @@ public class ExcelExporter implements Exporter {
this.settings = settings; this.settings = settings;
} }
public void writeExcelFile(@Nullable Path aggregatedFile, UUID taskId, Long totalRows, Map<String, TableMetaData> tableMetaDataMap) { public Path writeExcelFile(@Nullable Path aggregatedFile, UUID taskId, Long totalRows, Map<String, TableMetaData> tableMetaDataMap) {
if (aggregatedFile == null) { if (aggregatedFile == null) {
return; return null;
} }
Path excelFile = settings.getStorageDirectory().toPath().resolve(taskId.toString() + ".xlsx"); Path excelFile = settings.getStorageDirectory().toPath().resolve(taskId.toString() + ".xlsx");
@ -93,6 +93,8 @@ public class ExcelExporter implements Exporter {
} catch (IOException e) { } catch (IOException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
return excelFile;
} }
private void writeToExcel(Workbook workbook, private void writeToExcel(Workbook workbook,

View file

@ -38,12 +38,12 @@ public class JsonExporter implements Exporter {
this.jsonMapper = jsonMapper; this.jsonMapper = jsonMapper;
} }
public void writeJsonFile(@Nullable Path aggregatedFile, public Path writeJsonFile(@Nullable Path aggregatedFile,
UUID taskId, UUID taskId,
SearchParameter searchParameter, SearchParameter searchParameter,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (aggregatedFile == null) { if (aggregatedFile == null) {
return; return null;
} }
boolean isPassportOgrnFid = searchParameter == SearchParameter.PASSPORT || boolean isPassportOgrnFid = searchParameter == SearchParameter.PASSPORT ||
@ -122,6 +122,8 @@ public class JsonExporter implements Exporter {
} catch (IOException e) { } catch (IOException e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
return jsonFile;
} }
private TableData buildTableDataHierarchy(List<String> rows, Map<String, TableMetaData> tableMetaDataMap) { private TableData buildTableDataHierarchy(List<String> rows, Map<String, TableMetaData> tableMetaDataMap) {

View file

@ -10,6 +10,7 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.exception.InternalException; import ru.nbch.indicsearchservice.exception.InternalException;
import ru.nbch.indicsearchservice.loader.subtable.AccountSubTableLoader; import ru.nbch.indicsearchservice.loader.subtable.AccountSubTableLoader;
import ru.nbch.indicsearchservice.model.TableMetaData; import ru.nbch.indicsearchservice.model.TableMetaData;
@ -59,6 +60,7 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor
} }
@Override @Override
@Transactional(readOnly = true)
public void searchBy(UUID taskId, public void searchBy(UUID taskId,
DataType dataType, DataType dataType,
SearchParameter searchParameter, SearchParameter searchParameter,
@ -117,6 +119,7 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor
} }
@Override @Override
@Transactional(readOnly = true)
public void searchById(UUID taskId, public void searchById(UUID taskId,
DataType dataType, DataType dataType,
SearchParameter searchParameter, SearchParameter searchParameter,
@ -126,10 +129,13 @@ public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderFor
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) { if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); accountSubTableLoaders.parallelStream().forEach(tl -> tl.searchByAccountFid(taskId, fids, tableFileMap, tableMetaDataMap));
} catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class BankruptcyTableLoader implements FirstLevelTableLoader, TableLoader
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) { if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class ConsumerBankruptcyTableLoader implements FirstLevelTableLoader, Tab
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) { if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -100,10 +100,12 @@ public class InformationTableLoader implements FirstLevelTableLoader, TableLoade
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) { if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class LegalTableLoader implements FirstLevelTableLoader, TableLoaderForId
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) { if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -100,10 +100,12 @@ public class RuApplicationTableLoader implements FirstLevelTableLoader, TableLoa
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuBankruptcyTableLoader implements FirstLevelTableLoader, TableLoad
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuCapabilityTableLoader implements FirstLevelTableLoader, TableLoad
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuDebtBurdenInfoTableLoader implements FirstLevelTableLoader, Table
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuObligPartTakeTableLoader implements FirstLevelTableLoader, TableL
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuOtherLegalTableLoader implements FirstLevelTableLoader, TableLoad
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -77,10 +77,12 @@ public class RuSettledTableLoader implements FirstLevelTableLoader, TableLoaderF
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -116,10 +116,13 @@ public class RuUidTableLoader implements FirstLevelTableLoader, TableLoaderForId
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, fids, tableFileMap, tableMetaDataMap));
} catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class AccountAmendTableLoader implements AccountSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccountAmend(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccountAmend(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class BankGuaranteeTableLoader implements AccountSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankGuarantee(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankGuarantee(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class CollateralTableLoader implements AccountSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromCollateral(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromCollateral(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class GuarantorTableLoader implements AccountSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromGuarantor(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromGuarantor(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class PaymentTableLoader implements AccountSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromPayment(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromPayment(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAccountAmtTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAcquirerIndividTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAcquirerLegalTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAllArrearsTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAmendmentTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuAmountInfoTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuArrearTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuBankruptcyBlocksTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuCoborrowerTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuCollatInsuredTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuCollatRepayTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuCollateralBlocksTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuCollateralTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuContractTermsChangesTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuDueArrearTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuFundDateTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuGuaranteeRepayTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuGuarantorTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuIndepGuarantorTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuLegalRecordTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuMonthAverPaymtTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuObligAccountTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuObligTerminationTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuObligsRcBankruptTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuObligsRcLiquidTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -37,10 +37,12 @@ public class RuOverallvalTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuPastDueArrearTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuPaymtConditionTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuPaymtTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuServiceCoTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuSourceNonMonetObligTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuSubjectNonMonetObligTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuSubmitHoldTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -36,10 +36,12 @@ public class RuTradeTableLoader implements RuUidSubTableLoader {
Set<Integer> fids, Set<Integer> fids,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) { Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) { if (!fids.isEmpty()) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap)); try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) {
} catch (IOException e) { tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
throw new InternalException("Failed to read cursor " + e); } catch (IOException e) {
throw new InternalException("Failed to read cursor " + e);
}
} }
} }
} }

View file

@ -0,0 +1,61 @@
package ru.nbch.indicsearchservice.manager;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.dto.request.AddSearchJobRequestDto;
import ru.nbch.indicsearchservice.model.SearchJob;
import ru.nbch.indicsearchservice.model.enums.ExportType;
import ru.nbch.indicsearchservice.model.enums.JobStatus;
import ru.nbch.indicsearchservice.processor.IndicSearchProcessor;
@Component
public class IndicSearchJobManager {
private final ExecutorService searchJobExecutor;
private final Map<UUID, SearchJob> searchJobs;
private final IndicSearchProcessor indicSearchProcessor;
public IndicSearchJobManager(@Qualifier("searchJobExecutor") ExecutorService searchJobExecutor,
@Qualifier("searchJobsMap") Map<UUID, SearchJob> searchJobs,
IndicSearchProcessor indicSearchProcessor) {
this.searchJobExecutor = searchJobExecutor;
this.searchJobs = searchJobs;
this.indicSearchProcessor = indicSearchProcessor;
}
public UUID addSearchJob(AddSearchJobRequestDto request) {
UUID uuid = UUID.randomUUID();
SearchJob newSearchJob = new SearchJob(
uuid,
request.getDataType(),
request.getSearchParameter(),
request.getSearchValue(),
request.getMemberCode()
);
searchJobs.put(uuid, newSearchJob);
searchJobExecutor.submit(() -> indicSearchProcessor.aggregateTables(newSearchJob));
return uuid;
}
public JobStatus getJobStatus(UUID id) {
SearchJob searchJob = searchJobs.get(id);
if (searchJob != null) {
return searchJob.getJobStatus();
}
return null;
}
public ResponseEntity<?> export(UUID id, ExportType exportType) {
SearchJob searchJob = searchJobs.get(id);
if (searchJob == null) {
return ResponseEntity.notFound().build();
}
return indicSearchProcessor.export(searchJob, exportType);
}
}

View file

@ -0,0 +1,134 @@
package ru.nbch.indicsearchservice.model;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.JobStatus;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
public class SearchJob {
private final UUID uuid;
private final DataType dataType;
private final SearchParameter searchParameter;
private final String searchValue;
private final String memberCode;
private JobStatus jobStatus;
private Path aggregatedFilePath;
private Long rowCount;
private Map<String, TableMetaData> tableMetaDataMap;
private LocalDateTime createdAt;
private LocalDateTime finishedAt;
public SearchJob(UUID uuid, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode) {
this.uuid = uuid;
this.dataType = dataType;
this.searchParameter = searchParameter;
this.searchValue = searchValue;
this.memberCode = memberCode;
this.setJobStatus(JobStatus.QUEUED);
this.createdAt = LocalDateTime.now();
}
public UUID getUuid() {
return uuid;
}
public DataType getDataType() {
return dataType;
}
public SearchParameter getSearchParameter() {
return searchParameter;
}
public String getSearchValue() {
return searchValue;
}
public String getMemberCode() {
return memberCode;
}
public JobStatus getJobStatus() {
return jobStatus;
}
public void setJobStatus(JobStatus jobStatus) {
this.jobStatus = jobStatus;
}
public Path getAggregatedFilePath() {
return aggregatedFilePath;
}
public void setAggregatedFilePath(Path aggregatedFilePath) {
this.aggregatedFilePath = aggregatedFilePath;
}
public Long getRowCount() {
return rowCount;
}
public void setRowCount(Long rowCount) {
this.rowCount = rowCount;
}
public Map<String, TableMetaData> getTableMetaDataMap() {
return tableMetaDataMap;
}
public void setTableMetaDataMap(Map<String, TableMetaData> tableMetaDataMap) {
this.tableMetaDataMap = tableMetaDataMap;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public LocalDateTime getFinishedAt() {
return finishedAt;
}
public void setFinishedAt(LocalDateTime finishedAt) {
this.finishedAt = finishedAt;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
SearchJob searchJob = (SearchJob) o;
return Objects.equals(uuid, searchJob.uuid) && dataType == searchJob.dataType && searchParameter == searchJob.searchParameter && Objects.equals(searchValue, searchJob.searchValue) && Objects.equals(memberCode, searchJob.memberCode) && jobStatus == searchJob.jobStatus && Objects.equals(aggregatedFilePath, searchJob.aggregatedFilePath) && Objects.equals(rowCount, searchJob.rowCount) && Objects.equals(tableMetaDataMap, searchJob.tableMetaDataMap) && Objects.equals(createdAt, searchJob.createdAt) && Objects.equals(finishedAt, searchJob.finishedAt);
}
@Override
public int hashCode() {
return Objects.hash(uuid, dataType, searchParameter, searchValue, memberCode, jobStatus, aggregatedFilePath, rowCount, tableMetaDataMap, createdAt, finishedAt);
}
@Override
public String toString() {
return "SearchJob{" +
"uuid=" + uuid +
", dataType=" + dataType +
", searchParameter=" + searchParameter +
", searchValue='" + searchValue + '\'' +
", memberCode='" + memberCode + '\'' +
", jobStatus=" + jobStatus +
", filePath=" + aggregatedFilePath +
", rowCount=" + rowCount +
", tableMetaDataMap=" + tableMetaDataMap +
", createdAt=" + createdAt +
", finishedAt=" + finishedAt +
'}';
}
}

View file

@ -0,0 +1,6 @@
package ru.nbch.indicsearchservice.model.enums;
public enum ExportType {
XLSX,
JSON
}

View file

@ -0,0 +1,207 @@
package ru.nbch.indicsearchservice.processor;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.mutable.MutableLong;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ContentDisposition;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import ru.nbch.indicsearchservice.aggregator.FileAggregator;
import ru.nbch.indicsearchservice.exception.InternalException;
import ru.nbch.indicsearchservice.exporter.ExcelExporter;
import ru.nbch.indicsearchservice.exporter.JsonExporter;
import ru.nbch.indicsearchservice.loader.FirstLevelTableLoader;
import ru.nbch.indicsearchservice.model.SearchJob;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.ExportType;
import ru.nbch.indicsearchservice.model.enums.JobStatus;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.TableMetaDataUtil;
@Component
public class IndicSearchProcessor {
private static final Logger log = LoggerFactory.getLogger(IndicSearchProcessor.class);
private final List<FirstLevelTableLoader> tableLoaders;
private final List<FileAggregator> fileAggregators;
private final ExcelExporter excelExporter;
private final JsonExporter jsonExporter;
private final TableMetaDataUtil tableMetaDataUtil;
public IndicSearchProcessor(List<FirstLevelTableLoader> tableLoaders,
List<FileAggregator> fileAggregators,
ExcelExporter excelExporter,
JsonExporter jsonExporter,
TableMetaDataUtil tableMetaDataUtil) {
this.tableLoaders = tableLoaders;
this.fileAggregators = fileAggregators;
this.excelExporter = excelExporter;
this.jsonExporter = jsonExporter;
this.tableMetaDataUtil = tableMetaDataUtil;
}
public void aggregateTables(SearchJob job) {
job.setJobStatus(JobStatus.IN_PROGRESS);
StopWatch sw = new StopWatch();
// Подготовительный этап. Получение мета данных из БД
log.info("Prep step started. Getting metadata from database");
sw.start();
Map<String, TableMetaData> tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(job.getDataType(), job.getSearchParameter());
job.setTableMetaDataMap(tableMetaDataMap);
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
// Первый этап. Получение данных из БД и заполнение файлов
log.info("First step started. Getting data from database and filling csv files");
sw.start();
Map<String, Path> tableFileMap = new ConcurrentHashMap<>();
tableLoaders.parallelStream().forEach(tl -> tl.searchBy(
job.getUuid(),
job.getDataType(),
job.getSearchParameter(),
job.getSearchValue(),
job.getMemberCode().substring(0, 6),
tableFileMap,
tableMetaDataMap
));
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
// Второй этап. Объединение файлов в один
log.info("Second step started. Aggregating table files into one.");
sw.start();
MutableLong rowCounter = new MutableLong();
Path aggregatedFile = fileAggregators.stream().map(fa -> fa.aggregateFiles(
job.getUuid(),
job.getDataType(),
job.getSearchParameter(),
job.getSearchValue(),
job.getMemberCode().substring(0, 6),
tableFileMap,
rowCounter))
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
job.setAggregatedFilePath(aggregatedFile);
job.setRowCount(rowCounter.longValue());
job.setFinishedAt(LocalDateTime.now());
job.setJobStatus(JobStatus.DONE);
sw.stop();
log.info(sw.prettyPrint());
for (Path tableFilePath : tableFileMap.values()) {
try {
Files.deleteIfExists(tableFilePath);
} catch (IOException e) {
throw new InternalException("Failed to delete file " + tableFilePath + " " + e);
}
}
}
public ResponseEntity<?> export(SearchJob job, ExportType exportType) {
StopWatch sw = new StopWatch();
sw.start();
UUID taskId = job.getUuid();
SearchParameter searchParameter = job.getSearchParameter();
Path aggregatedFile = job.getAggregatedFilePath();
long rowCount = job.getRowCount();
Map<String, TableMetaData> tableMetaDataMap = job.getTableMetaDataMap();
Path exportedFile;
String fileName = "err.txt";
if (exportType == ExportType.JSON) {
fileName = "output.json";
exportedFile = jsonExporter.writeJsonFile(aggregatedFile, taskId, searchParameter, tableMetaDataMap);
} else if (exportType == ExportType.XLSX) {
fileName = "NBKI table.xlsx";
tableMetaDataUtil.fillTableMetaDataWithLocalization(tableMetaDataMap);
exportedFile = excelExporter.writeExcelFile(aggregatedFile, taskId, rowCount, tableMetaDataMap);
} else {
exportedFile = null;
}
// long rowLimit = Long.parseLong(settingsService.getSettingsValueByName("LimitDB"));
// if (rowCount < rowLimit && !IS_EXPORT_AS_EXCEL) {
// jsonExporter.writeJsonFile(aggregatedFile, taskId, searchParameter, tableMetaDataMap);
// } else {
// tableMetaDataUtil.fillTableMetaDataWithLocalization(tableMetaDataMap);
// excelExporter.writeExcelFile(aggregatedFile, taskId, rowCount, tableMetaDataMap);
// }
sw.stop();
log.info(sw.prettyPrint());
if (exportedFile == null) {
return ResponseEntity.internalServerError().build();
}
long contentLength;
try {
contentLength = Files.size(exportedFile);
} catch (IOException e) {
log.error("Failed to get temp excel file size!", e);
try {
Files.deleteIfExists(exportedFile);
} catch (IOException ignored) {
}
throw new InternalException("Failed to get exported file size! " + e);
}
InputStreamResource exportedFileResource;
try {
exportedFileResource = new InputStreamResource(new FileInputStream(exportedFile.toFile()) {
@Override
public void close() throws IOException {
super.close();
Files.deleteIfExists(exportedFile);
}
});
} catch (IOException e) {
log.error("Failed to create exported file resource!", e);
try {
Files.deleteIfExists(exportedFile);
} catch (IOException ignored) {
}
throw new InternalException("Failed to create exported file resource! " + e);
}
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.contentLength(contentLength)
.header(HttpHeaders.CONTENT_DISPOSITION,
ContentDisposition.attachment()
.filename(fileName, StandardCharsets.UTF_8)
.build()
.toString())
.body(exportedFileResource);
}
}

View file

@ -1,151 +1,36 @@
package ru.nbch.indicsearchservice.service; package ru.nbch.indicsearchservice.service;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.mutable.MutableLong;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import ru.nbch.indicsearchservice.aggregator.FileAggregator;
import ru.nbch.indicsearchservice.dto.request.AddSearchJobRequestDto; import ru.nbch.indicsearchservice.dto.request.AddSearchJobRequestDto;
import ru.nbch.indicsearchservice.dto.response.AddSearchJobResponseDto; import ru.nbch.indicsearchservice.dto.response.AddSearchJobResponseDto;
import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto; import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto;
import ru.nbch.indicsearchservice.exception.InternalException; import ru.nbch.indicsearchservice.manager.IndicSearchJobManager;
import ru.nbch.indicsearchservice.exporter.ExcelExporter; import ru.nbch.indicsearchservice.model.enums.ExportType;
import ru.nbch.indicsearchservice.exporter.JsonExporter; import ru.nbch.indicsearchservice.model.enums.JobStatus;
import ru.nbch.indicsearchservice.loader.FirstLevelTableLoader;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.TableMetaDataUtil;
@Service @Service
public class IndicSearchService { public class IndicSearchService {
private static final Logger log = LoggerFactory.getLogger(IndicSearchService.class); private final IndicSearchJobManager indicSearchJobManager;
private static final boolean IS_EXPORT_AS_EXCEL = false; public IndicSearchService(IndicSearchJobManager indicSearchJobManager) {
this.indicSearchJobManager = indicSearchJobManager;
private final List<FirstLevelTableLoader> tableLoaders;
private final List<FileAggregator> fileAggregators;
private final ExcelExporter excelExporter;
private final JsonExporter jsonExporter;
private final SettingsService settingsService;
private final TableMetaDataUtil tableMetaDataUtil;
public IndicSearchService(List<FirstLevelTableLoader> tableLoaders,
List<FileAggregator> fileAggregators,
ExcelExporter excelExporter,
JsonExporter jsonExporter,
SettingsService settingsService,
TableMetaDataUtil tableMetaDataUtil) {
this.tableLoaders = tableLoaders;
this.fileAggregators = fileAggregators;
this.excelExporter = excelExporter;
this.jsonExporter = jsonExporter;
this.settingsService = settingsService;
this.tableMetaDataUtil = tableMetaDataUtil;
} }
public AddSearchJobResponseDto addSearchJob(AddSearchJobRequestDto request) { public AddSearchJobResponseDto addSearchJob(AddSearchJobRequestDto request) {
UUID taskId = UUID.randomUUID(); UUID jobId = indicSearchJobManager.addSearchJob(request);
StopWatch sw = new StopWatch(); return new AddSearchJobResponseDto(jobId);
// Подготовительный этап. Получение мета данных из БД
log.info("Prep step started. Getting metadata from database");
sw.start();
Map<String, TableMetaData> tableMetaDataMap = tableMetaDataUtil.prepareTableMetaData(request.getDataType(), request.getSearchParameter());
long rowLimit = Long.parseLong(settingsService.getSettingsValueByName("LimitDB"));
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
// Первый этап. Получение данных из БД и заполнение файлов
log.info("First step started. Getting data from database and filling csv files");
sw.start();
Map<String, Path> tableFileMap = new ConcurrentHashMap<>();
tableLoaders.parallelStream().forEach(tl -> tl.searchBy(
taskId,
request.getDataType(),
request.getSearchParameter(),
request.getSearchValue(),
request.getMemberCode().substring(0, 6),
tableFileMap,
tableMetaDataMap
));
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
// Второй этап. Объединение файлов в один
log.info("Second step started. Aggregating table files into one.");
sw.start();
MutableLong rowCounter = new MutableLong();
Path aggregatedFile = fileAggregators.stream().map(fa -> fa.aggregateFiles(
taskId,
request.getDataType(),
request.getSearchParameter(),
request.getSearchValue(),
request.getMemberCode().substring(0, 6),
tableFileMap,
rowCounter))
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
for (Path tableFilePath : tableFileMap.values()) {
try {
Files.deleteIfExists(tableFilePath);
} catch (IOException e) {
throw new InternalException("Failed to delete file " + tableFilePath + " " + e);
}
}
// Третий этап. Экспорт агрегированного файла в JSON или XLSX
log.info("Third step started. Exporting aggregated file into JSON/XLSX.");
sw.start();
if (rowCounter.longValue() < rowLimit && !IS_EXPORT_AS_EXCEL) {
jsonExporter.writeJsonFile(aggregatedFile, taskId, request.getSearchParameter(), tableMetaDataMap);
} else {
tableMetaDataUtil.fillTableMetaDataWithLocalization(tableMetaDataMap);
excelExporter.writeExcelFile(aggregatedFile, taskId, rowCounter.longValue(), tableMetaDataMap);
}
sw.stop();
log.info(sw.prettyPrint());
try {
if (aggregatedFile != null) {
Files.deleteIfExists(aggregatedFile);
}
} catch (IOException e) {
throw new InternalException("Failed to delete file " + aggregatedFile + " " + e);
}
return null;
} }
public JobStatusResponseDto getJobStatus(Long id) { public JobStatusResponseDto getJobStatus(UUID id) {
return null; JobStatus jobStatus = indicSearchJobManager.getJobStatus(id);
return new JobStatusResponseDto(jobStatus);
} }
public ResponseEntity<?> export(Long id, String exportType) { public ResponseEntity<?> export(UUID id, ExportType exportType) {
return null; return indicSearchJobManager.export(id, exportType);
} }
} }

View file

@ -11,6 +11,8 @@ import java.util.Optional;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.cron.CronJobName;
import ru.nbch.indicsearchservice.event.CronChangedEvent;
import ru.nbch.indicsearchservice.event.DataSourceChangedEvent; import ru.nbch.indicsearchservice.event.DataSourceChangedEvent;
import ru.nbch.indicsearchservice.exception.InternalException; import ru.nbch.indicsearchservice.exception.InternalException;
import ru.nbch.indicsearchservice.model.Settings; import ru.nbch.indicsearchservice.model.Settings;
@ -19,6 +21,9 @@ import ru.nbch.indicsearchservice.util.DataSourceUpdater;
@Service @Service
public class SettingsService { public class SettingsService {
private static final String STORAGE_SETTINGS = "indic-search-service-storage"; // todo: change key
private static final String JOB_CLEANER_SETTINGS = "jobCleaner";
private final SettingsMapper settingsMapper; private final SettingsMapper settingsMapper;
private final ApplicationSettings localSettings; private final ApplicationSettings localSettings;
private final ApplicationEventPublisher publisher; private final ApplicationEventPublisher publisher;
@ -31,12 +36,6 @@ public class SettingsService {
this.publisher = publisher; this.publisher = publisher;
} }
public String getSettingsValueByName(String name) {
return settingsMapper.findByName(name)
.orElseThrow(() -> new InternalException("Setting with key: " + name + " was not found in database!"))
.getValue();
}
public Map<String, Optional<String>> getSettingsValuesByNames(List<String> names) { public Map<String, Optional<String>> getSettingsValuesByNames(List<String> names) {
if (names == null || names.isEmpty()) { if (names == null || names.isEmpty()) {
return Map.of(); return Map.of();
@ -68,17 +67,29 @@ public class SettingsService {
} }
public void updateLocalSettings() { public void updateLocalSettings() {
Optional<String> newStorageDirectory = getOptionalSettingsValueByName("indic-search-service-storage"); // todo: change key Map<String, Optional<String>> newSettings = getSettingsValuesByNames(List.of(
STORAGE_SETTINGS,
JOB_CLEANER_SETTINGS + ".enabled",
JOB_CLEANER_SETTINGS + ".cron"
));
if (newSettings.get(STORAGE_SETTINGS).isPresent()) {
String newStorageDirectory = newSettings.get(STORAGE_SETTINGS).get();
try {
Files.createDirectories(Paths.get(newStorageDirectory));
} catch (IOException e) {
throw new InternalException("Failed to create directory " + newStorageDirectory + " " + e);
}
localSettings.setStorageDirectory(new File(newStorageDirectory));
}
if (newSettings.get(JOB_CLEANER_SETTINGS + ".enabled").isPresent()) {
localSettings.getJobCleaner().setEnabled(Boolean.parseBoolean(newSettings.get(JOB_CLEANER_SETTINGS + ".enabled").get()));
}
if (newSettings.get(JOB_CLEANER_SETTINGS + ".cron").isPresent()) {
publisher.publishEvent(new CronChangedEvent(CronJobName.JOB_CLEANER, newSettings.get(JOB_CLEANER_SETTINGS + ".cron").get()));
}
publisher.publishEvent(new DataSourceChangedEvent(DataSourceUpdater.DataSourceType.INDIC)); publisher.publishEvent(new DataSourceChangedEvent(DataSourceUpdater.DataSourceType.INDIC));
if (newStorageDirectory.isPresent()) {
try {
Files.createDirectories(Paths.get(newStorageDirectory.get()));
} catch (IOException e) {
throw new InternalException("Failed to create directory " + newStorageDirectory.get() + " " + e);
}
localSettings.setStorageDirectory(new File(newStorageDirectory.get()));
}
} }
} }

View file

@ -1,13 +0,0 @@
package ru.nbch.indicsearchservice;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class IndicSearchServiceApplicationTests {
@Test
void contextLoads() {
}
}

View file

@ -0,0 +1,98 @@
package ru.nbch.indicsearchservice.config;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.UUID;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.JdbcType;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.transaction.PlatformTransactionManager;
import ru.nbch.indicsearchservice.util.typehandler.NullableLocalDateTimeTypeHandler;
import ru.nbch.indicsearchservice.util.typehandler.NullableLocalDateTypeHandler;
@Configuration
@MapperScan(
basePackages = "ru.nbch.indicsearchservice.repository.bank",
sqlSessionFactoryRef = "bankSqlSessionFactory"
)
public class DataSourceConfig {
private static final Logger log = LoggerFactory.getLogger(DataSourceConfig.class);
private final UUID uuid = UUID.randomUUID();
@Bean(name = "bankDataSource")
public DataSource dataSource() throws IOException {
log.info("Connecting to H2 in DB2 mode...");
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.h2.Driver");
config.setJdbcUrl("jdbc:h2:mem:bankcabinet-" + this.uuid + ";MODE=DB2");
config.setUsername("sa");
config.setPassword("password");
config.setMaximumPoolSize(10);
config.setIdleTimeout(600000);
HikariDataSource dataSource = new HikariDataSource(config);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.execute("CREATE SCHEMA IF NOT EXISTS ROS9LK");
jdbcTemplate.execute("SET SCHEMA ROS9LK");
ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
ClassPathResource resource = new ClassPathResource("sql/ros9lk/bank.sql");
String sql = new String(resource.getInputStream().readAllBytes(), StandardCharsets.UTF_8);
sql = sql.replaceAll("LONG VARCHAR", "LONGVARCHAR");
sql = sql.replaceAll("CLOB\\(\\d*\\)", "CLOB");
ByteArrayResource fixedResource = new ByteArrayResource(sql.getBytes(StandardCharsets.UTF_8));
populator.addScript(fixedResource);
DatabasePopulatorUtils.execute(populator, dataSource);
return dataSource;
}
@Bean(name = "bankSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("bankDataSource") DataSource dataSource) throws Exception {
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
configuration.getTypeHandlerRegistry().register(LocalDate.class, JdbcType.DATE, new NullableLocalDateTypeHandler());
configuration.getTypeHandlerRegistry().register(LocalDateTime.class, JdbcType.TIMESTAMP, new NullableLocalDateTimeTypeHandler());
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setConfiguration(configuration);
sqlSessionFactoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("file:src/main/resources/mappers/bank/*.xml")
);
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "bankTransactionManager")
@Primary
public PlatformTransactionManager transactionManager(@Qualifier("bankDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}

View file

@ -13,20 +13,23 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.TableMetaData; import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
@SpringBootTest @SpringBootTest
@ActiveProfiles("test")
class JsonExporterTest { class JsonExporterTest {
@Autowired @Autowired
ApplicationSettings settings; private ApplicationSettings settings;
@Autowired @Autowired
JsonExporter jsonExporter; private JsonExporter jsonExporter;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile()); settings.setStorageDirectory(Path.of("src/test/resources/storage").toFile());
settings.getJobCleaner().setEnabled(false);
} }
@Test @Test

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

View file

@ -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<Path> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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<String, Path> tableFileMap = new ConcurrentHashMap<>();
Map<String, TableMetaData> 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<String, Path> entry : tableFileMap.entrySet()) {
String tableName = entry.getKey();
Path filePath = entry.getValue();
List<String> 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");
}
}
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,18 +1,3 @@
spring.application.name=indic-search-service spring.application.name=indic-search-service
logging.level.org.springframework.boot.context.config=DEBUG logging.level.org.springframework.boot.context.config=DEBUG
# Database properties
app.data-source.driver=com.ibm.db2.jcc.DB2Driver
app.data-source.username=ros9lk
app.data-source.password=ros9lk
app.data-source.url=jdbc:db2://10.230.227.21:2667/DEVSUPPL:currentSchema=ROS9LK;
app.data-source.connection-timeout=40000
app.data-source.validation-timeout=5000
app.data-source.idle-timeout=600000
app.data-source.max-pool-size=10
app.data-source.max-lifetime=1800000
app.data-source.keep-alive-time=120000
app.storage-directory=C:\\Users\\inikolaev\\Desktop\\1
#app.storage-directory=C:\\Users\\ivan\\Desktop\\storage

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,234 @@
CREATE TABLE ROS9LK.LOCALIZATION_OBJECT
(
ID BIGINT generated by default as identity primary key,
VERSION BIGINT NOT NULL,
CODE VARCHAR(255) NOT NULL,
DATE_CREATED TIMESTAMP(6) NOT NULL,
LAST_UPDATED TIMESTAMP(6) NOT NULL,
LOC VARCHAR(4) NOT NULL,
RELEVANCE SMALLINT NOT NULL,
TEXT VARCHAR(2000) NOT NULL
);
CREATE TABLE ROS9LK.SETTINGS
(
ID BIGINT generated by default as identity primary key,
VERSION BIGINT NOT NULL,
NAME VARCHAR(255) NOT NULL UNIQUE,
"VALUE" VARCHAR(2000) NOT NULL
);
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'indic-search-service-storage', 'src/test/resources/storage');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'jobCleaner.enabled', 'false');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'jobCleaner.cron', '0 * * * * ?');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.driver', 'org.h2.Driver');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.url', 'jdbc:h2:mem:indic;MODE=DB2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.username', 'sa');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.password', 'password');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.max-pool-size', '50');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'datasource.indic.max-idle-time', '300');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.UUID.tables', 'RU_UID');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.ACCT_NUM.tables', 'RU_UID');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.APPLICATION_NUMBER.tables', 'RU_APPLICATION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.OLD_APP_NUM.tables', 'RU_APPLICATION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.ID_NORM.tables', 'RU_UID;RU_DEBT_BURDEN_INFO');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.OGRN.tables', 'RU_UID;RU_APPLICATION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.GUTDF.FID.tables', 'RU_UID;RU_DEBT_BURDEN_INFO');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.UUID.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.ACCT_NUM.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.OLD_APP_NUM.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.ID_NORM.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.OGRN.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.FID.tables', 'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.ACCOUNT_SERIAL_NUMBER.tables',
'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.form.TUTDF.INFORMATION_SERIAL_NUMBER.tables',
'ACCOUNT;ACCOUNT_AMEND');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.subTables.RU_UID',
'RU_COLLATERAL;RU_COLLATERAL_BLOCKS;RU_GUARANTOR');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.ACCOUNT.fields',
'FID;SERIAL_NUM;MEMBER_CODE;ACCT_NUM;ACCT_TYPE;OWNER_INDIC;OPENED_DT;LAST_PAYMT_DT;ACCT_RTE_CDE;ACCT_RTE_DTE;REPORTING_DT;CREDIT_LIMIT;CUR_BALANCE_AMT;AMT_PAST_DUE;TERMS_AMT;TERMS_FREQUENCY;PAYMT_PAT;CURRENCY_CODE;COLTRL_TYP_CDE;CLOSED_DT;PAYT_DUE_DTE;INT_PAYT_DUE_DTE;INT_PAYT_FREQ_CDE;ACCT_NUM_DISPLAY;CONSENT;POSTED_DT;NARRATIVE_CODE1;NARRATIVE_CODE2;HIGH_CREDIT_AMT;TERMS_NUM_PAYMTS;BALOON_PAYMT_AMT;BALOON_PAYMT_DT;LAST_PURCHASED_DT;FIRST_DELQ_DT;MAX_DELQ_DT;MAX_DELQ;MAX_DELQ_AMT_DT;MAX_DELQ_AMT;MONTHS_REVIEWED;NUM_DAYS_30;NUM_DAYS_60;NUM_DAYS_90;NUM_DAYS_120;PAYMT_PAT_START_DT;SRC_COUNTRY_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC;AMT_OUTSTANDING;GUARANTOR_IND;DEBT_SECURED;GUARANTEED_SUM;GUARANTEED_TERM;BANK_GUR_IND;BANK_SEC_DEBT;BANK_GUD_SUM;BANK_GUD_TERM;COLL_VALUE;COLL_DATE;COLL_EXPR_DATE;VAL_OF_CREDIT;ACQUIRER_NAME;ACQ_REG_DATA;ACQ_TAX_ID;ACQ_INS_NUM;PERF_OF_OBLIGATION;PRINCIPAL_OUTSTANDING;INT_OUTSTANDING;OTHER_AMT_OUTSTANDING;PRINCIPAL_PAST_DUE;INT_PAST_DUE;OTHER_AMT_PAST_DUE;GRACE_END_DT;MOP;UUID;GRACE_DECLINED_DT;GRACE_REASON;GRACE_START_DT;OVERALL_VAL_OF_CREDIT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.ACCOUNT_AMEND.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;CREDIT_LIMIT;TERMS_AMT;CURRENCY_CODE;CLOSED_DT;PAYT_DUE_DTE;INT_PAYT_DUE_DTE;VAL_OF_CREDIT;AMEND_TYPE;GRACE_END_DT;REPORTING_DT;FILE_SINCE_DT;LAST_UPDATED_DT;GRACE_DECLINED_DT;GRACE_REASON;GRACE_START_DT;OVERALL_VAL_OF_CREDIT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.BANKRUPTCY.fields',
'FID;SERIAL_NUM;COURT;CASE_NUM;DCSN_DTE;REPORTED_DT;PLNTFF_NME;STATUS;RESOL_TXT;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;SRC_COUNTRY_CODE;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.BANK_GUARANTEE.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;AGR_NUM;VOL_OF_DEBT;SUM;TERM;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC;TERMINATION_REASONS;CURRENCY_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.COLLATERAL.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;AGR_NUM;COLLTRL_TYP_CDE;VALUE;DATE;EXPR_DATE;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC;CURRENCY_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.CONSUMER_BANKRUPTCY.fields',
'FID;SERIAL_NUM;MEMBER_CODE;CASE_ID;REPORTED_DT;BANKRUPTCY_PROC;DT_BANKRUPTCYREPORTED;DT_BANKRUPTCYCLOSED;ADDITIONAL_INFO;OTHER_INFO;DT_INCLUSION;DT_POWERSTART;DT_POWEREND;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC;SRC_COUNTRY_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.GUARANTOR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;AGR_NUM;VOL_OF_DEBT;SUM;TERM;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC;CURRENCY_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.ID.fields',
'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');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.INFORMATION.fields',
'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');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.LEGAL.fields',
'FID;SERIAL_NUM;FILING_NUMBER;COURT;REPORTED_DT;DCSN_DTE;SATISFIED_DT;PLAINTIFF;RESOL_TXT;SRC_COUNTRY_CODE;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT;INDIC_CRC');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.PAYMENT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;PAYMT_AMT;PAYMT_AMT_DUE;CURRENCY_CODE;PAYMT_DTE;PAYMT_VOL;M24_TOTAL;MEMBER_CODE;FILE_SINCE_DT;LAST_UPDATED_DT;FREEZE_FLAG;SUPPRESS_FLAG;SUPPRESS_STR_DT;SUPPRESS_END_DT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_APPLICATION.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;REQUESTED_FLAG_INDICATOR_CODE;REQUESTED_AMT;REQUESTED_CURRENCY_CODE;APPLICATION_NUMBER;APPLICATION_DATE;CREDITOR_TYPE_CODE;APPLICATION_SHIPMENT_CODE;APPROVAL_EXPIRE_DATE;REJECTED_DATE;REJECTED_REASON_CODE;OLD_APP_NUM;CRC_SEARCH;CANCELLATION_FLAG;CANCELLATION_TSP;CONSIDERATION_SHIPMENT_DATE;TRANSIT_DATE;REQUESTLOAN_CODE;CONSIDERATION_SHIPMENT_CODE;APPLICATION_CODE;HEADER_REPORTING_DT;LOAN_SUM;VERSION;DEAL_FLAG;REAL_MEMBERCODE;SOURCE_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_BANKRUPTCY.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;CASE_NUM;STAGE_CODE;PROCEDURE_INCLUSION_DT;PROCEDURE_LINK;ILLEG_ACT_CODE;ILLEG_ACT_INFO_DT;FICTITIOUS_ACT_CODE;FICTITIOUS_ACT_DT;ADDITIONAL_INFO;MEMBER_BC_START;MEMBER_BC_END;HEADER_REPORTING_DT;ILLEG_ACT_INFO_DT_EXTRA;FICTITIOUS_ACT_DT_EXTRA;HAS_BLOCKS');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_BANKRUPTCY_BLOCKS.fields',
'FID;SERIAL_NUM;PARENT_SERIAL_NUM;STAGE_CODE;PROCEDURE_INCLUSION_DT;PROCEDURE_LINK');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_CAPABILITY.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;CAPABILITY;INCAP_DECISION_DT;INCAP_DECISION_NUM;INCAP_COURT_NAME;CAP_DECISION_DT;CAP_DECISION_NUM;CAP_COURT_NAME');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_DEBT_BURDEN_INFO.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;LOAD_RANGE;LOAD_CALC_DATE;INCOME_INFO;INCOME_INFO_SOURCE;LOAD_FACT;LOAD_CALCULATION_FACT;DEAL_UID;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OBLIGPARTTAKE.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;FLAG_INDICATOR_CODE;APPROVED_LOAN_TYPE_CODE;AGREEMENT_NUMBER;FUND_DT;DEFAULT_FLAG;LOAN_INDICATOR;OLD_OBLIG_NUM;CANCELLATION_FLAG;HEADER_REPORTING_DT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OTHERLEGAL.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;DEBT_CODE;COURT_NAME;COURT_ACT_NUM;COURT_ACT_DT;RESOLUTION;EXEC_NUM;COLLECT_END;COLLECT_FIRST_AMT;COLLECT_AMT;CALC_DT;COLLECT_REGULAR_AMT;FREQUENCY_CODE;COLLECT_CURRENCY;HEADER_REPORTING_DT;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_SETTLED.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;CLOSE_DT;IS_SETTLED;SETTLE_DT;RESUME_DT;HEADER_REPORTING_DT;REAL_MEMBERCODE;SOURCE_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_UID.fields',
'FID;SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;MEMBER_CODE;REPORTED_DT;UUID;ACCT_NUM;CRC_SEARCH;HEADER_REPORTING_DT;OPENED_DT;REF_UID;VERSION;REAL_MEMBERCODE;SOURCE_CODE;LAST_RECEIVED;HAS_BLOCKS');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_ACCOUNT_AMT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;CREDIT_LIMIT;CURRENCY_CODE;ENSURED_AMT;COMMITCURR_CODE;AMT_DATE;COMMIT_UUID;COMMIT_CODE;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_ACQUIRERINDIVID.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;RIGHT_OF_CLAIM_LAST_NAME;RIGHT_OF_CLAIM_FIRST_NAME;RIGHT_OF_CLAIM_MIDDLE_NAME;RIGHT_OF_CLAIM_BIRTH_DT;RIGHT_OF_CLAIM_PLACE_OF_BIRTH;RIGHT_OF_CLAIM_TAXPAYER_ID_CODE;RIGHT_OF_CLAIM_TAXPAYER_ID;RIGHT_OF_CLAIM_SNILS;RIGHT_OF_CLAIM_ID_TYPE;RIGHT_OF_CLAIM_OTHER_ID;RIGHT_OF_CLAIM_ID_SERIES;RIGHT_OF_CLAIM_ID_NUM;RIGHT_OF_CLAIM_ID_ISSUE_DT;RIGHT_OF_CLAIM_ID_ISSUE_AUTHORITY;RIGHT_OF_CLAIM_ID_DIV_CODE;RIGHT_OF_CLAIM_DT;RIGHT_OF_CLAIM_TAXPAYER_ID_EXTRA');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_ACQUIRERLEGAL.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;RIGHT_OF_CLAIM_CODE;RIGHT_OF_CLAIM_RUS;RIGHT_OF_CLAIM_FULLNAME;RIGHT_OF_CLAIM_NAME;RIGHT_OF_CLAIM_OTHER_NAME;RIGHT_OF_CLAIM_LEI;RIGHT_OF_CLAIM_REG_NUM;RIGHT_OF_CLAIM_TAX_CODE;RIGHT_OF_CLAIM_TAX_NUM;RIGHT_OF_CLAIM_DT;RIGHT_OF_CLAIM_TAX_EXTRA');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_AMENDMENT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;AMEND_DATE;AMEND_TYPE;SPEC_TYPE;OTHER_DESC;START_DT;PLAN_END_DT;FACT_END_DT;END_REASON;CUR_RATE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_AMOUNT_INFO.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;ENSURED_AMT;COMMITCURR_CODE;COMMIT_CODE;AMT_DATE;COMMIT_UUID;LIABILITY_LIMIT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_ARREAR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;START_AMT_OUTSTANDING;LAST_PAYMENT_DUE_CODE;AMT_OUTSTANDING;PRINCIPAL_OUTSTANDING;INT_OUTSTANDING;OTHER_AMT_OUTSTANDING;CALC_DATE;UNCONFIRM_GRACE;IS_EMPTY;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_COBORROWER.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;HAS_SOLIDARY;SOLIDARY_NUM;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_COLLATERAL.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;COLLATERAL_CODE;COLLATERAL_ID;COLLATERAL_AGREEMENT_DT;COLLATERAL_VALUE;CURRENCY_CODE;COLLATERAL_DATE;COLLATERAL_ENCUM;COLLATERAL_EXPIRATION_DATE;COLLATERAL_FACT_EXPIRATION_DATE;COLLATERAL_END_REASON;COLLATERALCOMM_AMT;COLLATERALCONT_CNT;COLLATERAL_VALUE_TYPE;LOCATION;ACTUAL_COST;CALC_DATE;HAS_BLOCKS;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_COLLATERAL_BLOCKS.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;PARENT_SERIAL_NUM;COLLATERAL_VALUE;CURRENCY_CODE;COLLATERAL_DATE;COLLATERAL_VALUE_TYPE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_COLLATINSURED.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;INSUR_LIMIT;CURRENCY_CODE;HAS_FRANCHISE;INSUR_START_DT;INSUR_END_DT;INSUR_FACT_END_DT;INSUR_END_REASON;COLLATERAL_ID;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_COLLATREPAY.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;COLLAT_REPAY_CODE;COLLAT_REPAY_DT;COLLAT_REPAY_AMT;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_CONTRACT_TERMS_CHANGES.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;TERMS_CHANGE_CODE;TERMS_CHANGE_DESC;CHANGING_DATE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_DUEARREAR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;START_DT;LAST_PAYMENT_DUE_CODE;AMT_OUTSTANDING;PRINCIPAL_OUTSTANDING;INT_OUTSTANDING;OTHER_AMT_OUTSTANDING;CALC_DATE;IS_EMPTY;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_FUNDDATE.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;FUND_DATE;TRANCHE_NUM;START_AMT_OUTSTANDING;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_GUARANTEEREPAY.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;GUARANTEE_TO_REPAY;GUARANTEE_REPAY_AMT;GUARANTEE_REPAY_KEEP_CODE;GUARANTEE_DATE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_GUARANTOR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;GUARANTEE_UUID;GUARANTEE_VOLUME;CURRENCY_CODE;GUARANTEE_AGREEMENT_DT;GUARANTEE_EXPIRATION_DATE;GUARANTEE_FACT_EXPIRATION_DATE;GUARANTEE_END_REASON;OLD_GUAR_NUM');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_INDEPGUARANTOR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;INDEP_GUARANTEE_UUID;INDEP_GUARANTEE_VOLUME;CURRENCY_CODE;INDEP_GUARANTEE_DT;INDEP_GUARANTEE_EXPIRATION_DATE;INDEP_GUARANTEE_FACT_EXPIRATION_DATE;INDEP_GUARANTEE_END_REASON;OLD_INDEPGUAR_NUM');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_LEGALRECORD.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;HAS_COURT_ACT;COURT_ACT_DT;COURT_ACT_NUM;RESOLUTION;COURT_ACT_EFFECT_CODE;LAWSUIT_CODE;SUM_TOTAL;INFO;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_MONTHAVERPAYMT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;AVER_PAYMT_AMT;CALC_DATE;SUM_TOTAL;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OBLIGACCOUNT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;OBLIG_ACCOUNT_CODE;INT_RATE;OFFBALANCE_AMT;PREFEREN_FINANC;PREFEREN_FINANC_INFO;MAX_INTEREST;CALC_DATE;VERSION');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OBLIGSRCBANKRUPT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;SB_START_OUTSTANDING;SB_START_DT;SB_END_OUTSTANDING;SB_END_DT;SB_LAST_PAY_OUTSTANDING;SB_LAST_PAYMT_DT;SB_TRANSFER_CODE;SB_LOAN_INDICATOR;SB_LOAN_INDICATOR_REASON;SB_ARR_CURRENCY');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OBLIGSRCLIQUID.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;SL_START_OUTSTANDING;SL_START_DT;SL_BALANCE_OUTSTANDING;SL_BALANCE_DT;SL_LAST_PAY_OUTSTANDING;SL_LAST_PAYMT_DT;SL_TRANSFER_CODE;SL_LOAN_INDICATOR;SL_LOAN_INDICATOR_REASON;SL_ARR_CURRENCY');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OBLIGTERMINATION.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;LOAN_INDICATOR;LOAN_INDICATOR_DT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_OVERALLVAL.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;CREDIT_TOTAL_AMT;CREDIT_TOTAL_MONETARY_AMT;CREDIT_TOTAL_AMT_DATE;MAX_PERCENT_COST;MAX_COST;MAX_PERCENT_CASH;MAX_PERCENT_CASHLESS;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_PASTDUEARREAR.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;PAST_DUE_DT;LAST_PAYMENT_DUE_CODE;AMT_PAST_DUE;PRINCIPAL_AMT_PAST_DUE;INT_AMT_PAST_DUE;OTHER_AMT_PAST_DUE;CALC_DATE;PRINCIPAL_MISSED_DATE;INT_MISSED_DATE;IS_EMPTY;MISS_FACT;DAYS_PAST_DUE;REPAID_MISS_DURATION;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_PAYMT.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;PAYMT_DATE;PAYMT_AMT;PRINCIPAL_PAYMT_AMT;INT_PAYMT_AMT;OTHER_PAYMT_AMT;TOTAL_AMT;PRINCIPAL_TOTAL_AMT;INT_TOTAL_AMT;OTHER_TOTAL_AMT;AMT_KEEP_CODE;TERMS_DUE_CODE;DAYS_PAST_DUE;CALC_DATE;LAST_MISS_PAY_SUM;PAY_SUM_24;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_PAYMT_CONDITION.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;PRINCIPAL_TERMS_AMT;PRINCIPAL_TERMS_AMT_DT;INTEREST_TERMS_AMT;INTEREST_TERMS_AMT_DT;TERMS_FREQUENCY;MIN_PAYMT;GRACE_START_DT;GRACE_END_DT;INTEREST_PAYMENT_DUE_DATE;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_SERVICECO.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;SERV_RUS;SERV_FULL_NAME;SERV_SHORT_NAME;SERV_OTHER_NAME;SERV_REG_NUM;SERV_TAXPAYER_ID_CODE;SERV_TAXPAYER_ID;SERV_START_DT;SERV_END_DT;SERV_EMITENT_NAME;SERV_EMITENT_REG_NUM;SERV_TAXPAYER_ID_CODE_EXTRA');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_SOURCENONMONETOBLIG.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;SRC_NON_MONET_OBLIG;SRC_NON_MONET_OBLIG_CODE;SRC_NON_MONET_OBLIG_OBJECT;SRC_NON_MONET_OBLIG_DT;SRC_NON_MONET_OBLIG_CODE_IDENT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_SUBJECTNONMONETOBLIG.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;SUBJ_NON_MONET_OBLIG;SUBJ_NON_MONET_OBLIG_OBJECT;SUBJ_NON_MONET_OBLIG_REGUL;SUBJ_NON_MONET_OBLIG_ADVERSE_CODE;RECEIVEDPROP_CODE');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_SUBMITHOLD.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;HOLD_CODE;HOLD_DT');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_TRADE.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT;OWNER_INDIC;OPENED_DT;TRADE_TYPE_CODE;LOAN_KIND_CODE;ACCT_TYPE;IS_CONSUMER_LOAN;HAS_CARD;IS_NOVATION;IS_MONEY_SOURCE;IS_MONEY_BORROWER;CLOSE_DT;OBTAINPART_CRED;CREDIT_LINE;INTERESTRATE_FLOAT;TRANSPART_CRED;TRANSPART_CRED_UUID;COMMIT_DATE;LENDERTYPE_CODE;CREDIT_LINE_CODE;REPAYMENT_FACT;TRANSFER_FACT;PARTNER_FINANCING_FACT;VERSION;FILE_DT;RECORD_POS;RECORD_POS_3_2');
INSERT INTO ROS9LK.SETTINGS (VERSION, NAME, "VALUE")
VALUES (0, 'db.table.RU_ALL_ARREARS.fields',
'FID;SERIAL_NUM;ACC_SERIAL_NUM;FILE_SINCE_DT;LAST_UPDATED_DT;REPORTED_DT');