RefPromoteurSequencesUpdateStepConfig.java

  1. package com.sintia.ffl.admin.audio.services.batch.refpromoteur.load;

  2. import com.sintia.ffl.admin.staging.FileUtils;
  3. import com.sintia.ffl.admin.staging.sequences.IntegerSequence;
  4. import com.sintia.ffl.admin.staging.step.imports.sequences.SequencePromoteurImportStepConfig;
  5. import com.sintia.ffl.adminui.commons.enums.TypeStaging;
  6. import com.sintia.ffl.core.commons.enums.CodePromoteur;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.batch.core.Step;
  10. import org.springframework.batch.core.configuration.annotation.JobScope;
  11. import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
  12. import org.springframework.batch.core.configuration.annotation.StepScope;
  13. import org.springframework.batch.item.support.AbstractItemStreamItemReader;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.context.annotation.Bean;
  16. import org.springframework.context.annotation.Configuration;
  17. import org.springframework.core.task.AsyncTaskExecutor;

  18. import javax.sql.DataSource;
  19. import java.io.IOException;
  20. import java.util.HashSet;
  21. import java.util.List;
  22. import java.util.Set;

  23. @Slf4j
  24. @Configuration
  25. public class RefPromoteurSequencesUpdateStepConfig extends SequencePromoteurImportStepConfig {

  26.     public RefPromoteurSequencesUpdateStepConfig(){
  27.         super(
  28.                 TypeStaging.REF_PROMOTEUR
  29.         );
  30.     }

  31.     @Bean
  32.     @JobScope
  33.     public Step refPromoteurSequencesUpdateStep(
  34.             StepBuilderFactory stepBuilderFactory,
  35.             FileUtils fileUtils,
  36.             DataSource dataSource,
  37.             AsyncTaskExecutor asyncExecutor,
  38.             @Value("#{jobParameters['codePromoteur']}") String codePromoteur
  39.     ) throws IOException {

  40.         Set<String> sequencesNames = new HashSet<>(List.of(
  41.                 "forfait_audio_identifiant_forfait_audio_seq",
  42.                 "marque_audio_promoteur_identifiant_marque_audio_promoteur_seq"
  43.         ));

  44.         // Tables spécifiques SCS
  45.         if(StringUtils.equals(CodePromoteur.SCS.name(), codePromoteur)){
  46.             sequencesNames.addAll(List.of(
  47.                     "accessoire_audio_identifianaccessoire_audio_seq",
  48.                     "gamme_audio_identifiant_gamme_audio_seq"
  49.             ));
  50.         }

  51.         return super.buildStep(
  52.                 stepBuilderFactory,
  53.                 fileUtils,
  54.                 asyncExecutor,
  55.                 dataSource,
  56.                 sequencesNames
  57.         );
  58.     }

  59.     @Bean("refPromoteurSequencesUpdateReader")
  60.     @StepScope
  61.     @Override
  62.     public AbstractItemStreamItemReader<IntegerSequence> reader(
  63.             FileUtils fileUtils,
  64.             @Value("#{jobParameters['envSource'] ?: 'pprod'}") String envSource,
  65.             @Value("#{jobParameters['envCible'] ?: 'pprod'}") String envCible,
  66.             @Value("#{jobParameters['codePromoteur']}") String codePromoteur
  67.     ) throws IOException {
  68.         return super.buildReader(fileUtils, envSource, envCible, codePromoteur);
  69.     }

  70. }