Я использую Spring Batch и FlatFileItemReader для чтения файла .CSV. Файл имеет заголовок (первая строка), подробности и нижний колонтитул (последняя строка). Итак, я хочу проверить общее количество деталей в строке нижнего колонтитула.
Это мой пример файла .csv.
movie.csv
Имя | Тип | Год
Ноттинг Хилл | романтическая комедия | 1999
История игрушек 3 | Анимация | 2010
Капитан Америка: Первый Мститель | Экшн | 2011
3
из файла примера
Первая строка - это заголовок (и я его игнорирую).
В строке 2-4 - подробные строки, а последним - нижний колонтитул.
Я хочу прочитать нижний колонтитул и получить значение (последняя строка = 3)
и после, получить общее количество рекодов деталей (в данном случае у нас есть 3 строки)
и в последний раз я проверю итоговую сумму из нижнего колонтитула (3) и общее количество записей сведений (3) равно?
и это мой код.
@Bean
@StepScope
public FlatFileItemReader<Movie> movieItemReader(String filePath) {
FlatFileItemReader<Movie> reader = new FlatFileItemReader<>();
reader.setLinesToSkip(1); //skip header line
reader.setResource(new PathResource(filePath));
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer("|");
DefaultLineMapper<Movie> movieLineMapper = new DefaultLineMapper<>();
FieldSetMapper<Movie> movieMapper = movieFieldSetMapper();
movieLineMapper.setLineTokenizer(tokenizer);
movieLineMapper.setFieldSetMapper(movieFieldSetMapper);
movieLineMapper.afterPropertiesSet();
reader.setLineMapper(movieLineMapper);
return reader;
}
public FieldSetMapper<Movie> movieFieldSetMapper() {
BeanWrapperFieldSetMapper<Movie> movieMapper = new BeanWrapperFieldSetMapper<>();
movieMapper.setTargetType(Movie.class);
return movieMapper;
}