- java.lang.Object
-
- org.jfree.data.general.AbstractDataset
-
- org.jfree.data.general.AbstractSeriesDataset<S>
-
- org.jfree.data.xy.AbstractXYDataset<S>
-
- org.jfree.data.xy.AbstractIntervalXYDataset
-
- org.jfree.data.time.DynamicTimeSeriesCollection
-
- All Implemented Interfaces:
ObjectInputValidation,Serializable,Cloneable,EventListener,DomainInfo,Dataset,SeriesChangeListener,SeriesDataset,RangeInfo,IntervalXYDataset,XYDataset
public class DynamicTimeSeriesCollection extends AbstractIntervalXYDataset implements IntervalXYDataset, DomainInfo, RangeInfo
A dynamic dataset.Like FastTimeSeriesCollection, this class is a functional replacement for JFreeChart's TimeSeriesCollection _and_ TimeSeries classes. FastTimeSeriesCollection is appropriate for a fixed time range; for real-time applications this subclass adds the ability to append new data and discard the oldest. In this class, the arrays used in FastTimeSeriesCollection become FIFO's. NOTE:As presented here, all data is assumed >= 0, an assumption which is embodied only in methods associated with interface RangeInfo.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classDynamicTimeSeriesCollection.ValueSequenceA wrapper for a fixed array of float values.
-
Field Summary
Fields Modifier and Type Field Description static intENDUseful constant for controlling the x-value returned for a time period.protected inthistoryCountThe history count.static intMIDDLEUseful constant for controlling the x-value returned for a time period.protected RegularTimePeriod[]pointsInTimeStorage for the x-values.static intSTARTUseful constant for controlling the x-value returned for a time period.protected DynamicTimeSeriesCollection.ValueSequence[]valueHistoryAn array for storing the objects that represent each series.protected CalendarworkingCalendarA working calendar (to recycle)
-
Constructor Summary
Constructors Constructor Description DynamicTimeSeriesCollection(int nSeries, int nMoments)Constructs a dataset with capacity for N series, tied to default timezone.DynamicTimeSeriesCollection(int nSeries, int nMoments, TimeZone zone)Constructs an empty dataset, tied to a specific timezone.DynamicTimeSeriesCollection(int nSeries, int nMoments, RegularTimePeriod timeSample)Creates a new dataset.DynamicTimeSeriesCollection(int nSeries, int nMoments, RegularTimePeriod timeSample, TimeZone zone)Creates a new dataset.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddSeries(float[] values, int seriesNumber, Comparable seriesKey)Adds a series to the dataset.voidaddValue(int seriesNumber, int index, float value)Adds a value to a series.RegularTimePeriodadvanceTime()Adjust the array offset as needed when a new time-period is added: Increments the indices "oldestAt" and "newestAt", mod(array length), zeroes the series values at newestAt, returns the new TimePeriod.voidappendData(float[] newData)Appends new data.voidappendData(float[] newData, int insertionIndex, int refresh)Appends data at specified index, for loading up with data from file(s).protected voidfindDomainLimits()Finds the domain limits.protected doublefindMaxValue()Returns the maximum value.protected voidfireSeriesChanged()Sends aSeriesChangeEventto all registered listeners.RangegetDomainBounds(boolean includeInterval)Returns the range of the values in this dataset's domain.doublegetDomainLowerBound(boolean includeInterval)Returns the minimum x-value in the dataset.doublegetDomainUpperBound(boolean includeInterval)Returns the maximum x-value in the dataset.NumbergetEndX(int series, int item)Returns the end x-value.NumbergetEndY(int series, int item)Returns the end y-value.intgetItemCount(int series)Returns the number of items in a series.intgetNewestIndex()Returns the index of the newest data item.RegularTimePeriodgetNewestTime()Returns the newest time.intgetOldestIndex()Returns the index of the oldest data item.RegularTimePeriodgetOldestTime()Returns the oldest time.intgetPosition()Returns the x position type (START, MIDDLE or END).RangegetRangeBounds(boolean includeInterval)Returns the value range.doublegetRangeLowerBound(boolean includeInterval)Returns the minimum range value.doublegetRangeUpperBound(boolean includeInterval)Returns the maximum range value.intgetSeriesCount()Returns the number of series in the collection.ComparablegetSeriesKey(int series)Returns the key for a series.NumbergetStartX(int series, int item)Returns the start x-value.NumbergetStartY(int series, int item)Returns the start y-value.NumbergetX(int series, int item)Returns the x-value.NumbergetY(int series, int item)Returns the y-value.doublegetYValue(int series, int item)Returns the y-value.voidinvalidateRangeInfo()Invalidates the range info.intoffsetFromNewest(int delta)Returns the actual index to a time offset by "delta" from newestAt.intoffsetFromOldest(int delta)??voidsetPosition(int position)Sets the x position type (START, MIDDLE or END).voidsetSeriesKey(int seriesNumber, Comparable key)Sets the name of a series.longsetTimeBase(RegularTimePeriod start)Fill the pointsInTime with times using TimePeriod.next(): Will silently return if the time array was already populated.protected inttranslateGet(int toFetch)Re-map an index, for use in retrieving data.protected intwrapOffset(int protoIndex)??-
Methods inherited from class org.jfree.data.xy.AbstractIntervalXYDataset
getEndXValue, getEndYValue, getStartXValue, getStartYValue
-
Methods inherited from class org.jfree.data.xy.AbstractXYDataset
getDomainOrder, getXValue
-
Methods inherited from class org.jfree.data.general.AbstractSeriesDataset
indexOf, seriesChanged
-
Methods inherited from class org.jfree.data.general.AbstractDataset
addChangeListener, clone, fireDatasetChanged, getNotify, hasListener, notifyListeners, removeChangeListener, setNotify, validateObject
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jfree.data.general.Dataset
addChangeListener, removeChangeListener
-
Methods inherited from interface org.jfree.data.xy.IntervalXYDataset
getEndXValue, getEndYValue, getStartXValue, getStartYValue
-
Methods inherited from interface org.jfree.data.general.SeriesDataset
indexOf
-
Methods inherited from interface org.jfree.data.xy.XYDataset
getDomainOrder, getXValue
-
-
-
-
Field Detail
-
START
public static final int START
Useful constant for controlling the x-value returned for a time period.- See Also:
- Constant Field Values
-
MIDDLE
public static final int MIDDLE
Useful constant for controlling the x-value returned for a time period.- See Also:
- Constant Field Values
-
END
public static final int END
Useful constant for controlling the x-value returned for a time period.- See Also:
- Constant Field Values
-
historyCount
protected int historyCount
The history count.
-
pointsInTime
protected RegularTimePeriod[] pointsInTime
Storage for the x-values.
-
valueHistory
protected DynamicTimeSeriesCollection.ValueSequence[] valueHistory
An array for storing the objects that represent each series.
-
workingCalendar
protected Calendar workingCalendar
A working calendar (to recycle)
-
-
Constructor Detail
-
DynamicTimeSeriesCollection
public DynamicTimeSeriesCollection(int nSeries, int nMoments)
Constructs a dataset with capacity for N series, tied to default timezone.- Parameters:
nSeries- the number of series to be accommodated.nMoments- the number of TimePeriods to be spanned.
-
DynamicTimeSeriesCollection
public DynamicTimeSeriesCollection(int nSeries, int nMoments, TimeZone zone)
Constructs an empty dataset, tied to a specific timezone.- Parameters:
nSeries- the number of series to be accommodatednMoments- the number of TimePeriods to be spannedzone- the timezone.
-
DynamicTimeSeriesCollection
public DynamicTimeSeriesCollection(int nSeries, int nMoments, RegularTimePeriod timeSample)
Creates a new dataset.- Parameters:
nSeries- the number of series.nMoments- the number of items per series.timeSample- a time period sample.
-
DynamicTimeSeriesCollection
public DynamicTimeSeriesCollection(int nSeries, int nMoments, RegularTimePeriod timeSample, TimeZone zone)
Creates a new dataset.- Parameters:
nSeries- the number of series.nMoments- the number of items per series.timeSample- a time period sample.zone- the time zone.
-
-
Method Detail
-
setTimeBase
public long setTimeBase(RegularTimePeriod start)
Fill the pointsInTime with times using TimePeriod.next(): Will silently return if the time array was already populated. Also computes the data cached for later use by methods implementing the DomainInfo interface:- Parameters:
start- the start.- Returns:
- ??.
-
findDomainLimits
protected void findDomainLimits()
Finds the domain limits. Note: this doesn't need to be synchronized because it's called from within another method that already is.
-
getPosition
public int getPosition()
Returns the x position type (START, MIDDLE or END).- Returns:
- The x position type.
-
setPosition
public void setPosition(int position)
Sets the x position type (START, MIDDLE or END).- Parameters:
position- The x position type.
-
addSeries
public void addSeries(float[] values, int seriesNumber, Comparable seriesKey)
Adds a series to the dataset. Only the y-values are supplied, the x-values are specified elsewhere.- Parameters:
values- the y-values.seriesNumber- the series index (zero-based).seriesKey- the series key. Use this as-is during setup only, or add the synchronized keyword around the copy loop.
-
setSeriesKey
public void setSeriesKey(int seriesNumber, Comparable key)
Sets the name of a series. If planning to add values individually.- Parameters:
seriesNumber- the series.key- the new key.
-
addValue
public void addValue(int seriesNumber, int index, float value)
Adds a value to a series.- Parameters:
seriesNumber- the series index.index- ??.value- the value.
-
getSeriesCount
public int getSeriesCount()
Returns the number of series in the collection.- Specified by:
getSeriesCountin interfaceSeriesDataset- Specified by:
getSeriesCountin classAbstractSeriesDataset- Returns:
- The series count.
-
getItemCount
public int getItemCount(int series)
Returns the number of items in a series.For this implementation, all series have the same number of items.
- Specified by:
getItemCountin interfaceXYDataset- Parameters:
series- the series index (zero-based).- Returns:
- The item count.
-
translateGet
protected int translateGet(int toFetch)
Re-map an index, for use in retrieving data.- Parameters:
toFetch- the index.- Returns:
- The translated index.
-
offsetFromNewest
public int offsetFromNewest(int delta)
Returns the actual index to a time offset by "delta" from newestAt.- Parameters:
delta- the delta.- Returns:
- The offset.
-
offsetFromOldest
public int offsetFromOldest(int delta)
??- Parameters:
delta- ??- Returns:
- The offset.
-
wrapOffset
protected int wrapOffset(int protoIndex)
??- Parameters:
protoIndex- the index.- Returns:
- The offset.
-
advanceTime
public RegularTimePeriod advanceTime()
Adjust the array offset as needed when a new time-period is added: Increments the indices "oldestAt" and "newestAt", mod(array length), zeroes the series values at newestAt, returns the new TimePeriod.- Returns:
- The new time period.
-
invalidateRangeInfo
public void invalidateRangeInfo()
Invalidates the range info.
-
findMaxValue
protected double findMaxValue()
Returns the maximum value.- Returns:
- The maximum value.
-
getOldestIndex
public int getOldestIndex()
Returns the index of the oldest data item.- Returns:
- The index.
-
getNewestIndex
public int getNewestIndex()
Returns the index of the newest data item.- Returns:
- The index.
-
appendData
public void appendData(float[] newData)
Appends new data.- Parameters:
newData- the data.
-
appendData
public void appendData(float[] newData, int insertionIndex, int refresh)
Appends data at specified index, for loading up with data from file(s).- Parameters:
newData- the datainsertionIndex- the index value at which to put itrefresh- value of n in "refresh the display on every nth call" (ignored if <= 0 )
-
getNewestTime
public RegularTimePeriod getNewestTime()
Returns the newest time.- Returns:
- The newest time.
-
getOldestTime
public RegularTimePeriod getOldestTime()
Returns the oldest time.- Returns:
- The oldest time.
-
getYValue
public double getYValue(int series, int item)
Returns the y-value.- Specified by:
getYValuein interfaceXYDataset- Overrides:
getYValuein classAbstractXYDataset- Parameters:
series- the series index (zero-based).item- the item index (zero-based).- Returns:
- The value.
-
getStartX
public Number getStartX(int series, int item)
Returns the start x-value.- Specified by:
getStartXin interfaceIntervalXYDataset- Parameters:
series- the series index (zero-based).item- the item index (zero-based).- Returns:
- The value.
-
getEndX
public Number getEndX(int series, int item)
Returns the end x-value.- Specified by:
getEndXin interfaceIntervalXYDataset- Parameters:
series- the series index (zero-based).item- the item index (zero-based).- Returns:
- The value.
-
getStartY
public Number getStartY(int series, int item)
Returns the start y-value.- Specified by:
getStartYin interfaceIntervalXYDataset- Parameters:
series- the series index (zero-based).item- the item index (zero-based).- Returns:
- The value.
-
getEndY
public Number getEndY(int series, int item)
Returns the end y-value.- Specified by:
getEndYin interfaceIntervalXYDataset- Parameters:
series- the series index (zero-based).item- the item index (zero-based).- Returns:
- The value.
-
getSeriesKey
public Comparable getSeriesKey(int series)
Returns the key for a series.- Specified by:
getSeriesKeyin interfaceSeriesDataset- Specified by:
getSeriesKeyin classAbstractSeriesDataset- Parameters:
series- the series index (zero-based).- Returns:
- The key.
-
fireSeriesChanged
protected void fireSeriesChanged()
Sends aSeriesChangeEventto all registered listeners.
-
getDomainLowerBound
public double getDomainLowerBound(boolean includeInterval)
Returns the minimum x-value in the dataset.- Specified by:
getDomainLowerBoundin interfaceDomainInfo- Parameters:
includeInterval- a flag that determines whether or not the x-interval is taken into account.- Returns:
- The minimum value.
-
getDomainUpperBound
public double getDomainUpperBound(boolean includeInterval)
Returns the maximum x-value in the dataset.- Specified by:
getDomainUpperBoundin interfaceDomainInfo- Parameters:
includeInterval- a flag that determines whether or not the x-interval is taken into account.- Returns:
- The maximum value.
-
getDomainBounds
public Range getDomainBounds(boolean includeInterval)
Returns the range of the values in this dataset's domain.- Specified by:
getDomainBoundsin interfaceDomainInfo- Parameters:
includeInterval- a flag that determines whether or not the x-interval is taken into account.- Returns:
- The range.
-
getRangeLowerBound
public double getRangeLowerBound(boolean includeInterval)
Returns the minimum range value.- Specified by:
getRangeLowerBoundin interfaceRangeInfo- Parameters:
includeInterval- a flag that determines whether or not the y-interval is taken into account.- Returns:
- The minimum range value.
-
getRangeUpperBound
public double getRangeUpperBound(boolean includeInterval)
Returns the maximum range value.- Specified by:
getRangeUpperBoundin interfaceRangeInfo- Parameters:
includeInterval- a flag that determines whether or not the y-interval is taken into account.- Returns:
- The maximum range value.
-
getRangeBounds
public Range getRangeBounds(boolean includeInterval)
Returns the value range.- Specified by:
getRangeBoundsin interfaceRangeInfo- Parameters:
includeInterval- a flag that determines whether or not the y-interval is taken into account.- Returns:
- The range.
-
-