春季批次:加工条件

时间:2021-04-20 12:06:25

标签: java spring-batch

我有一个弹簧批处理过程,应该执行以下操作:

我读取了多个这样命名的文件:

法国.123456

比利时.569834

法国.896471

英国.128956

英国.789632

比利时.896321

德国.678900 ...等

所以我必须将所有法国文件内容写入一个名为“france”的文件中,将所有德国文件内容写入一个名为“germany”的文件中......等等 因此,将常见的国家/地区文件合二为一。

这是我的批处理配置类,它读取所有文件并一次只生成一个包含所有内容的文件。哪个不是必需的!!

@Component

@Configuration

@EnableBatchProcessing

public class batchConfig {

   private FichierEclate FE =new FichierEclate();

    private String[] fileName;

                @Value("input/*")

                private Resource[] inputResources;

                private String[] Item=new String[100];

                @Autowired

                private JobBuilderFactory jobBuilderFactory;

                @Autowired

                private StepBuilderFactory stepBuilderFactory;

                @Bean

                public FlatFileItemReader<content> reader() {

                               FlatFileItemReader<content> fileItemReader= new FlatFileItemReader<>();

                               fileItemReader.setName("FFIR1");

                               //fileItemReader.setLinesToSkip(1);

                               //fileItemReader.setResource(new ClassPathResource("fichier-eclate-1.csv"));

                               fileItemReader.setLineMapper(lineMappe());

                               return fileItemReader ;
                           }
                @Bean

                public MultiResourceItemReader<content> multiFileReader()  {

                               MultiResourceItemReader<content> multiFileItemReader= new MultiResourceItemReader<>();

                               multiFileItemReader.setResources(inputResources);

                               multiFileItemReader.setName("aaa");

                               multiFileItemReader.setDelegate(reader());

                               return multiFileItemReader ;
                                   }
                @Bean

                public FlatFileItemWriter<content> writer()

                {  FlatFileItemWriter<content> writer = new FlatFileItemWriter<>();

                    writer.setResource(new FileSystemResource("output.csv"));

                               writer.setAppendAllowed(true);

                               writer.setLineAggregator(new DelimitedLineAggregator<content>() {

                                               { //setDelimiter(",");

                                                               setFieldExtractor(new BeanWrapperFieldExtractor<content>() {

                                                                               { //setNames(new String[] { "AffaireID","CodeClasse","CodeAppli","NBcompte","NBlot" });

                                                                                     setNames(new String[] {"FileContent"});

                                                                               } });}});

                               writer.setAppendAllowed(true); // pour ajouter du contenu à la fin du fichier au lieu d'écraser l'ancien contenu à chaque fois

                               return writer; }

                @Bean

                public LineMapper<content> lineMappe(){

                               DefaultLineMapper<content> lineMapper= new DefaultLineMapper<>();

                               DelimitedLineTokenizer lineTokenizer=new DelimitedLineTokenizer();

                               //lineTokenizer.setDelimiter(",");

                               lineTokenizer.setStrict(false);

                               lineTokenizer.setNames("FileContent");

                               lineMapper.setLineTokenizer(lineTokenizer);

                               BeanWrapperFieldSetMapper fieldSetMapper=new BeanWrapperFieldSetMapper();

                               fieldSetMapper.setTargetType(content.class);

                               lineMapper.setFieldSetMapper(fieldSetMapper);

                               return lineMapper; }

                @Bean

                    public Job readCSVFilesJob(Step step1) {

                        return jobBuilderFactory

                                .get("readCSVFilesJob")

                                .incrementer(new RunIdIncrementer())

                                .start(step1)

                                .build(); }

                    @Bean

                    public Step step1(FlatFileItemWriter<content> writer)  {

                        return stepBuilderFactory.get("step1").<content, content>chunk(2)

                                .reader(multiFileReader())

                                .writer(writer)

                                .build();}}

如何在我的处理器中添加这个条件? 谢谢,

0 个答案:

没有答案
相关问题