protected void processGetRequest(HttpServletRequest request, HttpServletResponse response) {

    if ((request == null) || (response == null)) {
      return;
    }

    response.setContentType("text/html");
    PrintWriter out = null;

    String name = request.getParameter("Name");
    boolean excludeNavbar =
        StringUtilities.isStringValueBooleanTrue(request.getParameter("ExcludeNavbar"));
    String notificationGroup_AlertAssociations =
        getNotificationGroup_AlertAssociations(name, excludeNavbar);

    try {
      StringBuilder htmlBuilder = new StringBuilder();

      StatsAggHtmlFramework statsAggHtmlFramework = new StatsAggHtmlFramework();
      String htmlHeader = statsAggHtmlFramework.createHtmlHeader("StatsAgg - " + PAGE_NAME, "");

      String htmlBody =
          statsAggHtmlFramework.createHtmlBody(
              "<div id=\"page-content-wrapper\">\n"
                  + "<!-- Keep all page content within the page-content inset div! -->\n"
                  + "  <div class=\"page-content inset statsagg_page_content_font\">\n"
                  + "    <div class=\"content-header\"> \n"
                  + "      <div class=\"pull-left content-header-h2-min-width-statsagg\"> <h2> "
                  + PAGE_NAME
                  + " </h2> </div>\n"
                  + "    </div> "
                  + "    <div class=\"statsagg_force_word_wrap\">"
                  + notificationGroup_AlertAssociations
                  + "    </div>\n"
                  + "  </div>\n"
                  + "</div>\n",
              excludeNavbar);

      htmlBuilder
          .append("<!DOCTYPE html>\n<html>\n")
          .append(htmlHeader)
          .append(htmlBody)
          .append("</html>");

      Document htmlDocument = Jsoup.parse(htmlBuilder.toString());
      String htmlFormatted = htmlDocument.toString();
      out = response.getWriter();
      out.println(htmlFormatted);
    } catch (Exception e) {
      logger.error(e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
    } finally {
      if (out != null) {
        out.close();
      }
    }
  }
Exemplo n.º 2
0
  private String buildNotificationGroupsHtml() {

    StringBuilder html = new StringBuilder();

    StatsAggHtmlFramework statsAggHtmlFramework = new StatsAggHtmlFramework();
    String htmlHeader = statsAggHtmlFramework.createHtmlHeader("StatsAgg - " + PAGE_NAME, "");

    StringBuilder htmlBodyStringBuilder = new StringBuilder();
    htmlBodyStringBuilder.append(
        "<div id=\"page-content-wrapper\">\n"
            + "<!-- Keep all page content within the page-content inset div! -->\n"
            + "<div class=\"page-content inset statsagg_page_content_font\">\n"
            + "  <div class=\"content-header\"> \n"
            + "    <div class=\"pull-left content-header-h2-min-width-statsagg\"> <h2> "
            + PAGE_NAME
            + " </h2> </div>\n"
            + "    <div class=\"pull-right \">\n"
            + "     <a href=\"CreateNotificationGroup\" class=\"btn btn-primary statsagg_page_content_font\">Create New Notification Group <i class=\"fa fa-long-arrow-right\"></i></a> \n"
            + "    </div>"
            + "  </div>"
            + "  <table id=\"NotificationGroupsTable\" style=\"display:none\" class=\"table table-bordered table-hover \">\n"
            + "    <thead>\n"
            + "      <tr>\n"
            + "        <th>Notification Group Name</th>\n"
            + "        <th>Email addresses</th>\n"
            + "        <th>Operations</th>\n"
            + "      </tr>\n"
            + "    </thead>\n"
            + "    <tbody>\n");

    AlertsDao alertsDao = new AlertsDao();
    Set<Integer> notificationGroupIdsAssociatedWithAlerts =
        alertsDao.getAllDistinctNotificationGroupIds();
    NotificationGroupsDao notificationGroupsDao = new NotificationGroupsDao();
    List<NotificationGroup> notificationGroups =
        notificationGroupsDao.getAllDatabaseObjectsInTable();

    for (NotificationGroup notificationGroup : notificationGroups) {

      String notificationGroupDetails =
          "<a href=\"NotificationGroupDetails?Name="
              + StatsAggHtmlFramework.urlEncode(notificationGroup.getName())
              + "\">"
              + StatsAggHtmlFramework.htmlEncode(notificationGroup.getName())
              + "</a>";

      StringBuilder emailAddressesOutput = new StringBuilder();
      String[] emailAddresses = StringUtils.split(notificationGroup.getEmailAddresses(), ",");
      if ((emailAddresses != null) && (emailAddresses.length != 0)) {
        for (int i = 0; i < emailAddresses.length; i++) {
          String trimmedEmailAddress = emailAddresses[i].trim();
          emailAddressesOutput.append(trimmedEmailAddress);
          if ((i + 1) != emailAddresses.length) emailAddressesOutput.append(", ");
        }
      }

      String alter =
          "<a href=\"CreateNotificationGroup?Operation=Alter&amp;Name="
              + StatsAggHtmlFramework.urlEncode(notificationGroup.getName())
              + "\">alter</a>";

      List<KeyValue> cloneKeysAndValues = new ArrayList<>();
      cloneKeysAndValues.add(new KeyValue("Operation", "Clone"));
      cloneKeysAndValues.add(
          new KeyValue("Name", Encode.forHtmlAttribute(notificationGroup.getName())));
      String clone =
          StatsAggHtmlFramework.buildJavaScriptPostLink(
              "Clone_" + notificationGroup.getName(),
              "NotificationGroups",
              "clone",
              cloneKeysAndValues);

      List<KeyValue> testKeysAndValues = new ArrayList<>();
      testKeysAndValues.add(new KeyValue("Operation", "Test"));
      testKeysAndValues.add(
          new KeyValue("Name", Encode.forHtmlAttribute(notificationGroup.getName())));
      String test =
          StatsAggHtmlFramework.buildJavaScriptPostLink(
              "Test_" + notificationGroup.getName(),
              "NotificationGroups",
              "test",
              testKeysAndValues,
              true,
              "Are you sure you want to send a test email alert to \\'"
                  + Encode.forJavaScript(notificationGroup.getName())
                  + "\\'?");

      List<KeyValue> removeKeysAndValues = new ArrayList<>();
      removeKeysAndValues.add(new KeyValue("Operation", "Remove"));
      removeKeysAndValues.add(
          new KeyValue("Name", Encode.forHtmlAttribute(notificationGroup.getName())));
      String remove =
          StatsAggHtmlFramework.buildJavaScriptPostLink(
              "Remove_" + notificationGroup.getName(),
              "NotificationGroups",
              "remove",
              removeKeysAndValues,
              true,
              "Are you sure you want to remove this notification group?");

      htmlBodyStringBuilder
          .append("<tr>\n")
          .append("<td class=\"statsagg_force_word_break\">")
          .append(notificationGroupDetails)
          .append("</td>\n")
          .append("<td class=\"statsagg_force_word_break\">")
          .append(StatsAggHtmlFramework.htmlEncode(emailAddressesOutput.toString()))
          .append("</td>\n")
          .append("<td>")
          .append(alter)
          .append(", ")
          .append(clone)
          .append(", ")
          .append(test);

      if (notificationGroupIdsAssociatedWithAlerts == null)
        htmlBodyStringBuilder.append(", ").append(remove);
      else if (!notificationGroupIdsAssociatedWithAlerts.contains(notificationGroup.getId()))
        htmlBodyStringBuilder.append(", ").append(remove);

      htmlBodyStringBuilder.append("</td>\n").append("</tr>\n");
    }

    htmlBodyStringBuilder.append(
        ""
            + "</tbody>\n"
            + "<tfoot> \n"
            + "  <tr>\n"
            + "    <th></th>\n"
            + "    <th></th>\n"
            + "    <th></th>\n"
            + "  </tr>\n"
            + "</tfoot>"
            + "</table>\n"
            + "</div>\n"
            + "</div>\n");

    String htmlBody = (statsAggHtmlFramework.createHtmlBody(htmlBodyStringBuilder.toString()));

    html.append("" + "<!DOCTYPE html>\n" + "<html>\n")
        .append(htmlHeader)
        .append(htmlBody)
        .append("</html>");

    return html.toString();
  }