BATCH-1728: Initial commit of Spring Data ItemReader/ItemWriter implementations

This commit is contained in:
Michael Minella
2012-12-04 14:44:24 -06:00
parent 15782875ea
commit 91deb12a83
20 changed files with 2306 additions and 25 deletions

View File

@@ -0,0 +1,12 @@
package org.springframework.batch.sample.data;
import java.math.BigDecimal;
import org.springframework.batch.sample.domain.trade.CustomerCredit;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface CustomerCreditRepository extends PagingAndSortingRepository<CustomerCredit, Long>{
Page<CustomerCredit> findByCreditGreaterThan(BigDecimal credit, Pageable request);
}

View File

@@ -0,0 +1,61 @@
<?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:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<jpa:repositories base-package="org.springframework.batch.sample.data"/>
<bean id="itemReader"
class="org.springframework.batch.item.data.RepositoryItemReader" scope="step">
<property name="pageSize" value="2"/>
<property name="methodName" value="findByCreditGreaterThan"/>
<property name="repository" ref="customerCreditRepository"/>
<property name="arguments">
<list>
<value>#{new java.math.BigDecimal(jobParameters[credit])}</value>
</list>
</property>
<property name="sort">
<map>
<entry key="id" value="ASC"/>
</map>
</property>
</bean>
<bean id="itemWriter"
class="org.springframework.batch.item.data.RepositoryItemWriter">
<property name="methodName" value="save"/>
<property name="repository" ref="customerCreditRepository"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="customerCredit" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
</bean>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<!--
Hibernate JPA dialect does not support custom tx isolation levels =>
overwrite with ISOLATION_DEFAULT
-->
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="isolationLevelForCreate" value="ISOLATION_DEFAULT" />
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
</bean>
</beans>

View File

@@ -0,0 +1,31 @@
package org.springframework.batch.sample.iosample;
import org.junit.runner.RunWith;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.scope.context.StepSynchronizationManager;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.sample.domain.trade.CustomerCredit;
import org.springframework.batch.test.MetaDataInstanceFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/jobs/iosample/repository.xml")
public class RepositoryFunctionalTests extends AbstractIoSampleTests {
@Override
protected void pointReaderToOutput(ItemReader<CustomerCredit> reader) {
JobParameters jobParameters = new JobParametersBuilder(super.getUniqueJobParameters()).addDouble("credit", 0.)
.toJobParameters();
StepExecution stepExecution = MetaDataInstanceFactory.createStepExecution(jobParameters);
StepSynchronizationManager.close();
StepSynchronizationManager.register(stepExecution);
}
@Override
protected JobParameters getUniqueJobParameters() {
return new JobParametersBuilder(super.getUniqueJobParameters()).addString("credit", "10000").toJobParameters();
}
}