public enum MonitoringType { ADHOC (ADHOC_TYPE, MONITORING_ADHOC_TEMPLATE, MONITORING_ADHOC_SUBJECT ), SCHEDULER (SCHEDULER_TYPE, MONITORING_ALERT_TEMPLATE, MONITORING_ALERT_SUBJECT), LESS_PRS (LESS_PRS_TYPE, MONITORING_LESS_PRS_TEMPLATE, MONITORING_DAILY_ALERT_SUBJECT); private final String monitorType; private final String emailTemplate; private final String emailSubject; MonitoringType(String monitorType, String emailTemplate, String emailSubject) { this.monitorType = monitorType; this.emailTemplate = emailTemplate; this.emailSubject = emailSubject; } public String getMonitorType() { return monitorType; } public String getEmailTemplate() { return emailTemplate; } public String getEmailSubject() { return emailSubject; } public static MonitoringType fromMonitorType(String monitorType) { if (monitorType == null || monitorType.isEmpty() || monitorType.isBlank()) { throw new InvalidMonitoringType(ExceptionConstant.INVALID_MONITORING_TYPE); } for (MonitoringType monitoringEmailType : MonitoringType.values()) { if (monitoringEmailType.getMonitorType().equals(monitorType)) { return monitoringEmailType; } } throw new InvalidMonitoringType(ExceptionConstant.INVALID_MONITORING_TYPE); } }