Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.my.pricing.onlinestore.export.job.common;
- import java.io.File;
- import java.io.IOException;
- import java.io.Writer;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Timestamp;
- import java.util.List;
- import javax.sql.DataSource;
- import org.springframework.batch.core.JobExecution;
- import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
- import org.springframework.batch.core.configuration.annotation.JobScope;
- import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
- import org.springframework.batch.core.configuration.annotation.StepScope;
- import org.springframework.batch.item.database.JdbcCursorItemReader;
- import org.springframework.batch.item.file.FlatFileHeaderCallback;
- import org.springframework.batch.item.file.FlatFileItemWriter;
- import org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor;
- import org.springframework.batch.item.file.transform.FormatterLineAggregator;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.FileSystemResource;
- import org.springframework.jdbc.core.PreparedStatementSetter;
- import org.springframework.jdbc.core.RowMapper;
- import com.myer.pricing.onlinestore.export.constants.DaoConstants;
- import com.myer.pricing.onlinestore.export.constants.ExecutionContextConstants;
- import com.myer.pricing.onlinestore.export.constants.FlatFileConstants;
- import com.myer.pricing.onlinestore.export.constants.MerchHierarchyConstants;
- import com.myer.pricing.onlinestore.export.model.MasterList;
- import com.myer.pricing.onlinestore.export.model.PromotionStartDateEndDateGrouping;
- @Configuration
- public class CommonExportFromStagingDbJobConfig {
- @Autowired
- public JobBuilderFactory jobBuilderFactory;
- @Autowired
- public StepBuilderFactory stepBuilderFactory;
- @Value("${exportMasterListCsv.generateMasterListRows.chunkSize}")
- public int chunkSize;
- @Value("${exportMasterListCsv.generateMasterListRows.masterListSql}")
- public String masterListSql;
- @Autowired
- public DataSource onlineStagingDb;
- @Value("${out.dir}")
- public String outDir;
- @Bean
- @JobScope
- public JdbcCursorItemReader<MasterList> queryStagingDbReader(
- @Value("#{jobExecutionContext['" + ExecutionContextConstants.JOB_EXPORT_STAGING_PROMOTION_START_DATE_END_DATE_GROUPINGS +"']}")
- List<PromotionStartDateEndDateGrouping> promotionStartDateEndDateGroupings,
- @Value("#{jobExecution}")JobExecution jobExecution) {
- System.err.println("queryStagingDbReader:");
- PromotionStartDateEndDateGrouping promotionStartDateEndDateGrouping = promotionStartDateEndDateGroupings.remove(0);
- System.err.println("promotionStartDateEndDateGrouping:" + promotionStartDateEndDateGrouping);
- jobExecution
- .getExecutionContext()
- .put(
- ExecutionContextConstants.JOB_EXPORT_STAGING_WORKING_PROMOTION_START_DATE_END_DATE,
- promotionStartDateEndDateGrouping);
- JdbcCursorItemReader<MasterList> reader = new JdbcCursorItemReader<>();
- reader.setDataSource(onlineStagingDb);
- reader.setSql(masterListSql);
- reader.setPreparedStatementSetter(
- new PreparedStatementSetter() {
- public void setValues(PreparedStatement preparedStatement) throws SQLException {
- preparedStatement.setDate(1, new java.sql.Date(promotionStartDateEndDateGrouping.getRpmPromoCompDetailStartDate().getTime()));
- preparedStatement.setDate(2, new java.sql.Date(promotionStartDateEndDateGrouping.getRpmPromoCompDetailEndDate().getTime()));
- }
- });
- reader.setRowMapper(new RowMapper<MasterList>() {
- @Override
- public MasterList mapRow(ResultSet resultSet, int i) throws SQLException {
- MasterList masterList = new MasterList();
- masterList.setL1(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_ONE));
- masterList.setL2(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_TWO));
- masterList.setL2Name(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_TWO_NAME));
- masterList.setBrand(resultSet.getString(DaoConstants.COLUMN_HEADER_BRAND));
- masterList.setDivisionId(resultSet.getInt(DaoConstants.COLUMN_HEADER_DIVISION_ID));
- masterList.setSellingUnitRetail(resultSet.getDouble(DaoConstants.COLUMN_HEADER_SELLING_UNIT_RETAIL));
- masterList.setClearanceInd(resultSet.getBoolean(DaoConstants.COLUMN_HEADER_CLEARANCE_IND));
- masterList.setPromoRetail(resultSet.getDouble(DaoConstants.COLUMN_HEADER_PROMO_RETAIL));
- masterList.setPromoId(resultSet.getInt(DaoConstants.COLUMN_HEADER_PROMO_ID));
- masterList.setPromoName(resultSet.getString(DaoConstants.COLUMN_HEADER_PROMO_NAME));
- masterList.setPromoCompId(resultSet.getInt(DaoConstants.COLUMN_HEADER_PROMO_COMP_ID));
- masterList.setPromoCompName(resultSet.getString(DaoConstants.COLUMN_HEADER_PROMO_COMP_NAME));
- masterList.setRpmPromoCompDetailId(resultSet.getInt(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_ID));
- masterList.setRpmPromoCompDetailState(resultSet.getString(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_STATE));
- Timestamp startDateTs = resultSet.getTimestamp(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_START_DATE);
- java.util.Date startDate = null;
- if (startDateTs != null){
- startDate = new java.util.Date(startDateTs.getTime());
- }
- masterList.setRpmPromoCompDetailStartDate(startDate);
- Timestamp endDateTs = resultSet.getTimestamp(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_END_DATE);
- java.util.Date endDate = null;
- if (endDateTs != null){
- endDate = new java.util.Date(endDateTs.getTime());
- }
- masterList.setRpmPromoCompDetailEndDate(endDate);
- return masterList;
- }
- });
- return reader;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division10MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_10 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division15MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_15 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division20MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_20 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division25MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_25 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division30MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_30 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division35MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_35 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division40MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_40 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division45MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_45 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division50MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_50 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division55MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_55 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division60MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_60 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division65MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_65 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division70MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_70 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division75MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_75 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division80MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_80 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division85MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_85 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division90MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_90 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileItemWriter<MasterList> division95MasterListFileWriter() {
- FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
- writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_95 )));
- writer.setHeaderCallback(masterListFlatFileHeaderCallback());
- writer.setLineAggregator(masterListFormatterLineAggregator());
- return writer;
- }
- @Bean
- public FlatFileHeaderCallback masterListFlatFileHeaderCallback() {
- return new FlatFileHeaderCallback() {
- public void writeHeader(Writer writer) throws IOException {
- StringBuilder builder = new StringBuilder();
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_LEVEL_ONE + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_LEVEL_TWO + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_CLEARANCE + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_WAS + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_NOW + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PERCENT_OFF + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_BRAND + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PRODUCT + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_OFFER + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_MARKETING_STATEMENT + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_DINKUS + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_WCS_PROMO_ID + FlatFileConstants.OUTPUT_FILE_DELIM); // really promo comp id
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_COMPONENT_ID + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_START_DATE + FlatFileConstants.OUTPUT_FILE_DELIM);
- builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_END_DATE);
- writer.write(builder.toString());
- }
- };
- }
- @Bean
- public FormatterLineAggregator<MasterList> masterListFormatterLineAggregator() {
- FormatterLineAggregator<MasterList> lineAggregator = new FormatterLineAggregator<>();
- lineAggregator.setFormat(
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // l1
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // l2
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // clearance ind
- "%.2f" + FlatFileConstants.OUTPUT_FILE_DELIM + // was
- "%.2f" + FlatFileConstants.OUTPUT_FILE_DELIM + // now
- "%.0f" + FlatFileConstants.OUTPUT_FILE_DELIM + // percent off
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // brand
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // product name
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // offer name
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // marketing statement
- "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // dinkus
- "%d" + FlatFileConstants.OUTPUT_FILE_DELIM + // promo comp id
- "%s"+ FlatFileConstants.OUTPUT_FILE_DELIM + // promo promo comp id
- "%te/%<tm/%<tY %<tT" + FlatFileConstants.OUTPUT_FILE_DELIM + // start date
- "%te/%<tm/%<tY %<tT");
- BeanWrapperFieldExtractor<MasterList> extractor = new BeanWrapperFieldExtractor<MasterList>();
- extractor.setNames(new String[] {
- "l1",
- "l2",
- "clearanceInd",
- "sellingUnitRetail",
- "promoRetail",
- "percentOff",
- "brand",
- "l2Name",
- "promoCompName",
- "marketingStatement",
- "dinkus",
- "promoCompId",
- "promoIdPromoCompId",
- "rpmPromoCompDetailStartDate",
- "rpmPromoCompDetailEndDate"});
- lineAggregator.setFieldExtractor(extractor);
- return lineAggregator;
- }
- }
Add Comment
Please, Sign In to add comment