Package org.orekit.utils
Class ImmutableFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
java.lang.Object
org.orekit.utils.ImmutableFieldTimeStampedCache<T,KK>
- Type Parameters:
T- the type of dataKK- the type the field element
- All Implemented Interfaces:
FieldTimeStampedCache<T,KK>
public class ImmutableFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
extends Object
implements FieldTimeStampedCache<T,KK>
A cache of
TimeStamped data that provides concurrency through immutability. This strategy is suitable when all the
cached data is stored in memory. (For example, UTCScale) This class then provides
convenient methods for accessing the data.- Author:
- Evan Ward, Vincent Cucchietti
-
Constructor Summary
ConstructorsConstructorDescriptionImmutableFieldTimeStampedCache(int maxNeighborsSize, Collection<? extends T> data) Create a new cache with the given neighbors size and data. -
Method Summary
Modifier and TypeMethodDescriptionstatic <TS extends FieldTimeStamped<CFE>,CFE extends CalculusFieldElement<CFE>>
ImmutableFieldTimeStampedCache<TS, CFE> Get an empty immutable cache.getAll()Get all the data in this cache.Get the earliest entry in this cache.Get the latest entry in this cache.intGet the fixed size of the lists returned byFieldTimeStampedCache.getNeighbors(FieldAbsoluteDate).getNeighbors(FieldAbsoluteDate<KK> central, int n) Get the entries surrounding a central date.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.orekit.utils.FieldTimeStampedCache
getNeighbors
-
Constructor Details
-
ImmutableFieldTimeStampedCache
Create a new cache with the given neighbors size and data.- Parameters:
maxNeighborsSize- the maximum size of the list returned fromFieldTimeStampedCache.getNeighbors(FieldAbsoluteDate). Must be less than or equal todata.size().data- the backing data for this cache. The list will be copied to ensure immutability. To guarantee immutability the entries indatamust be immutable themselves. There must be more data thanmaxNeighborsSize.- Throws:
IllegalArgumentException- ifmaxNeighborsSize > data.size()or ifmaxNeighborsSizeis negative
-
-
Method Details
-
emptyCache
public static <TS extends FieldTimeStamped<CFE>,CFE extends CalculusFieldElement<CFE>> ImmutableFieldTimeStampedCache<TS,CFE> emptyCache()Get an empty immutable cache.- Type Parameters:
TS- the type of dataCFE- the type of the calculus field element- Returns:
- an empty
ImmutableTimeStampedCache. - Since:
- 12.1
-
getNeighbors
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:
getNeighborsin interfaceFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> - Parameters:
central- central daten- number of neighbors (cannot exceedFieldTimeStampedCache.getMaxNeighborsSize())- Returns:
- list of cached entries surrounding the specified date. The size of the list is guaranteed to be
FieldTimeStampedCache.getMaxNeighborsSize().
-
getMaxNeighborsSize
public int getMaxNeighborsSize()Get the fixed size of the lists returned byFieldTimeStampedCache.getNeighbors(FieldAbsoluteDate).- Specified by:
getMaxNeighborsSizein interfaceFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> - Returns:
- size of the list
-
getEarliest
Get the earliest entry in this cache.- Specified by:
getEarliestin interfaceFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> - Returns:
- earliest cached entry
-
getLatest
Get the latest entry in this cache.- Specified by:
getLatestin interfaceFieldTimeStampedCache<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> - Returns:
- latest cached entry
-
getAll
Get all the data in this cache.- Returns:
- a sorted collection of all data passed in the
constructor.
-
toString
-