Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. package com.cerner.careaware.service.collector;
  2.  
  3. import static org.junit.Assert.assertEquals;
  4. import static org.junit.Assert.assertNotNull;
  5.  
  6. import java.sql.Date;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12.  
  13. import org.junit.Test;
  14. import org.springframework.jdbc.core.RowMapper;
  15. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;
  16.  
  17. import com.cerner.careaware.analytics.BaseDbTest4;
  18.  
  19. /**
  20. * This test class verifies the number of rows deleted via purge operation.
  21. */
  22. public class EventPurgeDaoIT extends BaseDbTest4 {
  23. private static final String dbConnection = "jdbc:oracle:thin:@iphddev01:1521:dunv1";
  24. private static final String dbUsername = "caal_junit";
  25. private static final String dbPassword = "caal_junit";
  26. private static final String tableName = "CA_ERR_AL_EVENT";
  27. private static final String qualifierDateField = "LAST_PROCESSED_DTTM";
  28. private static final int batchSize = 10;
  29. private static final int bufferHours = 24 * 3;
  30. private static final String jdbcDriver = "oracle.jdbc.driver.OracleDriver";
  31. private final static String jobTable = "CA_JOB_STATUS";
  32. private final static String jobField = "LAST_PROCESSED_POINT";
  33. private final static String jobId = "com.cerner.careaware.analytics.events.event.EventProcessingJob";
  34.  
  35. @Test
  36. public void countDeletedRowsFromStagingTest() throws SQLException {
  37.  
  38. Map<String, Integer> map = queryDB().get(0);
  39. assertNotNull(map);
  40. int rowCount = map.get("rowCount");
  41. System.out.println("Number of rows to be deleted:=" + rowCount);
  42. int deleteCount = EventPurgeDao.purge(jdbcDriver, dbConnection, dbUsername, dbPassword, tableName, qualifierDateField, batchSize, bufferHours);
  43. System.out.println("Number of rows actually deleted:=" + deleteCount);
  44. assertEquals(rowCount, deleteCount);
  45. }
  46.  
  47. public List<Map<String, Integer>> queryDB() {
  48. NamedParameterJdbcDaoSupport jdbc = new NamedParameterJdbcDaoSupport();
  49. jdbc.setDataSource(cfg.getDaoContext().dataSource());
  50. String jobStatusQuery = "select DATE '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * " + jobField + " AS job_date from " + jobTable + " where JOB_ID = '" + jobId + "'";
  51. System.out.println(jobStatusQuery);
  52. RowMapper<Map<String, Object>> jobDateRowMapper = new RowMapper<Map<String, Object>>() {
  53.  
  54. @Override
  55. public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  56.  
  57. Map<String, Object> jobDateMap = new HashMap<String, Object>();
  58. jobDateMap.put("job_date", rs.getDate("job_date"));
  59. return jobDateMap;
  60. }
  61. };
  62. Date jobDate = (Date) ((Map<String, Object>) jdbc.getNamedParameterJdbcTemplate().query(jobStatusQuery, jobDateRowMapper).get(0)).get("job_date");
  63. System.out.println(jobDate);
  64.  
  65. if (jobDate != null) {
  66. String countQuery = "select count(*) as rowCount FROM " + tableName + " where To_Date(To_Char(" + qualifierDateField + ",'DDMMYYYY'),'DD-MM-YY')" + "<= To_Date('"
  67. + jobDate + "','YYYY-MM-DD') - interval '" + bufferHours + "' hour";
  68. RowMapper<Map<String, Integer>> countRowMapper = new RowMapper<Map<String, Integer>>() {
  69.  
  70. @Override
  71. public Map<String, Integer> mapRow(ResultSet rs, int rowNum) throws SQLException {
  72.  
  73. Map<String, Integer> countMap = new HashMap<String, Integer>();
  74. countMap.put("rowCount", rs.getInt("rowCount"));
  75. return countMap;
  76. }
  77. };
  78. return jdbc.getNamedParameterJdbcTemplate().query(countQuery, countRowMapper);
  79. }
  80. return null;
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement