RESOLVED - issue BATCH-50: Allow fixed-length file columns with column ranges

http://opensource.atlassian.com/projects/spring/browse/BATCH-50

Applied patch (and moved property editor).
This commit is contained in:
dsyer
2007-10-10 10:00:01 +00:00
parent 964f04af59
commit 0cc6d6ab2d
9 changed files with 250 additions and 247 deletions

View File

@@ -76,13 +76,13 @@
<bean id="fixedFileDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN,Quantity,price, CUSTOMER" />
<property name="lengths" value="12, 3, 5, 9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedFileDescriptor2"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="Title, FirstName, LastName, Age, Address.AddrLine1, children[0].name, children[1].name" />
<property name="lengths" value="5, 15, 20, 5, 10, 10, 10" />
<property name="columns" value="1-5, 6-20, 21-40, 41-45, 46-55, 56-65, 66-75" />
</bean>
<bean id="fixedValidator" class="org.springframework.batch.item.validator.SpringValidator">

View File

@@ -57,7 +57,7 @@
<bean id="fixedFileDescriptor" class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="lengths" value="12, 3, 5, 9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator" class="org.springframework.batch.item.validator.SpringValidator">

View File

@@ -55,7 +55,7 @@
<bean id="fixedFileDescriptor" class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="lengths" value="12, 3, 5, 9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator" class="org.springframework.batch.item.validator.SpringValidator">

View File

@@ -65,18 +65,18 @@
<bean id="beginRecordDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="lengths" value="5" />
<property name="columns" value="1-5" />
</bean>
<bean id="endRecordDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="lengths" value="3" />
<property name="columns" value="1-3" />
</bean>
<bean id="tradeRecordDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN,Quantity,Price,Customer" />
<property name="lengths" value="12,3,5,9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean parent="customEditorConfigurer"/>

View File

@@ -1,71 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="orderFileDescriptor"
class="org.springframework.batch.io.file.support.transform.PrefixMatchingCompositeLineTokenizer">
<property name="tokenizers">
<map>
<entry key="HEA" value-ref="headerRecordDescriptor" />
<entry key="FOT" value-ref="footerRecordDescriptor" />
<entry key="BCU" value-ref="businessCustomerLineDescriptor" />
<entry key="NCU" value-ref="customerLineDescriptor" />
<entry key="BAD" value-ref="billingAddressLineDescriptor" />
<entry key="SAD" value-ref="shippingAddressLineDescriptor" />
<entry key="BIN" value-ref="billingLineDescriptor" />
<entry key="SIN" value-ref="shippingLineDescriptor" />
<entry key="LIT" value-ref="itemLineDescriptor" />
<entry key="" value-ref="defaultLineDescriptor" />
</map>
</property>
</bean>
<bean id="defaultLineDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="lengths" value="120"/>
</bean>
<bean id="parentLineDescriptor" abstract="true"
class="org.springframework.batch.io.file.support.transform.DelimitedLineTokenizer">
<property name="delimiter" value=";"/>
</bean>
<bean id="headerRecordDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ORDER_ID,ORDER_DATE" />
</bean>
<bean id="footerRecordDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,TOTAL_LINE_ITEMS,TOTAL_ITEMS,TOTAL_PRICE" />
</bean>
<bean id="businessCustomerLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,COMPANY_NAME,REG_ID,VIP" />
</bean>
<bean id="customerLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,LAST_NAME,FIRST_NAME,MIDDLE_NAME,REGISTERED,REG_ID,VIP" />
</bean>
<bean id="billingAddressLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="shippingAddressLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="billingLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,PAYMENT_TYPE_ID,PAYMENT_DESC" />
</bean>
<bean id="shippingLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,SHIPPER_ID,SHIPPING_TYPE_ID,ADDITIONAL_SHIPPING_INFO" />
</bean>
<bean id="itemLineDescriptor" parent="parentLineDescriptor">
<property name="names"
value="LINE_ID,ITEM_ID,PRICE,DISCOUNT_PERC,DISCOUNT_AMOUNT,SHIPPING_PRICE,HANDLING_PRICE,QUANTITY,TOTAL_PRICE" />
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="orderFileDescriptor"
class="org.springframework.batch.io.file.support.transform.PrefixMatchingCompositeLineTokenizer">
<property name="tokenizers">
<map>
<entry key="HEA" value-ref="headerRecordDescriptor" />
<entry key="FOT" value-ref="footerRecordDescriptor" />
<entry key="BCU" value-ref="businessCustomerLineDescriptor" />
<entry key="NCU" value-ref="customerLineDescriptor" />
<entry key="BAD" value-ref="billingAddressLineDescriptor" />
<entry key="SAD" value-ref="shippingAddressLineDescriptor" />
<entry key="BIN" value-ref="billingLineDescriptor" />
<entry key="SIN" value-ref="shippingLineDescriptor" />
<entry key="LIT" value-ref="itemLineDescriptor" />
<entry key="" value-ref="defaultLineDescriptor" />
</map>
</property>
</bean>
<bean id="defaultLineDescriptor"
class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="columns" value="1-120" />
</bean>
<bean id="parentLineDescriptor" abstract="true"
class="org.springframework.batch.io.file.support.transform.DelimitedLineTokenizer">
<property name="delimiter" value=";"/>
</bean>
<bean id="headerRecordDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ORDER_ID,ORDER_DATE" />
</bean>
<bean id="footerRecordDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,TOTAL_LINE_ITEMS,TOTAL_ITEMS,TOTAL_PRICE" />
</bean>
<bean id="businessCustomerLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,COMPANY_NAME,REG_ID,VIP" />
</bean>
<bean id="customerLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,LAST_NAME,FIRST_NAME,MIDDLE_NAME,REGISTERED,REG_ID,VIP" />
</bean>
<bean id="billingAddressLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="shippingAddressLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="billingLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,PAYMENT_TYPE_ID,PAYMENT_DESC" />
</bean>
<bean id="shippingLineDescriptor" parent="parentLineDescriptor">
<property name="names" value="LINE_ID,SHIPPER_ID,SHIPPING_TYPE_ID,ADDITIONAL_SHIPPING_INFO" />
</bean>
<bean id="itemLineDescriptor" parent="parentLineDescriptor">
<property name="names"
value="LINE_ID,ITEM_ID,PRICE,DISCOUNT_PERC,DISCOUNT_AMOUNT,SHIPPING_PRICE,HANDLING_PRICE,QUANTITY,TOTAL_PRICE" />
</bean>
</beans>

View File

@@ -1,39 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<util:map id="outputDescriptors">
<entry key="header" value-ref="outputHeader" />
<entry key="footer" value-ref="outputFooter" />
<entry key="customer" value-ref="outputCustomer" />
<entry key="address" value-ref="outputAddress" />
<entry key="billing" value-ref="outputBilling" />
<entry key="item" value-ref="outputLineItem" />
</util:map>
<bean id="outputHeader" class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="12,10,30" />
<bean id="outputFooter"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="10,20" />
<bean id="outputCustomer" class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="9,10,10,10,10" />
<bean id="outputAddress"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="8,20,10,10" />
<bean id="outputBilling"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="8,10,20" />
<bean id="outputLineItem"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:lengths="5,10,10" />
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<util:map id="outputDescriptors">
<entry key="header" value-ref="outputHeader" />
<entry key="footer" value-ref="outputFooter" />
<entry key="customer" value-ref="outputCustomer" />
<entry key="address" value-ref="outputAddress" />
<entry key="billing" value-ref="outputBilling" />
<entry key="item" value-ref="outputLineItem" />
</util:map>
<bean id="outputHeader" class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-12,13-22,23-52" />
<bean id="outputFooter"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-10,11-30" />
<bean id="outputCustomer" class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-9,10-19,20-29,30-39,40-49" />
<bean id="outputAddress"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-8,9-28,29-38,39-48" />
<bean id="outputBilling"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-8,9-18,19-38" />
<bean id="outputLineItem"
class="org.springframework.batch.io.file.support.transform.FixedLengthLineAggregator"
p:columns="1-5,6-15,16-25" />
</beans>

View File

@@ -50,7 +50,7 @@
<bean id="fixedFileDescriptor" class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="lengths" value="12, 3, 5, 9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator" class="org.springframework.batch.item.validator.SpringValidator">

View File

@@ -60,7 +60,7 @@
<bean id="tradeTokenizer" class="org.springframework.batch.io.file.support.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="lengths" value="12, 3, 5, 9" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="tradeLogAdvice"

View File

@@ -1,132 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<import resource="data-source-context.xml" />
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- register the step scope with the application context -->
<bean class="org.springframework.batch.execution.scope.StepScope" />
<bean id="jobExecutorFacade" class="org.springframework.batch.execution.facade.SimpleJobExecutorFacade">
<property name="jobRepository" ref="simpleJobRepository" />
<property name="jobConfigurationLocator" ref="jobConfigurationRegistry"/>
<property name="jobExecutor" ref="jobExecutor" />
</bean>
<bean class="org.springframework.batch.execution.bootstrap.SimpleJobLauncher">
<property name="jobExecutorFacade" ref="jobExecutorFacade" />
</bean>
<bean id="jobConfigurationRegistry" class="org.springframework.batch.execution.configuration.MapJobConfigurationRegistry"/>
<aop:config>
<aop:advisor pointcut="execution(* org.springframework.batch.execution..*Repository+.*(..))"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<bean id="jobExecutor" class="org.springframework.batch.execution.job.DefaultJobExecutor">
<property name="jobRepository" ref="simpleJobRepository" />
<property name="stepExecutorFactory">
<bean class="org.springframework.batch.execution.step.PrototypeBeanStepExecutorFactory">
<property name="stepExecutorName" value="stepExecutor" />
</bean>
</property>
</bean>
<bean id="stepExecutor" class="org.springframework.batch.execution.step.simple.SimpleStepExecutor"
scope="prototype">
<property name="transactionManager" ref="transactionManager" />
<property name="repository" ref="simpleJobRepository" />
</bean>
<bean id="simpleJobRepository" class="org.springframework.batch.execution.repository.SimpleJobRepository">
<constructor-arg ref="jobDao" />
<constructor-arg ref="stepDao" />
</bean>
<bean id="jobDao" class="org.springframework.batch.execution.repository.dao.SqlJobDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="jobIncrementer" ref="jobIncrementer" />
<property name="jobExecutionIncrementer" ref="jobExecutionIncrementer" />
</bean>
<bean id="stepDao" class="org.springframework.batch.execution.repository.dao.SqlStepDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="stepIncrementer" ref="stepIncrementer" />
<import resource="data-source-context.xml" />
<!-- register the step scope with the application context -->
<bean class="org.springframework.batch.execution.scope.StepScope" />
<bean id="jobExecutorFacade" class="org.springframework.batch.execution.facade.SimpleJobExecutorFacade">
<property name="jobRepository" ref="simpleJobRepository" />
<property name="jobConfigurationLocator" ref="jobConfigurationRegistry"/>
<property name="jobExecutor" ref="jobExecutor" />
</bean>
<bean class="org.springframework.batch.execution.bootstrap.SimpleJobLauncher">
<property name="jobExecutorFacade" ref="jobExecutorFacade" />
</bean>
<bean id="jobConfigurationRegistry" class="org.springframework.batch.execution.configuration.MapJobConfigurationRegistry"/>
<aop:config>
<aop:advisor pointcut="execution(* org.springframework.batch.execution..*Repository+.*(..))"
advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<bean id="jobExecutor" class="org.springframework.batch.execution.job.DefaultJobExecutor">
<property name="jobRepository" ref="simpleJobRepository" />
<property name="stepExecutorFactory">
<bean class="org.springframework.batch.execution.step.PrototypeBeanStepExecutorFactory">
<property name="stepExecutorName" value="stepExecutor" />
</bean>
</property>
</bean>
<bean id="stepExecutor" class="org.springframework.batch.execution.step.simple.SimpleStepExecutor"
scope="prototype">
<property name="transactionManager" ref="transactionManager" />
<property name="repository" ref="simpleJobRepository" />
</bean>
<bean id="simpleJobRepository" class="org.springframework.batch.execution.repository.SimpleJobRepository">
<constructor-arg ref="jobDao" />
<constructor-arg ref="stepDao" />
</bean>
<bean id="jobDao" class="org.springframework.batch.execution.repository.dao.SqlJobDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="jobIncrementer" ref="jobIncrementer" />
<property name="jobExecutionIncrementer" ref="jobExecutionIncrementer" />
</bean>
<bean id="stepDao" class="org.springframework.batch.execution.repository.dao.SqlStepDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="stepIncrementer" ref="stepIncrementer" />
<property name="stepExecutionIncrementer" ref="stepExecutionIncrementer" />
<property name="jobDao" ref="jobDao"/>
</bean>
<bean id="jobRuntimeInformationFactory"
class="org.springframework.batch.execution.runtime.ScheduledJobIdentifierFactory">
<property name="jobStream" value="TestStream" />
<property name="scheduleDate" value="20070505" />
<property name="jobRun" value="1" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="simpleJob" class="org.springframework.batch.core.configuration.JobConfiguration"
abstract="true">
<property name="restartable" value="true" />
</bean>
<bean id="simpleStep" class="org.springframework.batch.execution.step.SimpleStepConfiguration"
abstract="true">
<property name="allowStartIfComplete" value="true" />
<property name="saveRestartData" value="false" />
<property name="exceptionHandler">
<bean
class="org.springframework.batch.repeat.exception.handler.SimpleLimitExceptionHandler">
<property name="limit" value="5" />
<property name="useParent" value="true"/>
</bean>
</property>
<property name="commitInterval" value="1" />
</bean>
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="int[]">
<bean class="org.springframework.batch.support.IntArrayPropertyEditor" />
</entry>
<entry key="java.util.Date">
<bean class="org.springframework.beans.propertyeditors.CustomDateEditor">
<constructor-arg>
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyyMMdd" />
</bean>
</constructor-arg>
<constructor-arg value="false" />
</bean>
</entry>
</map>
</property>
</bean>
<bean id="itemProcessorLogAdvice" class="org.springframework.batch.sample.advice.ProcessorLogAdvice" />
<aop:config>
<aop:aspect id="moduleLogging" ref="itemProcessorLogAdvice">
<aop:after
pointcut="execution( * org.springframework.batch.item.ItemProcessor+.process(Object)) and args(item)"
method="doStronglyTypedLogging" />
</aop:aspect>
</aop:config>
</beans>
<property name="jobDao" ref="jobDao"/>
</bean>
<bean id="jobRuntimeInformationFactory"
class="org.springframework.batch.execution.runtime.ScheduledJobIdentifierFactory">
<property name="jobStream" value="TestStream" />
<property name="scheduleDate" value="20070505" />
<property name="jobRun" value="1" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="simpleJob" class="org.springframework.batch.core.configuration.JobConfiguration"
abstract="true">
<property name="restartable" value="true" />
</bean>
<bean id="simpleStep" class="org.springframework.batch.execution.step.SimpleStepConfiguration"
abstract="true">
<property name="allowStartIfComplete" value="true" />
<property name="saveRestartData" value="false" />
<property name="exceptionHandler">
<bean
class="org.springframework.batch.repeat.exception.handler.SimpleLimitExceptionHandler">
<property name="limit" value="5" />
<property name="useParent" value="true"/>
</bean>
</property>
<property name="commitInterval" value="1" />
</bean>
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="int[]">
<bean class="org.springframework.batch.support.IntArrayPropertyEditor" />
</entry>
<entry key="org.springframework.batch.io.file.support.transform.Range[]">
<bean class="org.springframework.batch.io.file.support.transform.RangeArrayPropertyEditor" />
</entry>
<entry key="java.util.Date">
<bean class="org.springframework.beans.propertyeditors.CustomDateEditor">
<constructor-arg>
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyyMMdd" />
</bean>
</constructor-arg>
<constructor-arg value="false" />
</bean>
</entry>
</map>
</property>
</bean>
<bean id="itemProcessorLogAdvice" class="org.springframework.batch.sample.advice.ProcessorLogAdvice" />
<aop:config>
<aop:aspect id="moduleLogging" ref="itemProcessorLogAdvice">
<aop:after
pointcut="execution( * org.springframework.batch.item.ItemProcessor+.process(Object)) and args(item)"
method="doStronglyTypedLogging" />
</aop:aspect>
</aop:config>
</beans>