diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java index ff51bda19..929dd799c 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java @@ -62,7 +62,7 @@ public class ImportToDB extends Stage { do { ValidationResult result = swtReader.readGroupRecords(); if (!SUCSESS.equals(result)) { - log.debug("reading error: {}.", result.message()); + log.warn("reading error: {}.", result.message()); return StageResult.ERROR; } List records = swtReader.getGroupRecords(); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java index 205ff8f43..f5f02491a 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java @@ -23,6 +23,7 @@ public abstract class AbstractTemplate { protected Logger log = LoggerFactory.getLogger(getClass()); protected Scanner scanner; protected boolean readEnded; + protected long lineNumber; protected abstract List getGroupRecords(); @@ -31,6 +32,7 @@ public abstract class AbstractTemplate { public AbstractTemplate(Scanner scanner) { this.scanner = scanner; this.readEnded = false; + this.lineNumber = 0; } protected ValidationResult checkNotValue(String line, String errMes) { @@ -44,10 +46,11 @@ public abstract class AbstractTemplate { protected ValidationResult prepareNextLine(Consumer lineSetter) { while (scanner.hasNextLine()) { + lineNumber++; lineSetter.accept(scanner.nextLine()); return SUCSESS; } - return new ValidationResult("Bud file format."); + return new ValidationResult("Line "+ lineNumber+" Bad file format. Unexpected EOF."); } diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf20Template.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf20Template.java index 8e142a54b..f1df940f1 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf20Template.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf20Template.java @@ -77,7 +77,7 @@ public class SDf20Template extends AbstractTemplate { } } } else { - result = checkNotValue(line, "required teg: " + currentPattern.name() + ", but was: "); + result = checkNotValue(line, "Line " + lineNumber + "required teg: " + currentPattern.name() + ", but was: "); if (!SUCSESS.equals(result)) return result; result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) { diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf21Template.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf21Template.java index 3a7b1c60c..9f81aa34d 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf21Template.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/template/SDf21Template.java @@ -78,7 +78,7 @@ public class SDf21Template extends AbstractTemplate { result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) return result; } else { - result = checkNotValue(line, "required teg: " + currentPattern.name() + ", but was: "); + result = checkNotValue(line, "Line " + lineNumber + " required teg: " + currentPattern.name() + ", but was: "); if (!SUCSESS.equals(result)) return result; result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) return result; @@ -105,7 +105,7 @@ public class SDf21Template extends AbstractTemplate { result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) return result; } else { - result = checkNotValue(line, "required teg: " + currentPattern.name() + ", but was: "); + result = checkNotValue(line, "Line " + lineNumber + " required teg: " + currentPattern.name() + ", but was: "); if (!SUCSESS.equals(result)) return result; result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) return result; @@ -126,7 +126,7 @@ public class SDf21Template extends AbstractTemplate { } } } else { - result = checkNotValue(line, "required teg: " + currentPattern.name() + ", but was: "); + result = checkNotValue(line, "Line " + lineNumber + " required teg: " + currentPattern.name() + ", but was: "); if (!SUCSESS.equals(result)) return result; result = prepareNextLine(this::setLine); if (!SUCSESS.equals(result)) return result; diff --git a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java index a02fa0ce2..192aa31f3 100644 --- a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java +++ b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java @@ -100,7 +100,22 @@ class ImportToDBTest { importToDB.process(resultContainer); Imdg df21Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf21, SDf21.class); Collection values = df21Imdg.getAllValues(); - Assertions.assertEquals(7, values.size()); + Assertions.assertEquals(13, values.size()); + } + + @Test + void process_21_2() throws IOException { + ETable eTable = ETable.S_DF_21; + { + File swtFile = new File("src/test/resources/input", "RDC_KS_DF-21_230912125920333.txt"); + ResultContainer resultContainer = createNewTask(eTable, swtFile); + resultContainer.setSwtSource(Files.readAllBytes(Paths.get(swtFile.getAbsolutePath()))); + + importToDB.process(resultContainer); + Imdg df21Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf21, SDf21.class); + Collection values = df21Imdg.getAllValues(); + Assertions.assertEquals(3, values.size()); + } } } \ No newline at end of file diff --git a/clearing-parent/swt-importer/src/test/resources/input/RDC_KS_DF-21_230912125920333.txt b/clearing-parent/swt-importer/src/test/resources/input/RDC_KS_DF-21_230912125920333.txt new file mode 100644 index 000000000..4b7a7ac9c --- /dev/null +++ b/clearing-parent/swt-importer/src/test/resources/input/RDC_KS_DF-21_230912125920333.txt @@ -0,0 +1,45 @@ +To:SPCE +From:CSO +Type:572 +Date/Time:20230912/1259 +:20:SDC230912125920 +:21:NONREF +:18A:2 +:35B:ISIN SU26238RMFS4:Минфин России:облигации +:60A:SHS0, +:83D:700988887ZT0:Банк России:технический счет +:18A:2 +:20C:Поруч. SPCEX_20230912_1 +:35A:SHS230, +:23:253 +:66A:RECFREE +:87D: +:30:20230912 +1 +2 +:20C:Поручение 6520536 от 2023-09-12 +:35A:SHS120, +:23:255 +:66A:DELFREE +:87D:747200000AT0 +:30:20230912 +2 +2 +:62A:SHS110, +1 +2 +:35B:ISIN SU26238RMFS4:Минфин России:облигации +:60A:SHS0, +:83D:747200000AT0:ПАО "Промсвязьбанк":раздел основной для расчетов (клиентские ЦБ) +:18A:1 +:20C:Поручение 6520536 от 2023-09-12 +:35A:SHS120, +:23:255 +:66A:RECFREE +:87D:700988887ZT0 +:30:20230912 +1 +1 +:62A:SHS120, +2 +2