/* * * Copyright (c) void.fm * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list * of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, this * list of conditions and the following disclaimer in the documentation and/or * other materials provided with the distribution. * * Neither the name void.fm nor the names of its contributors may be * used to endorse or promote products derived from this software without specific * prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * */ package etm.contrib.console.util; import etm.contrib.console.ConsoleRequest; import etm.contrib.console.ConsoleResponse; import etm.contrib.util.ExecutionAggregateComparator; import etm.core.aggregation.Aggregate; import etm.core.monitor.EtmException; import java.io.IOException; import java.util.Arrays; import java.util.Map; /** * Renders a collapsed view with links to detailed * results. * * @author void.fm * @version $Revision$ */ public class CollapsedResultRenderer extends ConsoleRenderer { /** * Constructs a CollapsedResultRenderer that writes results to * the given response. * * @param aRequest The current request * @param aResponse The current respone * @param aComparator A comparator used for sorting results */ public CollapsedResultRenderer(ConsoleRequest aRequest, ConsoleResponse aResponse, ExecutionAggregateComparator aComparator) { super(aRequest, aResponse, aComparator); } public void render(Map points) { Object[] values = points.values().toArray(); try { writeHtmlHead(false); response.write("<!-- Begin results -->"); response.write("<table>\n"); writeTableHeader(); if (points.isEmpty()) { response.write(NO_RESULTS); } else { Arrays.sort(values, comparator); for (int i = 0; i < values.length; i++) { Aggregate point = (Aggregate) values[i]; response.write(" <tr>\n"); response.write(" <td>"); writeName(point); response.write("</td>\n"); response.write(" <td>"); writeMeasurements(point); response.write("</td>\n"); response.write(" <td>"); writeAverage(point); response.write("</td>\n"); response.write(" <td>"); writeMin(point); response.write("</td>\n"); response.write(" <td>"); writeMax(point); response.write("</td>\n"); response.write(" <td>"); writeTotals(point); response.write("</td>\n"); response.write(" </tr>\n"); } } response.write(FOOTER); response.write("</table>\n"); response.write(" </body>\n</html>"); } catch (IOException e) { throw new EtmException("Unable to write to writer: " + e); } } }