org.jfree.data.time

Class DynamicTimeSeriesCollection

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.

Nested Class Summary
protected classDynamicTimeSeriesCollection.ValueSequence
A wrapper for a fixed array of float values.
Field Summary
static intEND
Useful constant for controlling the x-value returned for a time period.
protected inthistoryCount
The history count.
static intMIDDLE
Useful constant for controlling the x-value returned for a time period.
protected RegularTimePeriod[]pointsInTime
Storage for the x-values.
static intSTART
Useful constant for controlling the x-value returned for a time period.
protected DynamicTimeSeriesCollection.ValueSequence[]valueHistory
An array for storing the objects that represent each series.
protected CalendarworkingCalendar
A working calendar (to recycle)
Constructor Summary
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
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 a SeriesChangeEvent to 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)
?

Field Detail

END

public static final int END
Useful constant for controlling the x-value returned for a time period.

historyCount

protected int historyCount
The history count.

MIDDLE

public static final int MIDDLE
Useful constant for controlling the x-value returned for a time period.

pointsInTime

protected RegularTimePeriod[] pointsInTime
Storage for the x-values.

START

public static final int START
Useful constant for controlling the x-value returned for a time period.

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 accommodated nMoments the number of TimePeriods to be spanned zone 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

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.

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.

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.

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 data insertionIndex the index value at which to put it refresh value of n in "refresh the display on every nth call" (ignored if <= 0 )

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.

findMaxValue

protected double findMaxValue()
Returns the maximum value.

Returns: The maximum value.

fireSeriesChanged

protected void fireSeriesChanged()
Sends a SeriesChangeEvent to all registered listeners.

getDomainBounds

public Range getDomainBounds(boolean includeInterval)
Returns the range of the values in this dataset's domain.

Parameters: includeInterval a flag that determines whether or not the x-interval is taken into account.

Returns: The range.

getDomainLowerBound

public double getDomainLowerBound(boolean includeInterval)
Returns the minimum x-value in the dataset.

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.

Parameters: includeInterval a flag that determines whether or not the x-interval is taken into account.

Returns: The maximum value.

getEndX

public Number getEndX(int series, int item)
Returns the end x-value.

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.

Parameters: series the series index (zero-based). item the item index (zero-based).

Returns: The value.

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.

Parameters: series the series index (zero-based).

Returns: The item count.

getNewestIndex

public int getNewestIndex()
Returns the index of the newest data item.

Returns: The index.

getNewestTime

public RegularTimePeriod getNewestTime()
Returns the newest time.

Returns: The newest time.

getOldestIndex

public int getOldestIndex()
Returns the index of the oldest data item.

Returns: The index.

getOldestTime

public RegularTimePeriod getOldestTime()
Returns the oldest time.

Returns: The oldest time.

getPosition

public int getPosition()
Returns the x position type (START, MIDDLE or END).

Returns: The x position type.

getRangeBounds

public Range getRangeBounds(boolean includeInterval)
Returns the value range.

Parameters: includeInterval a flag that determines whether or not the y-interval is taken into account.

Returns: The range.

getRangeLowerBound

public double getRangeLowerBound(boolean includeInterval)
Returns the minimum range value.

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.

Parameters: includeInterval a flag that determines whether or not the y-interval is taken into account.

Returns: The maximum range value.

getSeriesCount

public int getSeriesCount()
Returns the number of series in the collection.

Returns: The series count.

getSeriesKey

public Comparable getSeriesKey(int series)
Returns the key for a series.

Parameters: series the series index (zero-based).

Returns: The key.

getStartX

public Number getStartX(int series, int item)
Returns the start x-value.

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.

Parameters: series the series index (zero-based). item the item index (zero-based).

Returns: The value.

getX

public Number getX(int series, int item)
Returns the x-value.

Parameters: series the series index (zero-based). item the item index (zero-based).

Returns: The value.

getY

public Number getY(int series, int item)
Returns the y-value.

Parameters: series the series index (zero-based). item the item index (zero-based).

Returns: The value.

getYValue

public double getYValue(int series, int item)
Returns the y-value.

Parameters: series the series index (zero-based). item the item index (zero-based).

Returns: The value.

invalidateRangeInfo

public void invalidateRangeInfo()
Invalidates the range info.

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.

setPosition

public void setPosition(int position)
Sets the x position type (START, MIDDLE or END).

Parameters: position The x position type.

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.

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: ??.

translateGet

protected int translateGet(int toFetch)
Re-map an index, for use in retrieving data.

Parameters: toFetch the index.

Returns: The translated index.

wrapOffset

protected int wrapOffset(int protoIndex)
??

Parameters: protoIndex the index.

Returns: The offset.