/** * Hudson Serenitec plugin * * @author Georges Bossert <gbossert@gmail.com> * @version $Revision: 1.3 $ * @since $Date: 2008/07/16 16:01:24 ${date} * @copyright Universit� de Rennes 1 */ package hudson.plugins.serenitec.util; import hudson.util.StackedAreaRenderer2; import hudson.util.ChartUtil.NumberOnlyBuildLabel; import org.jfree.data.category.CategoryDataset; /** * Renderer that provides direct access to the individual results of a build via * links. The renderer also displays tooltips for each selected build. * <ul> * <li>The tooltip is computed per column (i.e., per build) and shows the total * number of annotations for this build.</li> * <li>The link is also computed per column and links to the results for this * build.</li> * </ul> * * @author Ulli Hafner */ public class ResultAreaRenderer extends StackedAreaRenderer2 { /** Unique identifier of this class. */ private static final long serialVersionUID = -4683951507836348304L; /** Base URL of the graph links. */ private final String url; /** Tooltip provider for the clickable map. */ private final ToolTipBuilder toolTipBuilder; /** * Creates a new instance of <code>ResultAreaRenderer</code>. * * @param url * base URL of the graph links * @param toolTipProvider * tooltip provider for the clickable map */ public ResultAreaRenderer(final String url, final ToolTipProvider toolTipProvider) { toolTipBuilder = new ToolTipBuilder(toolTipProvider); this.url = "/" + url + "/"; } @Override public final String generateURL(final CategoryDataset dataset, final int row, final int column) { return getLabel(dataset, column).build.getNumber() + url; } /** {@inheritDoc} */ @Override public String generateToolTip(final CategoryDataset dataset, final int row, final int column) { int number = 0; for (int index = 0; index < dataset.getRowCount(); index++) { final Number value = dataset.getValue(index, column); if (value != null) { number += value.intValue(); } } return getToolTipBuilder().getTooltip(number); } /** * Returns the Hudson build label at the specified column. * * @param dataset * data set of values * @param column * the column * @return the label of the column */ private NumberOnlyBuildLabel getLabel(final CategoryDataset dataset, final int column) { return ( NumberOnlyBuildLabel ) dataset.getColumnKey(column); } /** * Gets the tool tip builder. * * @return the tool tip builder */ public final ToolTipBuilder getToolTipBuilder() { return toolTipBuilder; } }