Module platform

Class 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:
  • Field Details

    • START

      public static final int START
      Useful constant for controlling the x-value returned for a time period.
      See Also:
    • MIDDLE

      public static final int MIDDLE
      Useful constant for controlling the x-value returned for a time period.
      See Also:
    • END

      public static final int END
      Useful constant for controlling the x-value returned for a time period.
      See Also:
    • historyCount

      protected int historyCount
      The history count.
    • pointsInTime

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

      An array for storing the objects that represent each series.
    • workingCalendar

      protected Calendar workingCalendar
      A working calendar (to recycle)
  • Constructor Details

    • 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 Details

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