Sunday, 1 September 2013

Spring-batch and file upload

Spring-batch and file upload

I'm trying to invoke spring batch job with resource from uploaded file.
I've prepared from when I upload file with data to load.
Here's my action:
@RequestMapping(value = "/import-users", method = RequestMethod.POST)
public String importUsers(@ModelAttribute("uploadForm") FileUploadForm
uploadForm,
Model map) {
List<MultipartFile> files = uploadForm.getFiles();
if (null != files && files.size() > 0) {
for (MultipartFile multipartFile : files) {
String fileName = multipartFile.getOriginalFilename();
try {
JobParametersBuilder builder = new JobParametersBuilder();
builder.addString("input.file.name", fileName);
jobLauncher.run(clientJob, builder.toJobParameters());
} catch (JobExecutionAlreadyRunningException e) {
e.printStackTrace();
} catch (JobRestartException e) {
e.printStackTrace();
} catch (JobInstanceAlreadyCompleteException e) {
e.printStackTrace();
} catch (JobParametersInvalidException e) {
e.printStackTrace();
}
}
}
return "administration";
}
This code isn't working because "resource" property search for file in the
classpath.
My reader is defined like that:
<bean id="cvsFileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader"
scope="step">
<!-- Read a csv file -->
<property name="resource"
value="file:#{jobParameters['input.file.name']}" />
<property name="lineMapper">
...
</property>
</bean>
Any clues?

No comments:

Post a Comment