BATCH-1728: Initial commit of Spring Data ItemReader/ItemWriter implementations
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user