package net.sf.jasperreports.charts.util; import java.util.Map; import net.sf.jasperreports.engine.JRPrintHyperlink; import org.jfree.chart.entity.ChartEntity; import org.jfree.chart.entity.XYItemEntity; import org.jfree.data.time.RegularTimePeriod; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; public class TimeSeriesChartHyperlinkProvider implements ChartHyperlinkProvider { private static final long serialVersionUID = 10200L; private Map itemHyperlinks; public TimeSeriesChartHyperlinkProvider(Map itemHyperlinks) { this.itemHyperlinks = itemHyperlinks; } public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { JRPrintHyperlink printHyperlink = null; if (hasHyperlinks() && entity instanceof XYItemEntity) { XYItemEntity itemEntity = (XYItemEntity)entity; TimeSeriesCollection dataset = (TimeSeriesCollection)itemEntity.getDataset(); TimeSeries series = dataset.getSeries(itemEntity.getSeriesIndex()); Map serieHyperlinks = (Map)this.itemHyperlinks.get(series.getKey()); if (serieHyperlinks != null) { RegularTimePeriod timePeriod = series.getTimePeriod(itemEntity.getItem()); printHyperlink = (JRPrintHyperlink)serieHyperlinks.get(timePeriod); } } return printHyperlink; } public boolean hasHyperlinks() { return (this.itemHyperlinks != null && this.itemHyperlinks.size() > 0); } }