@Override public void run() { log.info("START"); log.info("Executing ViolationTestResultAlertTask.run()..."); try { Map<Long, Message> messages = new HashMap<Long, Message>(); List<VsdAlertRule> list = SchedulerServiceImpl.getInstance() .getAlertRulesByAlertTypeCode(VIOLATION_TEST_RESULT, TASK_TEMPLATE_CODE); setTaskName(TASK_NAME); setRunMultipleTimesInADay(canRunMultipleTimesInADay); List<Date> dates = getTaskDates(); log.info("Printing dates.size() ... " + dates.size()); if (dates != null && dates.size() > 0) { Date startDate = dates.get(0); Date endDate = dates.get(dates.size() - 1); log.info("Printing date range: " + startDate + " --- " + endDate); setTaskStatus(IN_PROGRESS, startDate); if (list != null && list.size() > 0) { log.info("Rules count : " + list.size()); for (VsdAlertRule vsdAlertRule : list) { log.info("vsdAlertRule.getAlertRuleId() ... " + vsdAlertRule.getAlertRuleId()); messages.putAll(generateNotifications(vsdAlertRule, startDate, endDate)); } } setTaskStatus(COMPLETED, endDate); sendNotifications(messages); } } catch (VSDException ve) { log.error(ve.getMessage(), ve); } catch (Exception e) { log.error(e.getMessage(), e); } log.info("END"); }
/** * This method is used to generate the contents of notification (alert/reminder) * * @param VsdAlertRule vsdAlertRule * @param Date startDate * @param Date endDate * @return Map<Long, Message> * @throws VSDException * @throws Exception */ public Map<Long, Message> generateNotifications( VsdAlertRule vsdAlertRule, Date startDate, Date endDate) throws VSDException, Exception { log.info("START"); Map<Long, Message> messages = null; try { if (vsdAlertRule != null && vsdAlertRule.getRuleValue() != null) { String testStatus = vsdAlertRule.getRuleValue(); List<Long> violationStatuses = new ArrayList<Long>(); log.info("Printing test status ... " + testStatus); if (testStatus.equalsIgnoreCase(Constant.TEST_STATUS_ENUM.PASS.toString())) { violationStatuses.add(Constant.VIOLATION_STATUS_CLOSED); } else { violationStatuses.add(Constant.VIOLATION_STATUS_OPEN); violationStatuses.add(Constant.VIOLATION_STATUS_OPEN_OVERDUE); } List<VsdViolation> list = SchedulerServiceImpl.getInstance() .getViolationsTestResultForNotifications( startDate, endDate, violationStatuses, testStatus); log.info("Alerting violation count: " + list.size()); messages = generateNotifications(vsdAlertRule, list, true); } else { throw new VSDException("SR.09"); } } catch (VSDException ve) { log.error(ve.getMessage(), ve); throw ve; } catch (Exception e) { log.error(e.getMessage(), e); throw e; } log.info("END"); return messages; }
/** This method is used to initialize the Time for this task */ public void init() { log.info("START"); try { closeInProgressTasks(TASK_NAME); } catch (VSDException ve) { log.error(ve.getMessage(), ve); } catch (Exception e) { log.error(e.getMessage(), e); } Timer timer = new Timer(); timer.scheduleAtFixedRate( this, getSchedulerStartDateByAddingTime(START_HOUR, START_MINUTES), INTERVAL_TASK_ALERTS_VIOLATION_TEST_RESULT); log.info("END"); }