IN PROGRESS - issue BATCH-476: samples cleanup

http://jira.springframework.org/browse/BATCH-476
This commit is contained in:
robokaso
2008-03-18 13:43:36 +00:00
parent 49c3a744e0
commit aa20f82387
9 changed files with 216 additions and 231 deletions

View File

@@ -18,7 +18,7 @@
<bean id="step1" parent="skipLimitStep">
<property name="skipLimit" value="5" />
<property name="itemReader" ref="hibernateItemReader" />
<property name="itemWriter" ref="hibernateOutputSource" />
<property name="itemWriter" ref="hibernateItemWriter" />
<property name="commitInterval" value="3" />
</bean>
</property>
@@ -26,7 +26,7 @@
<!-- This is a framework class that needs a delegate and also needs to be registered as a RepeatInterceptor in the chunk -->
<bean id="hibernateOutputSource"
<bean id="hibernateItemWriter"
class="org.springframework.batch.item.database.HibernateAwareItemWriter">
<property name="sessionFactory" ref="sessionFactory" />
<property name="delegate" ref="hibernateCreditWriter" />

View File

@@ -48,24 +48,24 @@
class="org.springframework.batch.item.file.transform.PrefixMatchingCompositeLineTokenizer">
<property name="tokenizers">
<map>
<entry key="BEGIN" value-ref="beginRecordDescriptor" />
<entry key="END" value-ref="endRecordDescriptor" />
<entry key="" value-ref="tradeRecordDescriptor" />
<entry key="BEGIN" value-ref="beginRecordTokenizer" />
<entry key="END" value-ref="endRecordTokenizer" />
<entry key="" value-ref="tradeRecordTokenizer" />
</map>
</property>
</bean>
<bean id="beginRecordDescriptor"
<bean id="beginRecordTokenizer"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="columns" value="1-5" />
</bean>
<bean id="endRecordDescriptor"
<bean id="endRecordTokenizer"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="columns" value="1-3" />
</bean>
<bean id="tradeRecordDescriptor"
<bean id="tradeRecordTokenizer"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="ISIN,Quantity,Price,Customer" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />

View File

@@ -3,67 +3,67 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="orderFileDescriptor"
<bean id="orderFileTokenizer"
class="org.springframework.batch.item.file.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" />
<entry key="HEA" value-ref="headerRecordTokenizer" />
<entry key="FOT" value-ref="footerRecordTokenizer" />
<entry key="BCU" value-ref="businessCustomerLineTokenizer" />
<entry key="NCU" value-ref="customerLineTokenizer" />
<entry key="BAD" value-ref="billingAddressLineTokenizer" />
<entry key="SAD" value-ref="shippingAddressLineTokenizer" />
<entry key="BIN" value-ref="billingLineTokenizer" />
<entry key="SIN" value-ref="shippingLineTokenizer" />
<entry key="LIT" value-ref="itemLineTokenizer" />
<entry key="" value-ref="defaultLineTokenizer" />
</map>
</property>
</bean>
<bean id="defaultLineDescriptor"
<bean id="defaultLineTokenizer"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="columns" value="1-120" />
</bean>
<bean id="parentLineDescriptor" abstract="true"
<bean id="parentLineTokenizer" abstract="true"
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value=";"/>
</bean>
<bean id="headerRecordDescriptor" parent="parentLineDescriptor">
<bean id="headerRecordTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,ORDER_ID,ORDER_DATE" />
</bean>
<bean id="footerRecordDescriptor" parent="parentLineDescriptor">
<bean id="footerRecordTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,TOTAL_LINE_ITEMS,TOTAL_ITEMS,TOTAL_PRICE" />
</bean>
<bean id="businessCustomerLineDescriptor" parent="parentLineDescriptor">
<bean id="businessCustomerLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,COMPANY_NAME,REG_ID,VIP" />
</bean>
<bean id="customerLineDescriptor" parent="parentLineDescriptor">
<bean id="customerLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,LAST_NAME,FIRST_NAME,MIDDLE_NAME,REGISTERED,REG_ID,VIP" />
</bean>
<bean id="billingAddressLineDescriptor" parent="parentLineDescriptor">
<bean id="billingAddressLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="shippingAddressLineDescriptor" parent="parentLineDescriptor">
<bean id="shippingAddressLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,ADDRESSEE,ADDR_LINE1,ADDR_LINE2,CITY,ZIP_CODE,STATE,COUNTRY" />
</bean>
<bean id="billingLineDescriptor" parent="parentLineDescriptor">
<bean id="billingLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,PAYMENT_TYPE_ID,PAYMENT_DESC" />
</bean>
<bean id="shippingLineDescriptor" parent="parentLineDescriptor">
<bean id="shippingLineTokenizer" parent="parentLineTokenizer">
<property name="names" value="LINE_ID,SHIPPER_ID,SHIPPING_TYPE_ID,ADDITIONAL_SHIPPING_INFO" />
</bean>
<bean id="itemLineDescriptor" parent="parentLineDescriptor">
<bean id="itemLineTokenizer" parent="parentLineTokenizer">
<property name="names"
value="LINE_ID,ITEM_ID,PRICE,DISCOUNT_PERC,DISCOUNT_AMOUNT,SHIPPING_PRICE,HANDLING_PRICE,QUANTITY,TOTAL_PRICE" />
</bean>

View File

@@ -8,26 +8,26 @@
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="fileInputTemplate"
<bean id="fileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" ref="fileInputLocator" />
<property name="lineTokenizer" ref="orderFileDescriptor" />
<property name="lineTokenizer" ref="orderFileTokenizer" />
<property name="fieldSetMapper">
<bean
class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" />
</property>
</bean>
<bean id="flatFileTransformerOutput"
<bean id="flatFileTransformerWriter"
class="org.springframework.batch.item.transform.ItemTransformerItemWriter">
<property name="delegate" ref="flatFileOutput"/>
<property name="delegate" ref="flatFileWriter"/>
<property name="itemTransformer">
<bean
class="org.springframework.batch.item.file.transform.RecursiveCollectionItemTransformer" />
</property>
</bean>
<bean id="flatFileOutput"
<bean id="flatFileWriter"
class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" ref="fileOutputLocator" />
<property name="fieldSetCreator">

View File

@@ -7,8 +7,8 @@
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<import resource="multilineOrderInputDescriptors.xml" />
<import resource="multilineOrderOutputDescriptors.xml" />
<import resource="multilineOrderInputTokenizers.xml" />
<import resource="multilineOrderOutputAggregators.xml" />
<import resource="multilineOrderIo.xml" />
<bean id="multilineOrderJob" parent="simpleJob">
@@ -16,8 +16,8 @@
<bean id="step1" parent="simpleStep">
<property name="streams">
<list>
<ref bean="flatFileOutput" />
<ref bean="fileInputTemplate" />
<ref bean="flatFileWriter" />
<ref bean="fileItemReader" />
</list>
</property>
<property name="itemReader">
@@ -27,7 +27,7 @@
<bean
class="org.springframework.batch.sample.item.reader.OrderItemReader">
<property name="itemReader"
ref="fileInputTemplate" />
ref="fileItemReader" />
<property name="headerMapper"
ref="headerFieldSetMapper" />
<property name="customerMapper"
@@ -57,11 +57,11 @@
<bean id="orderWriter"
class="org.springframework.batch.sample.dao.FlatFileOrderWriter">
<property name="delegate" ref="flatFileTransformerOutput" />
<property name="delegate" ref="flatFileTransformerWriter" />
<property name="transformer">
<bean
class="org.springframework.batch.sample.dao.OrderTransformer">
<property name="aggregators" ref="outputDescriptors" />
<property name="aggregators" ref="outputAggregators" />
</bean>
</property>
</bean>

View File

@@ -5,7 +5,7 @@
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">
<util:map id="outputAggregators">
<entry key="header" value-ref="outputHeader" />
<entry key="footer" value-ref="outputFooter" />
<entry key="customer" value-ref="outputCustomer" />

View File

@@ -1,9 +1,9 @@
<?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"
<?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
@@ -15,84 +15,85 @@
<bean id="staging" parent="simpleStep">
<property name="commitInterval" value="2" />
<property name="startLimit" value="100" />
<property name="streams" ref="fileInputTemplate" />
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader"
ref="fileInputTemplate" />
<property name="validator"
ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.StagingItemWriter">
<property name="dataSource"
ref="dataSource" />
<property name="lobHandler"
ref="lobHandler" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName"
value="BATCH_STAGING_SEQ" />
</bean>
</property>
</bean>
</property>
</bean>
<bean id="loading" parent="simpleStep">
<property name="taskExecutor">
<bean
class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
<property name="itemReader">
<bean
class="org.springframework.batch.sample.item.reader.StagingItemReader">
<property name="lobHandler"
ref="lobHandler" />
<property name="dataSource"
ref="dataSource" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</list>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<!-- This input source is injected into the test case to verify the output - not used by the job at all -->
<bean id="testInputTemplate"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" ref="fileLocator" />
<property name="lineTokenizer" ref="fixedFileDescriptor" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</bean>
<bean id="fileInputTemplate" parent="testInputTemplate"
autowire-candidate="false">
</bean>
<bean id="fixedFileDescriptor"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator"
class="org.springframework.batch.item.validator.SpringValidator">
<property name="validator">
<bean id="tradeValidator"
class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader"
ref="fileItemReader" />
<property name="validator"
ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.StagingItemWriter">
<property name="dataSource"
ref="dataSource" />
<property name="lobHandler"
ref="lobHandler" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName"
value="BATCH_STAGING_SEQ" />
</bean>
</property>
</bean>
</property>
</bean>
<bean id="loading" parent="simpleStep">
<property name="taskExecutor">
<bean
class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
<property name="itemReader">
<bean
class="org.springframework.batch.sample.item.reader.StagingItemReader">
<property name="lobHandler"
ref="lobHandler" />
<property name="dataSource"
ref="dataSource" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</list>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<!-- This input source is injected into the test case to verify the output - not used by the job at all -->
<bean id="testItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="classpath:data/fixedLengthImportJob/input/20070122.teststream.ImportTradeDataStep.txt" />
<property name="lineTokenizer" ref="fixedFileTokenizer" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</bean>
<bean id="fileItemReader" parent="testItemReader"
autowire-candidate="false">
</bean>
<bean id="fixedFileTokenizer"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator"
class="org.springframework.batch.item.validator.SpringValidator">
<property name="validator">
<bean id="tradeValidator"
class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<![CDATA[
{ isin : length(?) < 13 : 'ISIN too long' : 'isin_length' : 12}
]]>
@@ -102,32 +103,26 @@
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.dao.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fileLocator"
class="org.springframework.core.io.ClassPathResource">
<constructor-arg type="java.lang.String"
value="data/fixedLengthImportJob/input/20070122.teststream.ImportTradeDataStep.txt" />
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.mapping.TradeFieldSetMapper" />
<aop:config>
<aop:aspect id="moduleLogging" ref="logAdvice">
<aop:after
pointcut="execution( * org.springframework.batch.item.ItemWriter+.write(Object)) and args(item)"
method="doStronglyTypedLogging" />
</aop:aspect>
</aop:config>
<bean id="tradeDao"
class="org.springframework.batch.sample.dao.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.mapping.TradeFieldSetMapper" />
<aop:config>
<aop:aspect id="moduleLogging" ref="logAdvice">
<aop:after
pointcut="execution( * org.springframework.batch.item.ItemWriter+.write(Object)) and args(item)"
method="doStronglyTypedLogging" />
</aop:aspect>
</aop:config>
</beans>

View File

@@ -1,64 +1,64 @@
<?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"
<?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">
<bean id="restartSampleJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep">
<property name="streams" ref="fileItemReader"/>
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader"
ref="itemReader" />
<property name="validator" ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
<property name="commitInterval" value="2" />
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<bean id="itemReader"
class="org.springframework.batch.sample.item.reader.ExceptionThrowingItemReaderProxy">
<property name="itemReader" ref="fileItemReader" />
</bean>
<bean id="fileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" ref="fileLocator" />
<property name="lineTokenizer" ref="fixedFileDescriptor" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</bean>
<bean id="fixedFileDescriptor"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator"
class="org.springframework.batch.item.validator.SpringValidator">
<property name="validator">
<bean id="tradeValidator"
class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader" ref="itemReader" />
<property name="validator" ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
<property name="commitInterval" value="2" />
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<bean id="itemReader"
class="org.springframework.batch.sample.item.reader.ExceptionThrowingItemReaderProxy">
<property name="itemReader" ref="fileItemReader" />
</bean>
<bean id="fileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="classpath:data/fixedLengthImportJob/input/20070122.teststream.ImportTradeDataStep.txt" />
<property name="lineTokenizer" ref="fixedFileDescriptor" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</bean>
<bean id="fixedFileDescriptor"
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="ISIN, Quantity, Price, Customer" />
<property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>
<bean id="fixedValidator"
class="org.springframework.batch.item.validator.SpringValidator">
<property name="validator">
<bean id="tradeValidator"
class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<![CDATA[
{ isin : length(?) < 13 : 'ISIN too long' : 'isin_length' : 12}
]]>
@@ -68,24 +68,18 @@
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.dao.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fileLocator"
class="org.springframework.core.io.ClassPathResource">
<constructor-arg type="java.lang.String"
value="data/fixedLengthImportJob/input/20070122.teststream.ImportTradeDataStep.txt" />
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.mapping.TradeFieldSetMapper" />
<bean id="tradeDao"
class="org.springframework.batch.sample.dao.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.mapping.TradeFieldSetMapper" />
</beans>