public boolean doCheckAndSend() throws JobEmailNotificationException { String jobStatus = jobState.getGenericInformation().get(GENERIC_INFORMATION_KEY_NOTIFICATION_EVENT); List<String> jobStatusList = new ArrayList<>(); if (jobStatus != null) { jobStatusList = Arrays.asList(jobStatus.toLowerCase().split("\\s*,\\s*")); } switch (eventType) { case JOB_CHANGE_PRIORITY: case JOB_IN_ERROR: case JOB_PAUSED: case JOB_PENDING_TO_FINISHED: case JOB_PENDING_TO_RUNNING: case JOB_RESTARTED_FROM_ERROR: case JOB_RESUMED: case JOB_RUNNING_TO_FINISHED: case JOB_SUBMITTED: break; default: logger.trace("Event not in the list of email notification, doing nothing"); return false; } if (!PASchedulerProperties.EMAIL_NOTIFICATIONS_ENABLED.getValueAsBoolean()) { logger.debug("Notification emails disabled, doing nothing"); return false; } if (!jobStatusList.contains(eventType.toString().toLowerCase())) { return false; } try { sender.sender(getTo(), getSubject(), getBody()); return true; } catch (AddressException e) { throw new JobEmailNotificationException("Malformed email address", e); } catch (MessagingException e) { throw new JobEmailNotificationException("Error sending email: " + e.getMessage(), e); } }
private String getSubject() { String jobID = jobState.getId().value(); String event = eventType.toString(); return String.format(SUBJECT_TEMPLATE, jobID, event); }