FlatFileItemReader не переустанавливает счетчик строк после чтения первого файла - Spring batch - (Springboot -2.1.11 - версия) - PullRequest
0 голосов
/ 21 февраля 2020

Я работаю над приложением Spring Batch, в котором я реализовал логи прослушивателя / наблюдателя файлов c, которые будут выбирать вновь помещенные файлы (любого типа) из каталога и обрабатывать их, читая и записывая в БД.

Я попытался прочитать и вставить два текстовых файла с n количеством записей в каждом файле, когда я читаю и вставляю первый файл, он правильно читает и вставляет в БД, но когда я помещаю второй файл в слушатель / каталог наблюдателя файла, его выбор этого файла и чтение из числа строк, где он остановился первым файлом. так что flatFileItemReader.read () всегда возвращает ноль.

    @Override
    public synchronized T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
        try {
            String interfaceId = xtremeUtility.extractInterfaceIdFromNFSPath();
            interfaceOrignatDetailswrapper = getOriginatDetails(interfaceId);
            flatFileItemReader.setResource(new FileSystemResource(xtremeUtility.getCurrentDirectory()));
            flatFileItemReader.setLineMapper(this.getLineMapper());
            flatFileItemReader.afterPropertiesSet();
            flatFileItemReader.open(new ExecutionContext());
        } catch(ParseException exception) {
            exception.printStackTrace();
        } catch(NonTransientResourceException exception) {
            exception.printStackTrace();
        } catch(UnexpectedInputException exception) {
            exception.printStackTrace();
        } catch(Exception exception) {
            exception.printStackTrace();
            throw exception;
        }
        return flatFileItemReader.read();
    }

******* FlatFileItemReader -applyRecordSeparatorPolicy имеет ошибку ***** *** - не найден фрагмент кода, который обрабатывает сброс индекса числа строк в файле при обработке нового файла.

private String applyRecordSeparatorPolicy(String line) throws IOException {

        String record = line;
        while (line != null && !recordSeparatorPolicy.isEndOfRecord(record)) {
            line = this.reader.readLine();
            if (line == null) {
                if (StringUtils.hasText(record)) {
                    // A record was partially complete since it hasn't ended but
                    // the line is null
                    throw new FlatFileParseException("Unexpected end of file before record complete", record, lineCount);
                }
                else {
                    // Record has no text but it might still be post processed
                    // to something (skipping preProcess since that was already
                    // done)
                    break;
                }
            }
            else {
                lineCount++;
            }
            record = recordSeparatorPolicy.preProcess(record) + line;
        }

        return recordSeparatorPolicy.postProcess(record);

}

Любая помощь будет отличной, спасибо заранее !!

screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...