package net.sf.jasperreports.charts.base; import net.sf.jasperreports.charts.JRTimeSeries; import net.sf.jasperreports.charts.JRTimeSeriesDataset; import net.sf.jasperreports.engine.JRChartDataset; import net.sf.jasperreports.engine.JRExpressionCollector; import net.sf.jasperreports.engine.base.JRBaseChartDataset; import net.sf.jasperreports.engine.base.JRBaseObjectFactory; import net.sf.jasperreports.engine.design.JRVerifier; import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; public class JRBaseTimeSeriesDataset extends JRBaseChartDataset implements JRTimeSeriesDataset, JRChangeEventsSupport { private static final long serialVersionUID = 10200L; public static final String PROPERTY_TIME_PERIOD = "timePeriod"; private JRTimeSeries[] timeSeries = null; private Class timePeriod; private transient JRPropertyChangeSupport eventSupport; protected JRBaseTimeSeriesDataset(JRTimeSeriesDataset dataset) { super((JRChartDataset)dataset); } public JRBaseTimeSeriesDataset(JRTimeSeriesDataset dataset, JRBaseObjectFactory factory) { super((JRChartDataset)dataset, factory); this.timePeriod = dataset.getTimePeriod(); JRTimeSeries[] srcTimeSeries = dataset.getSeries(); if (srcTimeSeries != null && srcTimeSeries.length > 0) { this.timeSeries = new JRTimeSeries[srcTimeSeries.length]; for (int i = 0; i < this.timeSeries.length; i++) this.timeSeries[i] = factory.getTimeSeries(srcTimeSeries[i]); } } public JRTimeSeries[] getSeries() { return this.timeSeries; } public Class getTimePeriod() { return this.timePeriod; } public void setTimePeriod(Class timePeriod) { Object old = this.timePeriod; this.timePeriod = timePeriod; getEventSupport().firePropertyChange("timePeriod", old, this.timePeriod); } public byte getDatasetType() { return 6; } public void collectExpressions(JRExpressionCollector collector) { collector.collect(this); } public void validate(JRVerifier verifier) { verifier.verify(this); } public Object clone() { JRBaseTimeSeriesDataset clone = (JRBaseTimeSeriesDataset)super.clone(); if (this.timeSeries != null) { clone.timeSeries = new JRTimeSeries[this.timeSeries.length]; for (int i = 0; i < this.timeSeries.length; i++) this.timeSeries[i] = (JRTimeSeries)this.timeSeries[i].clone(); } return clone; } public JRPropertyChangeSupport getEventSupport() { synchronized (this) { if (this.eventSupport == null) this.eventSupport = new JRPropertyChangeSupport(this); } return this.eventSupport; } }