IN PROGRESS - BATCH-672: updated tests to use SimpleJdbcTemplate

This commit is contained in:
trisberg
2008-07-28 19:42:21 +00:00
parent 8f54efabd7
commit e6bc3fc3fe
11 changed files with 521 additions and 533 deletions

View File

@@ -20,9 +20,11 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.sample.domain.trade.Trade;
import org.springframework.batch.sample.domain.trade.TradeDao;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
import javax.sql.DataSource;
/**
* Writes a Trade object to a database
@@ -39,7 +41,7 @@ public class JdbcTradeDao implements TradeDao {
/**
* handles the processing of sql query
*/
private JdbcOperations jdbcTemplate;
private SimpleJdbcTemplate simpleJdbcTemplate;
/**
* database is not expected to be setup for autoincrementation
@@ -50,17 +52,15 @@ public class JdbcTradeDao implements TradeDao {
* @see TradeDao
*/
public void writeTrade(Trade trade) {
Long id = new Long(incrementer.nextLongValue());
Long id = incrementer.nextLongValue();
log.debug("Processing: " + trade);
jdbcTemplate.update(INSERT_TRADE_RECORD,
new Object[] {
id, trade.getIsin(), new Long(trade.getQuantity()), trade.getPrice(),
trade.getCustomer()
});
simpleJdbcTemplate.update(INSERT_TRADE_RECORD,
id, trade.getIsin(), trade.getQuantity(), trade.getPrice(),
trade.getCustomer());
}
public void setJdbcTemplate(JdbcOperations jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
public void setIncrementer(DataFieldMaxValueIncrementer incrementer) {

View File

@@ -1,7 +1,7 @@
<?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
@@ -38,36 +38,36 @@
<!-- INFRASTRUCTURE SETUP -->
<bean id="tradeFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="classpath:data/beanWrapperMapperSampleJob/input/20070122.teststream.ImportTradeDataStep.txt" />
<property name="lineTokenizer" ref="tradeTokenizer" />
<property name="fieldSetMapper" ref="tradeFieldSetMapper" />
</bean>
<bean id="personFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="classpath:data/beanWrapperMapperSampleJob/input/20070122.teststream.ImportPersonDataStep.txt" />
<property name="lineTokenizer" ref="personTokenizer" />
<property name="fieldSetMapper" ref="personFieldSetMapper" />
<!-- <property name="validator" ref="fixedValidator" />-->
</bean>
<bean id="tradeTokenizer" 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="personTokenizer" class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names"
value="Title, FirstName, LastName, Age, Address.AddrLine1, children[0].name, children[1].name" />
<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">
<property name="validator">
<bean id="tradeValidator" class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<property name="resource"
value="classpath:data/beanWrapperMapperSampleJob/input/20070122.teststream.ImportTradeDataStep.txt" />
<property name="lineTokenizer" ref="tradeTokenizer" />
<property name="fieldSetMapper" ref="tradeFieldSetMapper" />
</bean>
<bean id="personFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="classpath:data/beanWrapperMapperSampleJob/input/20070122.teststream.ImportPersonDataStep.txt" />
<property name="lineTokenizer" ref="personTokenizer" />
<property name="fieldSetMapper" ref="personFieldSetMapper" />
<!-- <property name="validator" ref="fixedValidator" />-->
</bean>
<bean id="tradeTokenizer" 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="personTokenizer" class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names"
value="Title, FirstName, LastName, Age, Address.AddrLine1, children[0].name, children[1].name" />
<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">
<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}
]]>
@@ -78,7 +78,7 @@
</bean>
<bean id="tradeDao" class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />

View File

@@ -1,103 +1,103 @@
<?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="compositeItemWriterJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep">
<property name="streams">
<list>
<ref bean="fileItemReader" />
<ref bean="fileItemWriter" />
</list>
</property>
<property name="itemReader">
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader"
ref="fileItemReader" />
<property name="validator" ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter" ref="compositeWriter" />
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<bean id="compositeWriter"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<bean
class="org.springframework.batch.sample.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
<ref bean="fileItemWriter" />
</list>
</property>
</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="fixedFileTokenizer" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</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}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean class="org.springframework.batch.item.file.FlatFileItemWriter"
id="fileItemWriter">
<property name="resource"
value="file:target/test-outputs/20070122.testStream.ParallelCustomerReportStep.TEMP.txt" />
<property name="fieldSetCreator">
<bean
class="org.springframework.batch.item.file.mapping.PassThroughFieldSetCreator" />
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.domain.trade.internal.TradeFieldSetMapper" />
<?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="compositeItemWriterJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep">
<property name="streams">
<list>
<ref bean="fileItemReader" />
<ref bean="fileItemWriter" />
</list>
</property>
<property name="itemReader">
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
<property name="itemReader"
ref="fileItemReader" />
<property name="validator" ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter" ref="compositeWriter" />
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<bean id="compositeWriter"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<bean
class="org.springframework.batch.sample.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
<ref bean="fileItemWriter" />
</list>
</property>
</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="fixedFileTokenizer" />
<property name="fieldSetMapper" ref="fieldSetMapper" />
</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}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean class="org.springframework.batch.item.file.FlatFileItemWriter"
id="fileItemWriter">
<property name="resource"
value="file:target/test-outputs/20070122.testStream.ParallelCustomerReportStep.TEMP.txt" />
<property name="fieldSetCreator">
<bean
class="org.springframework.batch.item.file.mapping.PassThroughFieldSetCreator" />
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.domain.trade.internal.TradeFieldSetMapper" />
</beans>

View File

@@ -2,34 +2,34 @@
<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="fixedLengthImportJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep" p:commitInterval="3">
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</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">
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="fixedLengthImportJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep" p:commitInterval="3">
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</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" />
@@ -48,25 +48,25 @@
<bean id="tradeValidator" class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value>
<![CDATA[
{ isin : length(?) < 13 : 'ISIN too long' : 'isin_length' : 12}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao" class="org.springframework.batch.sample.domain.trade.internal.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.domain.trade.internal.TradeFieldSetMapper" />
<![CDATA[
{ isin : length(?) < 13 : 'ISIN too long' : 'isin_length' : 12}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao" class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper" class="org.springframework.batch.sample.domain.trade.internal.TradeFieldSetMapper" />
</beans>

View File

@@ -1,39 +1,39 @@
<?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="multiResourceJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep" p:commitInterval="3">
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<!-- This input source is injected into the test case to verify the output - not used by the job at all -->
<?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="multiResourceJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep" p:commitInterval="3">
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.domain.trade.internal.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
</property>
</bean>
</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.MultiResourceItemReader">
<property name="resources"
@@ -41,51 +41,51 @@
<property name="delegate" ref="flatFileItemReader" />
</bean>
<bean id="fileItemReader" parent="testItemReader"
autowire-candidate="false" />
<bean id="flatFileItemReader"
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="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}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.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.domain.trade.internal.TradeFieldSetMapper" />
<bean id="fileItemReader" parent="testItemReader"
autowire-candidate="false" />
<bean id="flatFileItemReader"
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="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}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.domain.trade.internal.TradeFieldSetMapper" />
</beans>

View File

@@ -1,99 +1,99 @@
<?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="parallelJob" parent="simpleJob">
<property name="steps">
<list>
<bean id="staging" parent="simpleStep">
<property name="commitInterval" value="2" />
<property name="startLimit" value="100" />
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.common.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.common.StagingItemReader">
<property name="lobHandler"
ref="lobHandler" />
<property name="dataSource"
ref="dataSource" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.domain.trade.internal.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>
<?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="parallelJob" parent="simpleJob">
<property name="steps">
<list>
<bean id="staging" parent="simpleStep">
<property name="commitInterval" value="2" />
<property name="startLimit" value="100" />
<property name="streams" ref="fileItemReader" />
<property name="itemReader">
<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.common.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.common.StagingItemReader">
<property name="lobHandler"
ref="lobHandler" />
<property name="dataSource"
ref="dataSource" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.sample.domain.trade.internal.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}
]]>
@@ -103,26 +103,26 @@
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.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.domain.trade.internal.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.domain.trade.internal.JdbcTradeDao">
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.domain.trade.internal.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,86 +1,86 @@
<?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="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.domain.trade.internal.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.support.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" />
<?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="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.domain.trade.internal.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.support.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" />
<property name="saveState" value="true" />
</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>
<property name="saveState" value="true" />
</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}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.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.domain.trade.internal.TradeFieldSetMapper" />
{ isin : length(?) < 13 : 'ISIN too long' : 'isin_length' : 12}
]]>
</value>
</property>
</bean>
</property>
</bean>
<bean id="tradeDao"
class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao">
<property name="dataSource" ref="dataSource" />
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />
</bean>
</property>
</bean>
<bean id="fieldSetMapper"
class="org.springframework.batch.sample.domain.trade.internal.TradeFieldSetMapper" />
</beans>

View File

@@ -10,7 +10,7 @@
<bean class="org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao"
id="tradeDao" p:jdbcTemplate-ref="jdbcTemplate">
id="tradeDao" p:dataSource-ref="dataSource">
<property name="incrementer">
<bean parent="incrementerParent">
<property name="incrementerName" value="TRADE_SEQ" />

View File

@@ -26,10 +26,9 @@ import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.sample.domain.trade.Trade;
import org.springframework.batch.sample.domain.trade.internal.JdbcTradeDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -39,30 +38,27 @@ import org.springframework.transaction.annotation.Transactional;
@ContextConfiguration(locations = {"/data-source-context.xml"})
public class JdbcTradeWriterTests {
private JdbcTemplate jdbcTemplate;
private SimpleJdbcTemplate simpleJdbcTemplate;
private AbstractDataFieldMaxValueIncrementer incrementer;
private JdbcTradeDao writer;
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
this.writer = new JdbcTradeDao();
this.writer.setDataSource(dataSource);
}
@Autowired
public void setIncrementer(AbstractDataFieldMaxValueIncrementer incrementer) {
this.incrementer = incrementer;
incrementer.setIncrementerName("TRADE_SEQ");
this.writer.setIncrementer(incrementer);
}
@Transactional @Test
public void testWrite() {
JdbcTradeDao writer = new JdbcTradeDao();
incrementer.setIncrementerName("TRADE_SEQ");
writer.setIncrementer(incrementer);
writer.setJdbcTemplate(jdbcTemplate);
Trade trade = new Trade();
trade.setCustomer("testCustomer");
trade.setIsin("5647238492");
@@ -71,7 +67,7 @@ public class JdbcTradeWriterTests {
writer.writeTrade(trade);
jdbcTemplate.query("SELECT * FROM TRADE WHERE ISIN = '5647238492'", new RowCallbackHandler() {
simpleJdbcTemplate.getJdbcOperations().query("SELECT * FROM TRADE WHERE ISIN = '5647238492'", new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
assertEquals("testCustomer", rs.getString("CUSTOMER"));
assertEquals(new BigDecimal(Double.toString(99.69)), rs.getBigDecimal("PRICE"));

View File

@@ -24,7 +24,6 @@ import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -41,7 +40,7 @@ import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.AfterTransaction;
@@ -64,7 +63,7 @@ public class JdbcJobRepositoryTests {
private List<Serializable> list = new ArrayList<Serializable>();
private JdbcTemplate jdbcTemplate;
private SimpleJdbcTemplate simpleJdbcTemplate;
private PlatformTransactionManager transactionManager;
@@ -73,7 +72,7 @@ public class JdbcJobRepositoryTests {
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
@Autowired
@@ -90,26 +89,23 @@ public class JdbcJobRepositoryTests {
public void onSetUpInTransaction() throws Exception {
jobConfiguration = new JobSupport("test-job");
jobConfiguration.setRestartable(true);
jdbcTemplate.update("DELETE FROM BATCH_EXECUTION_CONTEXT");
jdbcTemplate.update("DELETE FROM BATCH_STEP_EXECUTION");
jdbcTemplate.update("DELETE FROM BATCH_JOB_EXECUTION");
jdbcTemplate.update("DELETE FROM BATCH_JOB_PARAMS");
jdbcTemplate.update("DELETE FROM BATCH_JOB_INSTANCE");
simpleJdbcTemplate.update("DELETE FROM BATCH_EXECUTION_CONTEXT");
simpleJdbcTemplate.update("DELETE FROM BATCH_STEP_EXECUTION");
simpleJdbcTemplate.update("DELETE FROM BATCH_JOB_EXECUTION");
simpleJdbcTemplate.update("DELETE FROM BATCH_JOB_PARAMS");
simpleJdbcTemplate.update("DELETE FROM BATCH_JOB_INSTANCE");
}
@AfterTransaction
public void onTearDownAfterTransaction() throws Exception {
for (Iterator<Long> iterator = jobExecutionIds.iterator(); iterator.hasNext();) {
Long id = iterator.next();
jdbcTemplate.update("DELETE FROM BATCH_JOB_EXECUTION where JOB_EXECUTION_ID=?", new Object[] { id });
for (Long id : jobExecutionIds) {
simpleJdbcTemplate.update("DELETE FROM BATCH_JOB_EXECUTION where JOB_EXECUTION_ID=?", id);
}
for (Iterator<Long> iterator = jobIds.iterator(); iterator.hasNext();) {
Long id = iterator.next();
jdbcTemplate.update("DELETE FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", new Object[] { id });
for (Long id : jobIds) {
simpleJdbcTemplate.update("DELETE FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", id);
}
for (Iterator<Long> iterator = jobIds.iterator(); iterator.hasNext();) {
Long id = iterator.next();
int count = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", new Object[] { id });
for (Long id : jobIds) {
int count = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", id);
assertEquals(0, count);
}
}
@@ -117,9 +113,9 @@ public class JdbcJobRepositoryTests {
@Transactional @Test
public void testFindOrCreateJob() throws Exception {
jobConfiguration.setName("foo");
int before = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int before = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
JobExecution execution = repository.createJobExecution(jobConfiguration, new JobParameters());
int after = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int after = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
assertEquals(before + 1, after);
assertNotNull(execution.getId());
}
@@ -129,10 +125,9 @@ public class JdbcJobRepositoryTests {
jobConfiguration.setName("bar");
int before = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int before = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
assertEquals(0, before);
JobExecution execution = null;
long t0 = System.currentTimeMillis();
try {
doConcurrentStart();
@@ -143,13 +138,11 @@ public class JdbcJobRepositoryTests {
}
long t1 = System.currentTimeMillis();
if (execution == null) {
execution = (JobExecution) list.get(0);
}
JobExecution execution = (JobExecution) list.get(0);
assertNotNull(execution);
int after = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int after = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
assertNotNull(execution.getId());
assertEquals(before + 1, after);
@@ -168,7 +161,7 @@ public class JdbcJobRepositoryTests {
repository.update(execution);
execution.setStatus(BatchStatus.FAILED);
int before = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int before = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
assertEquals(1, before);
long t0 = System.currentTimeMillis();
@@ -181,7 +174,7 @@ public class JdbcJobRepositoryTests {
}
long t1 = System.currentTimeMillis();
int after = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
int after = simpleJdbcTemplate.queryForInt("SELECT COUNT(*) FROM BATCH_JOB_INSTANCE");
assertNotNull(execution.getId());
assertEquals(before, after);

View File

@@ -26,7 +26,7 @@ import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.config.AbstractFactoryBean;
import org.springframework.core.io.Resource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
@@ -85,8 +85,7 @@ public class InitializingDataSourceFactoryBean extends AbstractFactoryBean {
logger.debug("Could not execute destroy script [" + destroyScript + "]", e);
}
if (initScripts != null) {
for (int i = 0; i < initScripts.length; i++) {
Resource initScript = initScripts[i];
for (Resource initScript : initScripts) {
doExecuteScript(initScript);
}
}
@@ -103,7 +102,7 @@ public class InitializingDataSourceFactoryBean extends AbstractFactoryBean {
@SuppressWarnings("unchecked")
public Object doInTransaction(TransactionStatus status) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource);
String[] scripts;
try {
scripts = StringUtils.delimitedListToStringArray(stripComments(IOUtils.readLines(scriptResource
@@ -112,14 +111,14 @@ public class InitializingDataSourceFactoryBean extends AbstractFactoryBean {
catch (IOException e) {
throw new BeanInitializationException("Cannot load script from [" + scriptResource + "]", e);
}
for (int i = 0; i < scripts.length; i++) {
String script = scripts[i].trim();
for (String script1 : scripts) {
String script = script1.trim();
if (StringUtils.hasText(script)) {
try {
jdbcTemplate.execute(script);
jdbcTemplate.getJdbcOperations().execute(script);
} catch (DataAccessException e) {
if (ignoreFailedDrop && script.toLowerCase().startsWith("drop")) {
logger.debug("DROP script failed (ignoring): "+script);
logger.debug("DROP script failed (ignoring): " + script);
} else {
throw e;
}
@@ -137,7 +136,7 @@ public class InitializingDataSourceFactoryBean extends AbstractFactoryBean {
StringBuffer buffer = new StringBuffer();
for (String line : list) {
if (!line.startsWith("//") && !line.startsWith("--")) {
buffer.append(line + "\n");
buffer.append(line).append("\n");
}
}
return buffer.toString();