spring批处理:处理中的条件

sulc1iza  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(257)

我有一个spring批处理过程,它应该可以实现以下功能:
我读了多个文件,名称如下:
法国123456
比利时569834
法国896471
英国128956
英国789632
比利时896321
德国678900…等
所以我必须把所有法国文件的内容写进一个叫做“法国”的文件里,把所有德国文件的内容写进一个叫做“德国”的文件里……所以把普通的国家文件都写进一个文件里。
下面是我的批处理配置类,它读取所有文件并一次生成一个包含所有内容的文件。这不是必需的!!

@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();}}

如何在处理器中添加此条件?谢谢您,

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题