diff options
Diffstat (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java')
-rw-r--r-- | ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java | 263 |
1 files changed, 132 insertions, 131 deletions
diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java index 8b9aabc2..3c871d87 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/scheduler/SendNotifications.java @@ -38,21 +38,20 @@ package org.onap.portalsdk.analytics.scheduler; import java.math.BigDecimal; -import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; - import org.onap.portalsdk.analytics.error.RaptorException; import org.onap.portalsdk.analytics.error.ReportSQLException; import org.onap.portalsdk.analytics.scheduler.SchedulerUtil.Executor; import org.onap.portalsdk.analytics.system.Globals; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; public class SendNotifications { - + + private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SendNotifications.class); SchedulerUtil schedulerUtil; public SendEmail sendEmail; @@ -63,7 +62,6 @@ public class SendNotifications { init(); } - public void deInit() throws SQLException { schedulerUtil.closeConnection(); } @@ -71,133 +69,136 @@ public class SendNotifications { public void init() throws SQLException, ReportSQLException { schedulerUtil.init(); } - - public void send_notification(String p_mail_server, String p_sender, String p_system_name, String p_system_url, int connectionTimeout) throws RaptorException, Exception { - - System.out.println(p_mail_server + " " + p_sender + " " + p_system_name + " " + p_system_url); - int p_time_interval = Globals.getSchedulerInterval(); - int v_num_recs = 0; - String v_gen_key; - BigDecimal v_id = null; - String v_url; - String v_r_action = "report.download.pdf"; - String v_email_msg; - String v_formfields; - // String error_m; - // int transfer_timeout_limit = 1800; - // boolean v_attach_email_yn = true; - int v_schedule_id; - Date v_touch_date; - // Exception for_rec; - - Connection conn = schedulerUtil.getConnection(); - Statement stat = conn.createStatement(); - - String CNotificationsql = - /* - "SELECT x.rep_id, x.schedule_id, x.conditional_yn, x.condition_large_sql, x.notify_type, x.max_row, x.initial_formfields, x.processed_formfields, r.title, x.user_id " - + "FROM (" - + "SELECT rs.rep_id, rs.schedule_id, rs.sched_user_id user_id, rs.conditional_yn, rs.condition_large_sql, " - + "rs.notify_type, rs.max_row, rs.initial_formfields, rs.processed_formfields " - + "FROM cr_report_schedule rs " - + "WHERE rs.enabled_yn='Y' " - + "AND rs.start_" - + "date <= sysdate " - + "AND (rs.end_date >= sysdate or rs.end_date is null ) " - + "AND rs.run_date IS NOT NULL " - + ") x, cr_report r " - + "WHERE x.rep_id = r.rep_id "; - */ - - Globals.getAvailableSchedules().replace("[currentDate]", Globals.getCurrentDateString()); - - - ResultSet rs = stat.executeQuery(CNotificationsql); - - while (rs.next()) { - - v_schedule_id = rs.getInt("schedule_id"); - int offset = get_report_sched_offset(rs.getInt("rep_id"), v_schedule_id); - - if(offset >= p_time_interval) continue; - - - v_touch_date = (Date) schedulerUtil.getSingleResult("select touch_date from cr_report_email_sent_log where schedule_id = " + v_schedule_id + " and log_id = (select max(log_id) from cr_report_email_sent_log where schedule_id = " + v_schedule_id + ")", "touch_date"); - if (v_touch_date != null) { - if (Math.abs(System.currentTimeMillis() - v_touch_date.getTime()) /1000 < (p_time_interval - 1)) { - return; - } - } - - if ("Y".equals(rs.getString("conditional_yn"))) { - v_num_recs = (Integer) schedulerUtil.getSingleResult("select count(*) count from (" + rs.getString("condition_large_sql") + " )", "count"); - } - - if (v_num_recs > 0 || "N".equals(rs.getString("conditional_yn"))) { - - v_gen_key = ("Z" + UUID.randomUUID()).toString().substring(0,24); // 25 character string - Object sequenceId = schedulerUtil.getSingleResult(Globals.getSequenceNextVal().replace("[sequenceName]", "seq_email_sent_log_id"), "id"); - - if(sequenceId instanceof Long) - v_id = new BigDecimal((Long)sequenceId); - else if(sequenceId instanceof BigDecimal) - v_id = (BigDecimal)sequenceId; - - schedulerUtil.insertOrUpdate("insert into cr_report_email_sent_log (log_id, gen_key, schedule_id, rep_id, user_id, touch_date) values (" + v_id + ",'" + v_gen_key + "'," + rs.getInt("schedule_id") + "," + rs.getInt("rep_id") + "," + rs.getInt("user_id") + ", " + Globals.getCurrentDateString() + " )"); - - int notify_type = rs.getInt("notify_type"); - if (notify_type == 4) - v_r_action = "report.download"; - else if (notify_type == 2) - v_r_action = "report.download.pdf"; - else if (notify_type == 3) - v_r_action = "report.csv.download"; - else if (notify_type == 5) - v_r_action = "report.download.excel2007"; - else if (notify_type == 6) - v_r_action = "download.all"; - - if (rs.getObject("processed_formfields") != null) - v_formfields = modify_formfields(v_schedule_id, rs.getString("processed_formFields")); - else - v_formfields = strip_formfields(v_schedule_id, rs.getString("initial_formfields")); - - v_url = p_system_url + "&r_action=" + v_r_action + "&log_id=" + v_id + "&user_id=" + rs.getString("user_id") + "&pdfAttachmentKey=" + v_gen_key + "&download_limit=" + rs.getInt("max_row") + v_formfields; - - boolean v_attach_email_yn = shouldSendAttachmentInEmail(v_schedule_id); - - v_email_msg = "<html><body><p><b><u><i>" + p_system_name + " System Notification</i></u></b></p>" + "<p>Report <b>" + rs.getString("title") + "</b> is available for viewing.</p><p>You can view the report if it is attached. </br>" - + "If it is not attached, or you have problem to open it, you can log into Business Direct and run the report.</p>" + "</body></html>"; - - if (rs.getInt("notify_type") != 6) { - - sendEmail.sendEmail(p_mail_server, p_sender, p_system_name + " System Notification: Report " + rs.getString("title") + " generated", v_email_msg, v_url, rs.getInt("notify_type"), v_schedule_id, p_time_interval, v_attach_email_yn,connectionTimeout); - - } else { - - // may not necessary - schedulerUtil.insertOrUpdate("insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + v_schedule_id + ",'" + v_url + "'," + "'Success: http request began.', " + Globals.getCurrentDateString() + " )"); - schedulerUtil.insertOrUpdate("insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + v_schedule_id + ",'" + v_url + "'," + "'Success: http response recieved. Code resp.status_code '' desc '' resp.reason_phrase', " + Globals.getCurrentDateString() + " )"); - - } - - schedulerUtil.insertOrUpdate("update cr_report_schedule set run_date = " + Globals.getCurrentDateString() +" where schedule_id=" + v_schedule_id); - - schedulerUtil.insertOrUpdate("update cr_report_email_sent_log set sent_date= " + Globals.getCurrentDateString() +" , access_flag='N' where log_id=" + v_id); - schedulerUtil.insertOrUpdate("insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + v_schedule_id + ",'" + v_url + "','Success: Email Sent', " + Globals.getCurrentDateString() + " )"); - - } - - } - - if(rs!=null) - rs.close(); - if(stat!=null) - stat.close(); - //conn.close(); - - } + public void send_notification(final String p_mail_server, final String p_sender, final String p_system_name, + final String p_system_url, final int connectionTimeout) throws RaptorException, Exception { + + logger.info(p_mail_server + " " + p_sender + " " + p_system_name + " " + p_system_url); + final int p_time_interval = Globals.getSchedulerInterval(); + int v_num_recs = 0; + BigDecimal v_id = null; + String v_r_action = "report.download.pdf"; + + final String CNotificationsql = Globals.getAvailableSchedules() + .replace("[currentDate]", Globals.getCurrentDateString()); + + try (final ResultSet rs = schedulerUtil.getConnection().createStatement().executeQuery(CNotificationsql);) { + while (rs.next()) { + final int v_schedule_id = rs.getInt("schedule_id"); + final int offset = get_report_sched_offset(rs.getInt("rep_id"), v_schedule_id); + + if (offset >= p_time_interval) { + continue; + } + + final Date v_touch_date = (Date) schedulerUtil.getSingleResult( + "select touch_date from cr_report_email_sent_log where schedule_id = " + v_schedule_id + + " and log_id = (select max(log_id) from cr_report_email_sent_log where schedule_id = " + + v_schedule_id + ")", "touch_date"); + if (v_touch_date != null) { + if (Math.abs(System.currentTimeMillis() - v_touch_date.getTime()) / 1000 < (p_time_interval - 1)) { + return; + } + } + + if ("Y".equals(rs.getString("conditional_yn"))) { + v_num_recs = (Integer) schedulerUtil + .getSingleResult("select count(*) count from (" + rs.getString("condition_large_sql") + " )", + "count"); + } + + if (v_num_recs > 0 || "N".equals(rs.getString("conditional_yn"))) { + final String v_gen_key = ("Z" + UUID.randomUUID()).toString() + .substring(0, 24); // 25 character string + final Object sequenceId = + schedulerUtil.getSingleResult( + Globals.getSequenceNextVal().replace("[sequenceName]", "seq_email_sent_log_id"), "id"); + + if (sequenceId instanceof Long) { + v_id = new BigDecimal((Long) sequenceId); + } else if (sequenceId instanceof BigDecimal) { + v_id = (BigDecimal) sequenceId; + } + + schedulerUtil.insertOrUpdate( + "insert into cr_report_email_sent_log (log_id, gen_key, schedule_id, rep_id, user_id, touch_date) values (" + + v_id + ",'" + v_gen_key + "'," + rs.getInt("schedule_id") + "," + rs.getInt("rep_id") + + "," + + rs.getInt("user_id") + ", " + Globals.getCurrentDateString() + " )"); + + final int notify_type = rs.getInt("notify_type"); + if (notify_type == 4) { + v_r_action = "report.download"; + } else if (notify_type == 2) { + v_r_action = "report.download.pdf"; + } else if (notify_type == 3) { + v_r_action = "report.csv.download"; + } else if (notify_type == 5) { + v_r_action = "report.download.excel2007"; + } else if (notify_type == 6) { + v_r_action = "download.all"; + } + + final String v_formfields; + if (rs.getObject("processed_formfields") != null) { + v_formfields = modify_formfields(v_schedule_id, rs.getString("processed_formFields")); + } else { + v_formfields = strip_formfields(v_schedule_id, rs.getString("initial_formfields")); + } + + final String v_url = + p_system_url + "&r_action=" + v_r_action + "&log_id=" + v_id + "&user_id=" + rs + .getString("user_id") + + "&pdfAttachmentKey=" + v_gen_key + "&download_limit=" + rs.getInt("max_row") + + v_formfields; + + final boolean v_attach_email_yn = shouldSendAttachmentInEmail(v_schedule_id); + + final String v_email_msg = + "<html><body><p><b><u><i>" + p_system_name + " System Notification</i></u></b></p>" + + "<p>Report <b>" + rs.getString("title") + + "</b> is available for viewing.</p><p>You can view the report if it is attached. </br>" + + "If it is not attached, or you have problem to open it, you can log into Business Direct and run the report.</p>" + + "</body></html>"; + + if (rs.getInt("notify_type") != 6) { + sendEmail.sendEmail(p_mail_server, p_sender, + p_system_name + " System Notification: Report " + rs.getString("title") + " generated", + v_email_msg, v_url, rs.getInt("notify_type"), v_schedule_id, p_time_interval, + v_attach_email_yn, + connectionTimeout); + + } else { + // may not necessary + schedulerUtil.insertOrUpdate( + "insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + + v_schedule_id + ",'" + v_url + "'," + "'Success: http request began.', " + Globals + .getCurrentDateString() + " )"); + schedulerUtil.insertOrUpdate( + "insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + + v_schedule_id + ",'" + v_url + "'," + + "'Success: http response recieved. Code resp.status_code '' desc '' resp.reason_phrase', " + + Globals.getCurrentDateString() + " )"); + } + + schedulerUtil.insertOrUpdate( + "update cr_report_schedule set run_date = " + Globals.getCurrentDateString() + + " where schedule_id=" + + v_schedule_id); + + schedulerUtil.insertOrUpdate( + "update cr_report_email_sent_log set sent_date= " + Globals.getCurrentDateString() + + " , access_flag='N' where log_id=" + v_id); + schedulerUtil.insertOrUpdate( + "insert into cr_schedule_activity_log (SCHEDULE_ID, url, notes, run_time) values (" + + v_schedule_id + + ",'" + v_url + "','Success: Email Sent', " + Globals.getCurrentDateString() + " )"); + } + } + } catch (final SQLException e) { + logger.warn("Failed to open connection", e); + } + } private boolean shouldSendAttachmentInEmail(int v_schedule_id) throws SQLException, ReportSQLException { |