Header
And More


org.jfree.data.time
Class DynamicTimeSeriesCollection

java.lang.Object
  extended by org.jfree.data.general.AbstractDataset
      extended by org.jfree.data.general.AbstractSeriesDataset
          extended by org.jfree.data.xy.AbstractXYDataset
              extended by org.jfree.data.xy.AbstractIntervalXYDataset
                  extended by org.jfree.data.time.DynamicTimeSeriesCollection
All Implemented Interfaces:
java.io.ObjectInputValidation, java.io.Serializable, java.lang.Cloneable, java.util.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
protected  class DynamicTimeSeriesCollection.ValueSequence
          A wrapper for a fixed array of float values.
 
Field Summary
static int END
          Useful constant for controlling the x-value returned for a time period.
protected  int historyCount
          The history count.
static int MIDDLE
          Useful constant for controlling the x-value returned for a time period.
protected  RegularTimePeriod[] pointsInTime
          Storage for the x-values.
static int START
          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  java.util.Calendar workingCalendar
          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, RegularTimePeriod timeSample)
          Creates a new dataset.
DynamicTimeSeriesCollection(int nSeries, int nMoments, RegularTimePeriod timeSample, java.util.TimeZone zone)
          Creates a new dataset.
DynamicTimeSeriesCollection(int nSeries, int nMoments, java.util.TimeZone zone)
          Constructs an empty dataset, tied to a specific timezone.
 
Method Summary
 void addSeries(float[] values, int seriesNumber, java.lang.Comparable seriesKey)
          Adds a series to the dataset.
 void addValue(int seriesNumber, int index, float value)
          Adds a value to a series.
 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.
 void appendData(float[] newData)
          Appends new data.
 void appendData(float[] newData, int insertionIndex, int refresh)
          Appends data at specified index, for loading up with data from file(s).
protected  void findDomainLimits()
          Finds the domain limits.
protected  double findMaxValue()
          Returns the maximum value.
protected  void fireSeriesChanged()
          Sends a SeriesChangeEvent to all registered listeners.
 Range getDomainBounds(boolean includeInterval)
          Returns the range of the values in this dataset's domain.
 double getDomainLowerBound(boolean includeInterval)
          Returns the minimum x-value in the dataset.
 double getDomainUpperBound(boolean includeInterval)
          Returns the maximum x-value in the dataset.
 java.lang.Number getEndX(int series, int item)
          Returns the end x-value.
 java.lang.Number getEndY(int series, int item)
          Returns the end y-value.
 int getItemCount(int series)
          Returns the number of items in a series.
 int getNewestIndex()
          Returns the index of the newest data item.
 RegularTimePeriod getNewestTime()
          Returns the newest time.
 int getOldestIndex()
          Returns the index of the oldest data item.
 RegularTimePeriod getOldestTime()
          Returns the oldest time.
 int getPosition()
          Returns the x position type (START, MIDDLE or END).
 Range getRangeBounds(boolean includeInterval)
          Returns the value range.
 double getRangeLowerBound(boolean includeInterval)
          Returns the minimum range value.
 double getRangeUpperBound(boolean includeInterval)
          Returns the maximum range value.
 int getSeriesCount()
          Returns the number of series in the collection.
 java.lang.Comparable getSeriesKey(int series)
          Returns the key for a series.
 java.lang.Number getStartX(int series, int item)
          Returns the start x-value.
 java.lang.Number getStartY(int series, int item)
          Returns the start y-value.
 java.lang.Number getX(int series, int item)
          Returns the x-value.
 java.lang.Number getY(int series, int item)
          Returns the y-value.
 double getYValue(int series, int item)
          Returns the y-value.
 void invalidateRangeInfo()
          Invalidates the range info.
 int offsetFromNewest(int delta)
          Returns the actual index to a time offset by "delta" from newestAt.
 int offsetFromOldest(int delta)
          ??
 void setPosition(int position)
          Sets the x position type (START, MIDDLE or END).
 void setSeriesKey(int seriesNumber, java.lang.Comparable key)
          Sets the name of a series.
 long setTimeBase(RegularTimePeriod start)
          Fill the pointsInTime with times using TimePeriod.next(): Will silently return if the time array was already populated.
protected  int translateGet(int toFetch)
          Re-map an index, for use in retrieving data.
protected  int wrapOffset(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, getGroup, hasListener, notifyListeners, removeChangeListener, setGroup, 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.xy.IntervalXYDataset
getEndXValue, getEndYValue, getStartXValue, getStartYValue
 
Methods inherited from interface org.jfree.data.xy.XYDataset
getDomainOrder, getXValue
 
Methods inherited from interface org.jfree.data.general.SeriesDataset
indexOf
 
Methods inherited from interface org.jfree.data.general.Dataset
addChangeListener, getGroup, removeChangeListener, setGroup
 

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 java.util.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,
                                   java.util.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,
                                   java.util.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,
                      java.lang.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,
                         java.lang.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:
getSeriesCount in interface SeriesDataset
Specified by:
getSeriesCount in class AbstractSeriesDataset
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:
getItemCount in interface XYDataset
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 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 )

getNewestTime

public RegularTimePeriod getNewestTime()
Returns the newest time.

Returns:
The newest time.

getOldestTime

public RegularTimePeriod getOldestTime()
Returns the oldest time.

Returns:
The oldest time.

getX

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

Specified by:
getX in interface XYDataset
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.

Specified by:
getYValue in interface XYDataset
Overrides:
getYValue in class AbstractXYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getY

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

Specified by:
getY in interface XYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getStartX

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

Specified by:
getStartX in interface IntervalXYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getEndX

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

Specified by:
getEndX in interface IntervalXYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getStartY

public java.lang.Number getStartY(int series,
                                  int item)
Returns the start y-value.

Specified by:
getStartY in interface IntervalXYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getEndY

public java.lang.Number getEndY(int series,
                                int item)
Returns the end y-value.

Specified by:
getEndY in interface IntervalXYDataset
Parameters:
series - the series index (zero-based).
item - the item index (zero-based).
Returns:
The value.

getSeriesKey

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

Specified by:
getSeriesKey in interface SeriesDataset
Specified by:
getSeriesKey in class AbstractSeriesDataset
Parameters:
series - the series index (zero-based).
Returns:
The key.

fireSeriesChanged

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


getDomainLowerBound

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

Specified by:
getDomainLowerBound in interface DomainInfo
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:
getDomainUpperBound in interface DomainInfo
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:
getDomainBounds in interface DomainInfo
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:
getRangeLowerBound in interface RangeInfo
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:
getRangeUpperBound in interface RangeInfo
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:
getRangeBounds in interface RangeInfo
Parameters:
includeInterval - a flag that determines whether or not the y-interval is taken into account.
Returns:
The range.

Footer
And More


Copyright © 2000-2009 by Object Refinery Limited. All Rights Reserved.