Advertisement
richieriviere

Untitled

Aug 11th, 2016
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.26 KB | None | 0 0
  1. package com.myer.pricing.onlinestore.export.job;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.SQLException;
  5. import java.util.Date;
  6. import java.util.List;
  7.  
  8. import org.springframework.batch.core.Job;
  9. import org.springframework.batch.core.Step;
  10. import org.springframework.batch.core.StepContribution;
  11. import org.springframework.batch.core.configuration.annotation.JobScope;
  12. import org.springframework.batch.core.launch.support.RunIdIncrementer;
  13. import org.springframework.batch.core.scope.context.ChunkContext;
  14. import org.springframework.batch.core.step.tasklet.Tasklet;
  15. import org.springframework.batch.repeat.RepeatStatus;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Qualifier;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.context.annotation.Bean;
  20. import org.springframework.context.annotation.Configuration;
  21. import org.springframework.context.annotation.Import;
  22. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  23. import org.springframework.jdbc.core.JdbcTemplate;
  24. import org.springframework.jdbc.core.PreparedStatementSetter;
  25.  
  26. import com.myer.pricing.onlinestore.export.constants.JobParamConstants;
  27. import com.myer.pricing.onlinestore.export.job.common.CommonExportFromStagingDbJobConfig;
  28. import com.myer.pricing.onlinestore.export.model.PromotionStartDateEndDateGrouping;
  29.  
  30.  
  31. /**
  32.  * Master List export job from the online pricing staging db.
  33.  *
  34.  * @author Richard Riviere
  35.  *
  36.  */
  37. @Configuration
  38. @Import(CommonExportFromStagingDbJobConfig.class)
  39. public class ExportMasterListCsvJobConfig {
  40.    
  41.     public static final String JOB_NAME = "exportMasterListCsv";
  42.    
  43.     @Autowired
  44.     private CommonExportFromStagingDbJobConfig commonJobConfig;
  45.  
  46.     @Value("${exportMasterListCsv.generatePromoStartDateEndDateGroupings.promoStartDateEndDateSql}")
  47.     private String promoStartDateEndDateSql;
  48.    
  49.     @Bean
  50.     public Job exportMasterListCsvJob(
  51.             @Qualifier("createJobDatesStep") Step createJobDatesStep,
  52.             @Qualifier("createJobDatesCreator") JobDatesCreator createJobDatesCreator) {
  53.        
  54.        
  55.         List<PromotionStartDateEndDateGrouping> grps = createJobDatesCreator.getPromotionStartDateEndDateGroupings();
  56.         System.err.println("jobDatesCreator: "+ grps);
  57.        
  58.         return commonJobConfig.jobBuilderFactory.get(JOB_NAME)
  59.                 .incrementer(new RunIdIncrementer())
  60.                 .start(createJobDatesStep)
  61.                 .build();
  62.        
  63.        
  64.     }  
  65.    
  66.     @Bean
  67.     public Step createJobDatesStep(
  68.             @Qualifier("createJobDatesTasklet")  Tasklet createJobDatesTasklet) {
  69.         //createJobDatesTasklet.setConfiguration();
  70.         return  commonJobConfig.stepBuilderFactory
  71.                     .get("createJobDatesStep")
  72.                     .tasklet(createJobDatesTasklet)
  73.                     .build();              
  74.     }  
  75.    
  76.     private List<PromotionStartDateEndDateGrouping> getJobDatesDates(Date jobFromDate){
  77.         JdbcTemplate jdbcTemplate = new JdbcTemplate(commonJobConfig.onlineStagingDb);
  78.        
  79.         List<PromotionStartDateEndDateGrouping> promotionStartDateEndDateGroupings =
  80.                 jdbcTemplate.query(
  81.                         promoStartDateEndDateSql,
  82.                         new PreparedStatementSetter() {
  83.                             public void setValues(PreparedStatement preparedStatement) throws SQLException {
  84.                                 preparedStatement.setDate(1, new java.sql.Date(jobFromDate.getTime()));  
  85.                             }
  86.                         },
  87.                         BeanPropertyRowMapper.newInstance(PromotionStartDateEndDateGrouping.class));
  88.        
  89.         System.err.println("getJobDatesDates:" + promotionStartDateEndDateGroupings);
  90.        
  91.         return promotionStartDateEndDateGroupings;
  92.     }
  93.    
  94.     @Bean
  95.     @JobScope
  96.     public JobDatesCreator createJobDatesCreator(
  97.             @Value("#{jobParameters['" + JobParamConstants.PARAM_FROM_DATE + "']}") Date jobFromDate,
  98.             @Value("#{jobParameters['" + JobParamConstants.PARAM_TO_DATE + "']}") Date jobToDate) {
  99.         JobDatesCreator result = new JobDatesCreator();
  100.         result.init();
  101.         result.setJobFromDate(jobFromDate);
  102.         result.setJobToDate(jobToDate);
  103.         return result;
  104.     }
  105.    
  106.     @Bean
  107.     @JobScope
  108.     public Tasklet createJobDatesTasklet(
  109.             @Value("${exportMasterListCsv.generatePromoStartDateEndDateGroupings.promoStartDateEndDateSql}") String promoStartDateEndDateSql,
  110.             @Value("#{jobParameters['" + JobParamConstants.PARAM_FROM_DATE + "']}") Date jobFromDate,
  111.             @Value("#{jobParameters['" + JobParamConstants.PARAM_TO_DATE + "']}") Date jobToDate) {
  112.        
  113.         return new Tasklet() {
  114.            
  115.             @Override
  116.             public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
  117.                 JdbcTemplate jdbcTemplate = new JdbcTemplate(commonJobConfig.onlineStagingDb);
  118.                
  119.                 List<PromotionStartDateEndDateGrouping> promotionStartDateEndDateGroupings =
  120.                         jdbcTemplate.query(
  121.                                 promoStartDateEndDateSql,
  122.                                 new PreparedStatementSetter() {
  123.                                     public void setValues(PreparedStatement preparedStatement) throws SQLException {
  124.                                         preparedStatement.setDate(1, new java.sql.Date(jobFromDate.getTime()));  
  125.                                     }
  126.                                 },
  127.                                 BeanPropertyRowMapper.newInstance(PromotionStartDateEndDateGrouping.class));
  128.                
  129.                 System.err.println("promotionStartDateEndDateGroupings: " + promotionStartDateEndDateGroupings);
  130.                 return RepeatStatus.FINISHED;
  131.             }
  132.         };
  133.     }
  134.  
  135.  
  136.    
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement