Как настроить токенизаторы в bean-компоненте PatternMatchingCompositeLineMapper для соответствия дате в начале строки
У меня есть пакетное задание Java, которое реализует FlatFileItemReader с PatternMatchingCompositeLineMapper и токенизаторами. Проблема в том, что файл будет иметь следующий формат
123456789~sometest~test-test-1
123456789~sometest~test-2
123456789~sometest~test-test-test-3
123456789~sometest~test-test-4
2017-11-01~4
Я должен быть в состоянии определить нижний колонтитул. У меня есть ключ ввода для "*" для обработки фактических строк. Мой вопрос заключается в том, как настроить ключ ввода для сопоставления с шаблоном для даты в начале строки, чтобы я мог определить нижний колонтитул?
Для справки вот боб сейчас:
<bean name="FileUpdateJobFileReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" ref="cashMantasFileUpdateJobFileReaderResource" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.PatternMatchingCompositeLineMapper" scope="step">
<property name="tokenizers">
<map>
<!-- First check if we have a footer because that will be a pass through -->
<entry key="#{stepExecutionContext['FooterBusinessDate']}*" >
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer" scope="step">
<property name="delimiter" value="~"/>
<property name="names" value="#{stepExecutionContext['MantasFooterColumnNames']}" />
</bean>
</entry>
<!-- Find anything remaining which should be data rows -->
<entry key="*">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer" scope="step">
<property name="delimiter" value="~"/>
<property name="names" value="#{stepExecutionContext['ColumnNames']}" />
</bean>
</entry>
</map>
</property>
<property name="fieldSetMappers">
<map>
<!-- Map the footer to a general pass through -->
<entry key="#{stepExecutionContext['FooterBusinessDate']}*">
<bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" scope="step" />
</entry>
<!-- Map data rows to a model -->
<entry key="*">
<bean class="com.tdameritrade.ctg.cash.mantas.batch.mapper.MantasFieldSetMapper" scope="step"/>
</entry>
</map>
</property>
</bean>
</property>
</bean>
StepExecutionContext['FooterBusinessDate'] в настоящее время возвращает системную бизнес-дату. Проблема в том, что это происходит около полуночи (несколько раз после), а если после, то дата не совпадает. Если бы я мог сопоставить образец с датой в нижнем колонтитуле, тогда не было бы значения, какая это была дата.