1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.batch.sample.common;
17
18 import org.apache.commons.io.FilenameUtils;
19 import org.springframework.batch.core.StepExecution;
20 import org.springframework.batch.core.annotation.BeforeStep;
21 import org.springframework.batch.item.ExecutionContext;
22
23
24
25
26
27 public class OutputFileListener {
28
29 private String outputKeyName = "outputFile";
30
31 private String inputKeyName = "fileName";
32
33 private String path = "file:./target/output/";
34
35 public void setPath(String path) {
36 this.path = path;
37 }
38
39 public void setOutputKeyName(String outputKeyName) {
40 this.outputKeyName = outputKeyName;
41 }
42
43 public void setInputKeyName(String inputKeyName) {
44 this.inputKeyName = inputKeyName;
45 }
46
47 @BeforeStep
48 public void createOutputNameFromInput(StepExecution stepExecution) {
49 ExecutionContext executionContext = stepExecution.getExecutionContext();
50 String inputName = stepExecution.getStepName().replace(":", "-");
51 if (executionContext.containsKey(inputKeyName)) {
52 inputName = executionContext.getString(inputKeyName);
53 }
54 if (!executionContext.containsKey(outputKeyName)) {
55 executionContext.putString(outputKeyName, path + FilenameUtils.getBaseName(inputName)
56 + ".csv");
57 }
58 }
59
60 }