richieriviere

Untitled

Aug 10th, 2016
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.48 KB | None | 0 0
  1. package com.my.pricing.onlinestore.export.job.common;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.Writer;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Timestamp;
  9. import java.util.List;
  10.  
  11. import javax.sql.DataSource;
  12.  
  13. import org.springframework.batch.core.JobExecution;
  14. import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
  15. import org.springframework.batch.core.configuration.annotation.JobScope;
  16. import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
  17. import org.springframework.batch.core.configuration.annotation.StepScope;
  18. import org.springframework.batch.item.database.JdbcCursorItemReader;
  19. import org.springframework.batch.item.file.FlatFileHeaderCallback;
  20. import org.springframework.batch.item.file.FlatFileItemWriter;
  21. import org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor;
  22. import org.springframework.batch.item.file.transform.FormatterLineAggregator;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.context.annotation.Bean;
  26. import org.springframework.context.annotation.Configuration;
  27. import org.springframework.core.io.FileSystemResource;
  28. import org.springframework.jdbc.core.PreparedStatementSetter;
  29. import org.springframework.jdbc.core.RowMapper;
  30.  
  31. import com.myer.pricing.onlinestore.export.constants.DaoConstants;
  32. import com.myer.pricing.onlinestore.export.constants.ExecutionContextConstants;
  33. import com.myer.pricing.onlinestore.export.constants.FlatFileConstants;
  34. import com.myer.pricing.onlinestore.export.constants.MerchHierarchyConstants;
  35. import com.myer.pricing.onlinestore.export.model.MasterList;
  36. import com.myer.pricing.onlinestore.export.model.PromotionStartDateEndDateGrouping;
  37.  
  38. @Configuration
  39. public class CommonExportFromStagingDbJobConfig {
  40.  
  41. @Autowired
  42. public JobBuilderFactory jobBuilderFactory;
  43.  
  44. @Autowired
  45. public StepBuilderFactory stepBuilderFactory;
  46.  
  47. @Value("${exportMasterListCsv.generateMasterListRows.chunkSize}")
  48. public int chunkSize;
  49.  
  50. @Value("${exportMasterListCsv.generateMasterListRows.masterListSql}")
  51. public String masterListSql;
  52.  
  53. @Autowired
  54. public DataSource onlineStagingDb;
  55.  
  56. @Value("${out.dir}")
  57. public String outDir;
  58.  
  59. @Bean
  60. @JobScope
  61. public JdbcCursorItemReader<MasterList> queryStagingDbReader(
  62. @Value("#{jobExecutionContext['" + ExecutionContextConstants.JOB_EXPORT_STAGING_PROMOTION_START_DATE_END_DATE_GROUPINGS +"']}")
  63. List<PromotionStartDateEndDateGrouping> promotionStartDateEndDateGroupings,
  64. @Value("#{jobExecution}")JobExecution jobExecution) {
  65.  
  66. System.err.println("queryStagingDbReader:");
  67.  
  68. PromotionStartDateEndDateGrouping promotionStartDateEndDateGrouping = promotionStartDateEndDateGroupings.remove(0);
  69. System.err.println("promotionStartDateEndDateGrouping:" + promotionStartDateEndDateGrouping);
  70.  
  71.  
  72. jobExecution
  73. .getExecutionContext()
  74. .put(
  75. ExecutionContextConstants.JOB_EXPORT_STAGING_WORKING_PROMOTION_START_DATE_END_DATE,
  76. promotionStartDateEndDateGrouping);
  77.  
  78. JdbcCursorItemReader<MasterList> reader = new JdbcCursorItemReader<>();
  79.  
  80. reader.setDataSource(onlineStagingDb);
  81. reader.setSql(masterListSql);
  82. reader.setPreparedStatementSetter(
  83. new PreparedStatementSetter() {
  84. public void setValues(PreparedStatement preparedStatement) throws SQLException {
  85. preparedStatement.setDate(1, new java.sql.Date(promotionStartDateEndDateGrouping.getRpmPromoCompDetailStartDate().getTime()));
  86. preparedStatement.setDate(2, new java.sql.Date(promotionStartDateEndDateGrouping.getRpmPromoCompDetailEndDate().getTime()));
  87. }
  88. });
  89.  
  90. reader.setRowMapper(new RowMapper<MasterList>() {
  91. @Override
  92. public MasterList mapRow(ResultSet resultSet, int i) throws SQLException {
  93. MasterList masterList = new MasterList();
  94. masterList.setL1(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_ONE));
  95. masterList.setL2(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_TWO));
  96. masterList.setL2Name(resultSet.getString(DaoConstants.COLUMN_HEADER_LEVEL_TWO_NAME));
  97. masterList.setBrand(resultSet.getString(DaoConstants.COLUMN_HEADER_BRAND));
  98. masterList.setDivisionId(resultSet.getInt(DaoConstants.COLUMN_HEADER_DIVISION_ID));
  99. masterList.setSellingUnitRetail(resultSet.getDouble(DaoConstants.COLUMN_HEADER_SELLING_UNIT_RETAIL));
  100. masterList.setClearanceInd(resultSet.getBoolean(DaoConstants.COLUMN_HEADER_CLEARANCE_IND));
  101. masterList.setPromoRetail(resultSet.getDouble(DaoConstants.COLUMN_HEADER_PROMO_RETAIL));
  102. masterList.setPromoId(resultSet.getInt(DaoConstants.COLUMN_HEADER_PROMO_ID));
  103. masterList.setPromoName(resultSet.getString(DaoConstants.COLUMN_HEADER_PROMO_NAME));
  104. masterList.setPromoCompId(resultSet.getInt(DaoConstants.COLUMN_HEADER_PROMO_COMP_ID));
  105. masterList.setPromoCompName(resultSet.getString(DaoConstants.COLUMN_HEADER_PROMO_COMP_NAME));
  106. masterList.setRpmPromoCompDetailId(resultSet.getInt(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_ID));
  107. masterList.setRpmPromoCompDetailState(resultSet.getString(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_STATE));
  108.  
  109. Timestamp startDateTs = resultSet.getTimestamp(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_START_DATE);
  110. java.util.Date startDate = null;
  111. if (startDateTs != null){
  112. startDate = new java.util.Date(startDateTs.getTime());
  113. }
  114. masterList.setRpmPromoCompDetailStartDate(startDate);
  115.  
  116. Timestamp endDateTs = resultSet.getTimestamp(DaoConstants.COLUMN_HEADER_RPM_PROMO_COMP_DETAIL_END_DATE);
  117. java.util.Date endDate = null;
  118. if (endDateTs != null){
  119. endDate = new java.util.Date(endDateTs.getTime());
  120. }
  121. masterList.setRpmPromoCompDetailEndDate(endDate);
  122.  
  123. return masterList;
  124. }
  125. });
  126. return reader;
  127. }
  128.  
  129. @Bean
  130. public FlatFileItemWriter<MasterList> division10MasterListFileWriter() {
  131. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  132. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_10 )));
  133. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  134. writer.setLineAggregator(masterListFormatterLineAggregator());
  135. return writer;
  136. }
  137.  
  138. @Bean
  139. public FlatFileItemWriter<MasterList> division15MasterListFileWriter() {
  140. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  141. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_15 )));
  142. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  143. writer.setLineAggregator(masterListFormatterLineAggregator());
  144. return writer;
  145. }
  146.  
  147. @Bean
  148. public FlatFileItemWriter<MasterList> division20MasterListFileWriter() {
  149. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  150. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_20 )));
  151. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  152. writer.setLineAggregator(masterListFormatterLineAggregator());
  153. return writer;
  154. }
  155.  
  156. @Bean
  157. public FlatFileItemWriter<MasterList> division25MasterListFileWriter() {
  158. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  159. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_25 )));
  160. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  161. writer.setLineAggregator(masterListFormatterLineAggregator());
  162. return writer;
  163. }
  164.  
  165. @Bean
  166. public FlatFileItemWriter<MasterList> division30MasterListFileWriter() {
  167. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  168. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_30 )));
  169. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  170. writer.setLineAggregator(masterListFormatterLineAggregator());
  171. return writer;
  172. }
  173.  
  174. @Bean
  175. public FlatFileItemWriter<MasterList> division35MasterListFileWriter() {
  176. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  177. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_35 )));
  178. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  179. writer.setLineAggregator(masterListFormatterLineAggregator());
  180. return writer;
  181. }
  182.  
  183. @Bean
  184. public FlatFileItemWriter<MasterList> division40MasterListFileWriter() {
  185. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  186. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_40 )));
  187. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  188. writer.setLineAggregator(masterListFormatterLineAggregator());
  189. return writer;
  190. }
  191.  
  192. @Bean
  193. public FlatFileItemWriter<MasterList> division45MasterListFileWriter() {
  194. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  195. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_45 )));
  196. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  197. writer.setLineAggregator(masterListFormatterLineAggregator());
  198. return writer;
  199. }
  200.  
  201. @Bean
  202. public FlatFileItemWriter<MasterList> division50MasterListFileWriter() {
  203. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  204. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_50 )));
  205. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  206. writer.setLineAggregator(masterListFormatterLineAggregator());
  207. return writer;
  208. }
  209.  
  210. @Bean
  211. public FlatFileItemWriter<MasterList> division55MasterListFileWriter() {
  212. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  213. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_55 )));
  214. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  215. writer.setLineAggregator(masterListFormatterLineAggregator());
  216. return writer;
  217. }
  218.  
  219. @Bean
  220. public FlatFileItemWriter<MasterList> division60MasterListFileWriter() {
  221. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  222. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_60 )));
  223. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  224. writer.setLineAggregator(masterListFormatterLineAggregator());
  225. return writer;
  226. }
  227.  
  228. @Bean
  229. public FlatFileItemWriter<MasterList> division65MasterListFileWriter() {
  230. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  231. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_65 )));
  232. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  233. writer.setLineAggregator(masterListFormatterLineAggregator());
  234. return writer;
  235. }
  236.  
  237. @Bean
  238. public FlatFileItemWriter<MasterList> division70MasterListFileWriter() {
  239. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  240. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_70 )));
  241. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  242. writer.setLineAggregator(masterListFormatterLineAggregator());
  243. return writer;
  244. }
  245.  
  246. @Bean
  247. public FlatFileItemWriter<MasterList> division75MasterListFileWriter() {
  248. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  249. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_75 )));
  250. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  251. writer.setLineAggregator(masterListFormatterLineAggregator());
  252. return writer;
  253. }
  254.  
  255. @Bean
  256. public FlatFileItemWriter<MasterList> division80MasterListFileWriter() {
  257. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  258. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_80 )));
  259. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  260. writer.setLineAggregator(masterListFormatterLineAggregator());
  261. return writer;
  262. }
  263.  
  264. @Bean
  265. public FlatFileItemWriter<MasterList> division85MasterListFileWriter() {
  266. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  267. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_85 )));
  268. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  269. writer.setLineAggregator(masterListFormatterLineAggregator());
  270. return writer;
  271. }
  272.  
  273. @Bean
  274. public FlatFileItemWriter<MasterList> division90MasterListFileWriter() {
  275. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  276. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_90 )));
  277. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  278. writer.setLineAggregator(masterListFormatterLineAggregator());
  279. return writer;
  280. }
  281.  
  282. @Bean
  283. public FlatFileItemWriter<MasterList> division95MasterListFileWriter() {
  284. FlatFileItemWriter<MasterList> writer = new FlatFileItemWriter<>();
  285. writer.setResource(new FileSystemResource(new File(outDir, MerchHierarchyConstants.DIVISION_NO_95 )));
  286. writer.setHeaderCallback(masterListFlatFileHeaderCallback());
  287. writer.setLineAggregator(masterListFormatterLineAggregator());
  288. return writer;
  289. }
  290.  
  291. @Bean
  292. public FlatFileHeaderCallback masterListFlatFileHeaderCallback() {
  293. return new FlatFileHeaderCallback() {
  294.  
  295. public void writeHeader(Writer writer) throws IOException {
  296. StringBuilder builder = new StringBuilder();
  297. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_LEVEL_ONE + FlatFileConstants.OUTPUT_FILE_DELIM);
  298. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_LEVEL_TWO + FlatFileConstants.OUTPUT_FILE_DELIM);
  299. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_CLEARANCE + FlatFileConstants.OUTPUT_FILE_DELIM);
  300. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_WAS + FlatFileConstants.OUTPUT_FILE_DELIM);
  301. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_NOW + FlatFileConstants.OUTPUT_FILE_DELIM);
  302. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PERCENT_OFF + FlatFileConstants.OUTPUT_FILE_DELIM);
  303. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_BRAND + FlatFileConstants.OUTPUT_FILE_DELIM);
  304. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PRODUCT + FlatFileConstants.OUTPUT_FILE_DELIM);
  305. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_OFFER + FlatFileConstants.OUTPUT_FILE_DELIM);
  306. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_MARKETING_STATEMENT + FlatFileConstants.OUTPUT_FILE_DELIM);
  307. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_DINKUS + FlatFileConstants.OUTPUT_FILE_DELIM);
  308. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_WCS_PROMO_ID + FlatFileConstants.OUTPUT_FILE_DELIM); // really promo comp id
  309. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_COMPONENT_ID + FlatFileConstants.OUTPUT_FILE_DELIM);
  310. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_START_DATE + FlatFileConstants.OUTPUT_FILE_DELIM);
  311. builder.append(FlatFileConstants.MSTRLST_COLUMN_HEADER_PROMO_PROMO_END_DATE);
  312. writer.write(builder.toString());
  313. }
  314. };
  315. }
  316.  
  317. @Bean
  318. public FormatterLineAggregator<MasterList> masterListFormatterLineAggregator() {
  319. FormatterLineAggregator<MasterList> lineAggregator = new FormatterLineAggregator<>();
  320. lineAggregator.setFormat(
  321. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // l1
  322. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // l2
  323. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // clearance ind
  324. "%.2f" + FlatFileConstants.OUTPUT_FILE_DELIM + // was
  325. "%.2f" + FlatFileConstants.OUTPUT_FILE_DELIM + // now
  326. "%.0f" + FlatFileConstants.OUTPUT_FILE_DELIM + // percent off
  327. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // brand
  328. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // product name
  329. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // offer name
  330. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // marketing statement
  331. "%s" + FlatFileConstants.OUTPUT_FILE_DELIM + // dinkus
  332. "%d" + FlatFileConstants.OUTPUT_FILE_DELIM + // promo comp id
  333. "%s"+ FlatFileConstants.OUTPUT_FILE_DELIM + // promo promo comp id
  334. "%te/%<tm/%<tY %<tT" + FlatFileConstants.OUTPUT_FILE_DELIM + // start date
  335. "%te/%<tm/%<tY %<tT");
  336.  
  337. BeanWrapperFieldExtractor<MasterList> extractor = new BeanWrapperFieldExtractor<MasterList>();
  338. extractor.setNames(new String[] {
  339. "l1",
  340. "l2",
  341. "clearanceInd",
  342. "sellingUnitRetail",
  343. "promoRetail",
  344. "percentOff",
  345. "brand",
  346. "l2Name",
  347. "promoCompName",
  348. "marketingStatement",
  349. "dinkus",
  350. "promoCompId",
  351. "promoIdPromoCompId",
  352. "rpmPromoCompDetailStartDate",
  353. "rpmPromoCompDetailEndDate"});
  354. lineAggregator.setFieldExtractor(extractor);
  355.  
  356. return lineAggregator;
  357. }
  358.  
  359. }
Add Comment
Please, Sign In to add comment