private void addTimerDetails()

in src/main/java/org/apache/sling/commons/metrics/internal/MetricWebConsolePlugin.java [216:292]


    private void addTimerDetails(PrintWriter pw, SortedMap<String, Timer> timers) {
        if (timers.isEmpty()) {
            return;
        }

        pw.println("<br>");
        pw.println("<div class='table'>");
        pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>Timers</div>");
        pw.println("<table class='nicetable' id='data-timers'>");
        pw.println("<thead>");
        pw.println("<tr>");
        pw.println("<th class='header'>Name</th>");
        pw.println("<th class='header'>Count</th>");
        pw.println("<th class='header'>Mean Rate</th>");
        pw.println("<th class='header'>1 min rate</th>");
        pw.println("<th class='header'>5 mins rate</th>");
        pw.println("<th class='header'>15 mins rate</th>");
        pw.println("<th class='header'>50%</th>");
        pw.println("<th class='header'>Min</th>");
        pw.println("<th class='header'>Max</th>");
        pw.println("<th class='header'>Mean</th>");
        pw.println("<th class='header'>StdDev</th>");
        pw.println("<th class='header'>75%</th>");
        pw.println("<th class='header'>95%</th>");
        pw.println("<th class='header'>98%</th>");
        pw.println("<th class='header'>99%</th>");
        pw.println("<th class='header'>999%</th>");
        pw.println("<th>Rate Unit</th>");
        pw.println("<th>Duration Unit</th>");
        pw.println("</tr>");
        pw.println("</thead>");
        pw.println("<tbody>");

        String rowClass = "odd";
        for (Map.Entry<String, Timer> e : timers.entrySet()) {
            Timer t = e.getValue();
            Snapshot s = t.getSnapshot();
            String name = e.getKey();

            double rateFactor = timeUnit.rateFor(name).toSeconds(1);
            String rateUnit = "events/" + calculateRateUnit(timeUnit.rateFor(name));

            double durationFactor = 1.0 / timeUnit.durationFor(name).toNanos(1);
            String durationUnit = timeUnit.durationFor(name).toString().toLowerCase(Locale.US);

            pw.printf("<tr class='%s ui-state-default'>%n", rowClass);

            pw.printf("<td>%s</td>", name);
            pw.printf("<td>%d</td>", t.getCount());
            pw.printf("<td>%f</td>", t.getMeanRate() * rateFactor);
            pw.printf("<td>%f</td>", t.getOneMinuteRate() * rateFactor);
            pw.printf("<td>%f</td>", t.getFiveMinuteRate() * rateFactor);
            pw.printf("<td>%f</td>", t.getFifteenMinuteRate() * rateFactor);

            pw.printf("<td>%f</td>", s.getMedian() * durationFactor);
            pw.printf("<td>%f</td>", s.getMin() * durationFactor);
            pw.printf("<td>%f</td>", s.getMax() * durationFactor);
            pw.printf("<td>%f</td>", s.getMean() * durationFactor);
            pw.printf("<td>%f</td>", s.getStdDev() * durationFactor);

            pw.printf("<td>%f</td>", s.get75thPercentile() * durationFactor);
            pw.printf("<td>%f</td>", s.get95thPercentile() * durationFactor);
            pw.printf("<td>%f</td>", s.get98thPercentile() * durationFactor);
            pw.printf("<td>%f</td>", s.get99thPercentile() * durationFactor);
            pw.printf("<td>%f</td>", s.get999thPercentile() * durationFactor);

            pw.printf("<td>%s</td>", rateUnit);
            pw.printf("<td>%s</td>", durationUnit);

            pw.println("</tr>");
            rowClass = "odd".equals(rowClass) ? "even" : "odd";
        }

        pw.println("</tbody>");
        pw.println("</table>");
        pw.println("</div>");
    }