Class ImmutableTimeStampedCache<T extends TimeStamped>

java.lang.Object
org.orekit.utils.ImmutableTimeStampedCache<T>
Type Parameters:
T - the type of data
All Implemented Interfaces:
TimeStampedCache<T>

public class ImmutableTimeStampedCache<T extends TimeStamped> extends Object implements TimeStampedCache<T>
A cache of TimeStamped data that provides concurrency through immutability. This strategy is suitable when all of the cached data is stored in memory. (For example, UTCScale) This class then provides convenient methods for accessing the data.
Author:
Evan Ward
  • Constructor Details

    • ImmutableTimeStampedCache

      public ImmutableTimeStampedCache(int maxNeighborsSize, Collection<? extends T> data)
      Create a new cache with the given neighbors size and data.
      Parameters:
      maxNeighborsSize - the maximum size of the list returned from getNeighbors(AbsoluteDate, int). Must be less than or equal to data.size().
      data - the backing data for this cache. The list will be copied to ensure immutability. To guarantee immutability the entries in data must be immutable themselves. There must be more data than maxNeighborsSize.
      Throws:
      IllegalArgumentException - if neightborsSize > data.size() or if neighborsSize is negative
  • Method Details

    • getNeighbors

      public Stream<T> getNeighbors(AbsoluteDate central, int n)
      Get the entries surrounding a central date.

      If the central date is well within covered range, the returned array will be balanced with half the points before central date and half the points after it (depending on n parity, of course). If the central date is near the boundary, then the returned array will be unbalanced and will contain only the n earliest (or latest) entries. A typical example of the later case is leap seconds cache, since the number of leap seconds cannot be arbitrarily increased.

      This method is safe for multiple threads to execute concurrently.

      Specified by:
      getNeighbors in interface TimeStampedCache<T extends TimeStamped>
      Parameters:
      central - central date
      n - number of neighbors (cannot exceed TimeStampedCache.getMaxNeighborsSize())
      Returns:
      stream of cached entries surrounding the specified date.
    • getMaxNeighborsSize

      public int getMaxNeighborsSize()
      Get the maximum size of the lists returned by TimeStampedCache.getNeighbors(AbsoluteDate, int).
      Specified by:
      getMaxNeighborsSize in interface TimeStampedCache<T extends TimeStamped>
      Returns:
      size of the list
    • getEarliest

      public T getEarliest()
      Get the earliest entry in this cache.
      Specified by:
      getEarliest in interface TimeStampedCache<T extends TimeStamped>
      Returns:
      earliest cached entry
    • getLatest

      public T getLatest()
      Get the latest entry in this cache.
      Specified by:
      getLatest in interface TimeStampedCache<T extends TimeStamped>
      Returns:
      latest cached entry
    • getAll

      public List<T> getAll()
      Get all of the data in this cache.
      Returns:
      a sorted collection of all data passed in the constructor.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • emptyCache

      public static <TS extends TimeStamped> ImmutableTimeStampedCache<TS> emptyCache()
      Get an empty immutable cache, cast to the correct type.
      Type Parameters:
      TS - the type of data
      Returns:
      an empty ImmutableTimeStampedCache.