package net.sf.jasperreports.charts.fill; import java.util.Date; import net.sf.jasperreports.charts.JRTimeSeries; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExpression; import net.sf.jasperreports.engine.JRHyperlink; import net.sf.jasperreports.engine.JRHyperlinkHelper; import net.sf.jasperreports.engine.JRPrintHyperlink; import net.sf.jasperreports.engine.JRRuntimeException; import net.sf.jasperreports.engine.fill.JRCalculator; import net.sf.jasperreports.engine.fill.JRExpressionEvalException; import net.sf.jasperreports.engine.fill.JRFillExpressionEvaluator; import net.sf.jasperreports.engine.fill.JRFillHyperlinkHelper; import net.sf.jasperreports.engine.fill.JRFillObjectFactory; public class JRFillTimeSeries implements JRTimeSeries { protected JRTimeSeries parent = null; private Comparable series = null; private Date timePeriod = null; private Number value = null; private String label = null; private JRPrintHyperlink itemHyperlink; public JRFillTimeSeries(JRTimeSeries timeSeries, JRFillObjectFactory factory) { factory.put(timeSeries, this); this.parent = timeSeries; } public JRExpression getSeriesExpression() { return this.parent.getSeriesExpression(); } public JRExpression getTimePeriodExpression() { return this.parent.getTimePeriodExpression(); } public JRExpression getValueExpression() { return this.parent.getValueExpression(); } public JRExpression getLabelExpression() { return this.parent.getLabelExpression(); } protected Comparable getSeries() { return this.series; } protected Date getTimePeriod() { return this.timePeriod; } protected Number getValue() { return this.value; } protected String getLabel() { return this.label; } protected void evaluate(JRCalculator calculator) throws JRExpressionEvalException { this.series = (Comparable)calculator.evaluate(getSeriesExpression()); this.timePeriod = (Date)calculator.evaluate(getTimePeriodExpression()); this.value = (Number)calculator.evaluate(getValueExpression()); this.label = (String)calculator.evaluate(getLabelExpression()); if (hasItemHyperlink()) evaluateItemHyperlink(calculator); } protected void evaluateItemHyperlink(JRCalculator calculator) throws JRExpressionEvalException { try { this.itemHyperlink = JRFillHyperlinkHelper.evaluateHyperlink(getItemHyperlink(), (JRFillExpressionEvaluator)calculator, (byte)3); } catch (JRExpressionEvalException e) { throw e; } catch (JRException e) { throw new JRRuntimeException(e); } } public JRHyperlink getItemHyperlink() { return this.parent.getItemHyperlink(); } public boolean hasItemHyperlink() { return !JRHyperlinkHelper.isEmpty(getItemHyperlink()); } public JRPrintHyperlink getPrintItemHyperlink() { return this.itemHyperlink; } public Object clone() { return null; } }