I need serious help please
i'm stuck for 3 days now in same problem
i have to code a spring batch program that read multiple csv files and copy their content into an output file.
My batch configuration is syntactically correct and i run the app without errors but i don't see items displayed in console!! feel like the files where not even red!
I have two writers:
One to write in console and the other to write in dest file
But none of them woked!!
I don't think that files are even red !
here is my batchConfig class:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
   @Component
 
    @Configuration
 
    @EnableBatchProcessing
 
    public class batchConfig {
 
 
 
                       @Autowired
 
                        private JobBuilderFactory jobBuilderFactory;
 
 
 
                        @Autowired
 
                        private StepBuilderFactory stepBuilderFactory;
 
 
 
                    //    @Value(value="Fichiers-eclates/fichier-eclate-*.csv")
 
                    //    private Resource[] inputResources;
 
                      //  @Value("#{jobParameters['FichierEclate']}") Resource[] inputFile;
 
                       @Value("file:/Fichiers-eclates/*.csv") Resource[] inputFile;
 
 
 
                    //   @Value("#{jobParameters['FichierRegrouppe']}") Resource  outputFile;
 
 
 
 
 
                        @Bean
 
                        public ConsoleItemWriter<FichierEclate> writerConsole()
 
                        {
 
                            return new ConsoleItemWriter<FichierEclate>();
 
                        }
 
 
 
 
 
                        public FlatFileItemWriter<FichierEclate> writer() 
 
                        {
 
 
 
                            FlatFileItemWriter<FichierEclate> writer = new FlatFileItemWriter<>();
 
 
 
 
 
                           writer.setResource(new ClassPathResource("Fichiers-regrouppes/outputData.csv"));
 
 
 
 
 
                            writer.setAppendAllowed(true);
 
 
 
 
 
                            writer.setLineAggregator(new DelimitedLineAggregator<FichierEclate>() {
 
                                {
 
                                    setDelimiter(",");
 
                                    setFieldExtractor(new BeanWrapperFieldExtractor<FichierEclate>() {
 
                                        {
 
                                            setNames(new String[] { "AffaireID","CodeClasse","CodeAppli","NBcompte","NBlot" });
 
                                        }
 
                                    });
 
                                }
 
                            });
 
                            return writer;
 
                        }
 
 
 
                        @Bean
 
                        public Job readCSVFilesJob() {
 
                            return jobBuilderFactory
 
                                    .get("readCSVFilesJob")
 
                                    .incrementer(new RunIdIncrementer())
 
                                    .start(step1())
 
                                    .build();
 
                        }
 
 
 
                        @Bean
 
                        public Step step1()  {
 
                            return stepBuilderFactory.get("step1").<FichierEclate, FichierEclate>chunk(100)
 
                                    .reader(multiResourceItemReader())
 
                                    .writer(writerConsole())
 
                                    .build();
 
                        }
 
                        @Primary
 
                        @Bean
 
                        public MultiResourceItemReader<FichierEclate> multiResourceItemReader()
 
                        {
 
                            MultiResourceItemReader<FichierEclate> resourceItemReader = new MultiResourceItemReader<FichierEclate>();
 
                            resourceItemReader.setResources(inputFile);
 
                            resourceItemReader.setDelegate(reader());
 
                            return resourceItemReader;
 
                        }
 
 
 
                       @SuppressWarnings({ "rawtypes", "unchecked" })
 
                        @Bean
 
                        public FlatFileItemReader<FichierEclate> reader()
 
                        {
 
 
 
                            FlatFileItemReader<FichierEclate> reader = new FlatFileItemReader<FichierEclate>();
 
 
 
 
                            reader.setLinesToSkip(1);  
 
 
 
 
 
                            reader.setLineMapper(new DefaultLineMapper() {
 
                                {
 
 
 
                                    setLineTokenizer(new DelimitedLineTokenizer() {
 
                                        {
 
                                            setNames(new String[] { "AffaireID","CodeClasse","CodeAppli","NBcompte","NBlot" });
 
                                        }
 
                                    });
 
 
 
                                    setFieldSetMapper(new BeanWrapperFieldSetMapper<FichierEclate>() {
 
                                        {
 
                                           setTargetType(FichierEclate.class);
 
                                        }
 
                                    });
 
                                }
 
                            });
 
                            return reader;
 
                        }
 
     @Bean
     public JobParametersValidator defaultJobParametersValidator() {
     DefaultJobParametersValidator bean = new DefaultJobParametersValidator();
 
                                                   bean.setRequiredKeys(new String[] { "FichierEclate" });
 
                                                   bean.setOptionalKeys(new String[] { "run.id" });
 
                                                   return bean;
 
                                   }
 
 
 
                                   @Bean
 
                                   public JobParametersValidator myJobParametersValidator() {
 
                                                   return new MyJobParametersValidator();
 
                                   }
 
    }
here another class for consoleWriter :



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
   import java.util.List;
 
 
 
    import org.springframework.batch.item.ItemWriter;
 
 
 
    public class ConsoleItemWriter<T> implements ItemWriter<T> {
 
        @Override
 
        public void write(List<? extends T> items) throws Exception {
 
            for (T item : items) {
 
                System.out.println(item);
 
            }
 
        }
 
    }
Now my questions are:

1/ the folder that contains multiple files to be red is outside so i
want to pass the folder path as environment variable in "Run
configurations" in Eclipse. I'll need this in production later. Then i
call that environment variable in the flatefileItemReader or the
MultiresourceReader, not sure, i need you to tell me which one and how
please?

2/ the outputfile that will contain the content of all input files
should be created automatically in specific folder. this folder path
should be also passed as environment variable and called later in
FlatFileitemWriter.

3/ Why i don't see items displayed in console althought i don't have
errors? if because the files where not red, tell me how to acheive
question "1".


How can i solve this please ?!!