Package google.registry.model.common
Class TimedTransitionProperty<V extends Serializable>
java.lang.Object
com.google.common.collect.ForwardingObject
com.google.common.collect.ForwardingMap<org.joda.time.DateTime,V>
google.registry.model.common.TimedTransitionProperty<V>
- All Implemented Interfaces:
UnsafeSerializable
,Serializable
,Map<org.joda.time.DateTime,
V>
public class TimedTransitionProperty<V extends Serializable>
extends com.google.common.collect.ForwardingMap<org.joda.time.DateTime,V>
implements UnsafeSerializable
An entity property whose value transitions over time. Each value it takes on becomes active at a
corresponding instant, and remains active until the next transition occurs. At least one "start
of time" value (corresponding to
START_OF_TIME
, i.e. the Unix epoch) must be provided so
that the property will have a value for all possible times.
This concept is naturally represented by a sorted map of DateTime
to TimedTransitionProperty
. This
class implements ForwardingMap
and stores the data in a backing map and exposes several
convenient methods to extrapolate the value at arbitrary point in time.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.google.common.collect.ForwardingMap
com.google.common.collect.ForwardingMap.StandardEntrySet, com.google.common.collect.ForwardingMap.StandardKeySet, com.google.common.collect.ForwardingMap.StandardValues
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Checks whether thisTimedTransitionProperty
is in a valid state, i.e.protected com.google.common.collect.ImmutableSortedMap
<org.joda.time.DateTime, V> delegate()
static <V extends Serializable>
TimedTransitionProperty<V> fromValueMap
(com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, V> valueMap) Returns a new immutableTimedTransitionProperty
representing the given map ofDateTime
to valueTimedTransitionProperty
.org.joda.time.DateTime
getNextTransitionAfter
(org.joda.time.DateTime time) Returns the time of the next transition.getValueAtTime
(org.joda.time.DateTime time) Returns the value of the property that is active at the specified time.static <V extends Serializable>
TimedTransitionProperty<V> make
(com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, V> newTransitions, com.google.common.collect.ImmutableMultimap<V, V> allowedTransitions, String allowedTransitionMapName, V initialValue, String badInitialValueErrorMessage) Validates a new set of transitions and returns the resultingTimedTransitionProperty
.com.google.common.collect.ImmutableSortedMap
<org.joda.time.DateTime, V> Exposes the underlyingImmutableSortedMap
.static <V extends Serializable>
voidvalidateTimedTransitionMap
(NavigableMap<org.joda.time.DateTime, V> transitionMap, com.google.common.collect.ImmutableMultimap<V, V> allowedTransitions, String mapName) Validates that a transition map is not null or empty, starts atSTART_OF_TIME
, and has transitions which move from one value to another in allowed ways.static <V extends Serializable>
TimedTransitionProperty<V> withInitialValue
(V initialValue) Returns a new immutableTimedTransitionProperty
with an initial value atSTART_OF_TIME
.Methods inherited from class com.google.common.collect.ForwardingMap
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, standardClear, standardContainsKey, standardContainsValue, standardEquals, standardHashCode, standardIsEmpty, standardPutAll, standardRemove, standardToString, values
Methods inherited from class com.google.common.collect.ForwardingObject
toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Method Details
-
fromValueMap
public static <V extends Serializable> TimedTransitionProperty<V> fromValueMap(com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, V> valueMap) Returns a new immutableTimedTransitionProperty
representing the given map ofDateTime
to valueTimedTransitionProperty
. -
withInitialValue
Returns a new immutableTimedTransitionProperty
with an initial value atSTART_OF_TIME
. -
make
public static <V extends Serializable> TimedTransitionProperty<V> make(com.google.common.collect.ImmutableSortedMap<org.joda.time.DateTime, V> newTransitions, com.google.common.collect.ImmutableMultimap<V, V> allowedTransitions, String allowedTransitionMapName, V initialValue, String badInitialValueErrorMessage) Validates a new set of transitions and returns the resultingTimedTransitionProperty
.- Parameters:
newTransitions
- map fromDateTime
to transition valueTimedTransitionProperty
allowedTransitions
- optional map of all possible state-to-state transitionsallowedTransitionMapName
- optional transition map description string for error messagesinitialValue
- optional initial value; if present, the first transition must have this valuebadInitialValueErrorMessage
- option error message string if the initial value is wrong
-
checkValidity
public void checkValidity()Checks whether thisTimedTransitionProperty
is in a valid state, i.e. whether it has a transition entry forSTART_OF_TIME
, and throwsIllegalStateException
if not. -
delegate
- Specified by:
delegate
in classcom.google.common.collect.ForwardingMap<org.joda.time.DateTime,
V extends Serializable>
-
toValueMap
Exposes the underlyingImmutableSortedMap
. -
getValueAtTime
Returns the value of the property that is active at the specified time. The active value for a time beforeSTART_OF_TIME
is extrapolated to be the value that is active atSTART_OF_TIME
. -
getNextTransitionAfter
@Nullable public org.joda.time.DateTime getNextTransitionAfter(org.joda.time.DateTime time) Returns the time of the next transition. Returns null if there is no subsequent transition.
-