Как конвертировать несколько дат в BeanWrapperFieldSetMapper? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть CSV-файл с моими объектами «Компания». У каждой компании есть дата начала, дата прекращения деятельности и дата создания в Системе.

Формат двух первых дат - дд / мм / гг, а формат последней - дд / мм / гггг ЧЧ: мм.

Используя BeanWrapperFieldSetMapper, я не знаю, как анализировать два формата даты вместе, используя xml bean-компоненты. Мой код:

code 
<bean id="companyReader" class="org.springframework.batch.item.file.FlatFileItemReader"
       scope="step">
       <!-- Read a csv file -->
       <property name="linesToSkip" value="1" />
       <property name="encoding" value="${batch.company.encodage}" />
       <property name="lineMapper">
           <bean class="org.project.batch.utils.ReadEntityLineMapper">
               <!-- split it -->
               <property name="lineTokenizer">
                   <bean
                       class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                       <property name="delimiter" value="${batch.company.separator}" />
                       <property name="names"
                           value="name,dateStartActivity,dateEndActivity,dateCreation" />
                   </bean>
               </property>
               <property name="fieldSetMapper">
                   <!-- map to an object -->
                   <bean
                       class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
                       <property name="targetType"
                           value="org.project.entity.company" />
                           <property name="customEditors">
                               <map>
                                   <entry key="java.util.Date">
                                       <ref bean="shortDateWithHourEditor" />
                                   </entry>
                               </map>
                           </property>
                   </bean>
               </property>
           </bean>
       </property>
   </bean>

Мой вопрос: как использовать несколько пользовательских редакторов для моих дат?

1 Ответ

1 голос
/ 28 апреля 2020

Для таких расширенных случаев использования, когда каждое поле имеет свой собственный формат даты (или валютный формат и т. Д. c), вам необходимо создать собственный сопоставитель строк. Вы все еще можете (повторно) использовать DelimitedLineTokenizer в своей реализации для маркировки элементов, но часть отображения должна быть пользовательской.

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