Spring Batch - Как сохранить информацию заголовка в отдельные объекты строки в FlaFileItemReader
Я имею дело с текстовым файлом, разделенным знаком "|" с заголовком и данными, за которыми следует трейлер. Эта последовательность может повторяться в том же файле. Итак, мой формат примерно такой
Header|Date - Employer1#|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Trailer|2<br>
Header|Date - Employer2#|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Employee ID|FirstName|LastName|<br>
Trailer|3<br>
Моя проблема в том, что для каждой записи создаваемый мной объект строки должен иметь номер работодателя из заголовка. При чтении следующего заголовка во всех следующих строках должен быть номер нового работодателя. Я использую Spring Batch с FlatFileItemReader для анализа этого файла. У меня есть настраиваемый преобразователь строк, в котором я определяю, является ли строка HEADER или данными, но я не уверен, как сохранить данные заголовка, чтобы при чтении строки данных у меня был доступ к ранее прочитанному HEADER
@Override
public MyDTO mapLine(String line, int lineNumber) throws Exception {
if(line != null && line.contains("HEADER")) {
String[] tokenizedHeader = line.split("|");
//Code to parse Header and save that data
}else {
DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer();
delimitedLineTokenizer.setDelimiter("|");
delimitedLineTokenizer.setStrict(false);
delimitedLineTokenizer.setNames(new String[] {"EMPLOYEE ID","FIRST NAME","LAST NAME"});
setLineTokenizer(delimitedLineTokenizer);
setFieldSetMapper(myFieldSetmapper);
return (MyDTO) this.fieldSetMapper.mapFieldSet(this.lineTokenizer.tokenize(line));
}
}
Любые выводы будут оценены.
Спасибо