Class DeltaLongTimeSeriesSerialiser
- java.lang.Object
-
- uk.gov.gchq.gaffer.time.serialisation.DeltaLongTimeSeriesSerialiser
-
- All Implemented Interfaces:
Serializable,Serialiser<LongTimeSeries,byte[]>,ToBytesSerialiser<LongTimeSeries>
public class DeltaLongTimeSeriesSerialiser extends Object implements ToBytesSerialiser<LongTimeSeries>
Serialises aLongTimeSeriesby writing out the deltas between consecutive values in the timeseries. The same approach is used, independently, for both the timestamps and the values. This should store the time series compactly when there is some regularity in the spacing of the keys or values.If the values of the time series are extreme, i.e. greater than half of
Long.MAX_VALUEin absolute size, then the deltas might overflow. In this case, a simpler serialisation is used where the timestamps and values are simply written out directly.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface uk.gov.gchq.gaffer.serialisation.ToBytesSerialiser
EMPTY_BYTES
-
-
Constructor Summary
Constructors Constructor Description DeltaLongTimeSeriesSerialiser()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanHandle(Class clazz)Check whether the serialiser can serialise a particular class.LongTimeSeriesdeserialise(byte[] bytes)Deserialise an array of bytes into the original object.LongTimeSeriesdeserialise(byte[] allBytes, int offset, int length)LongTimeSeriesdeserialiseEmpty()Handle an empty byte array and reconstruct an appropriate representation in T form.booleanequals(Object obj)inthashCode()booleanisConsistent()Indicates whether the serialisation process produces a predictable, consistent OUTPUT, from a given INPUT, ie the same object should always serialise in the same way for this to be true.booleanpreservesObjectOrdering()Indicates whether the serialisation process preserves the ordering of the T, i.e.byte[]serialise(LongTimeSeries timeSeries)Serialise some object and returns the raw bytes of the serialised form.-
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface uk.gov.gchq.gaffer.serialisation.ToBytesSerialiser
serialiseNull
-
-
-
-
Method Detail
-
canHandle
public boolean canHandle(Class clazz)
Description copied from interface:SerialiserCheck whether the serialiser can serialise a particular class.//Warning: Due to erasure you may get false positives. e.g.
Set<Foo> set = Sets.newHashSet(); boolean b = new Serialiser<Set<Bar>, byte[]>().canHandle(set.getClass()); b will incorrectly be true because of type erasure between Set<Foo> Set<Bar>- Specified by:
canHandlein interfaceSerialiser<LongTimeSeries,byte[]>- Parameters:
clazz- the object class to serialise- Returns:
- boolean true if it can be handled
-
serialise
public byte[] serialise(LongTimeSeries timeSeries) throws SerialisationException
Description copied from interface:ToBytesSerialiserSerialise some object and returns the raw bytes of the serialised form.- Specified by:
serialisein interfaceSerialiser<LongTimeSeries,byte[]>- Specified by:
serialisein interfaceToBytesSerialiser<LongTimeSeries>- Parameters:
timeSeries- the object to be serialised- Returns:
- byte[] the serialised bytes
- Throws:
SerialisationException- if the object fails to serialise
-
deserialise
public LongTimeSeries deserialise(byte[] allBytes, int offset, int length) throws SerialisationException
- Specified by:
deserialisein interfaceToBytesSerialiser<LongTimeSeries>- Parameters:
allBytes- The bytes to be decoded into charactersoffset- The index of the first byte to decodelength- The number of bytes to decode- Returns:
- T the deserialised object
- Throws:
SerialisationException- issues during deserialisation
-
deserialise
public LongTimeSeries deserialise(byte[] bytes) throws SerialisationException
Description copied from interface:ToBytesSerialiserDeserialise an array of bytes into the original object.- Specified by:
deserialisein interfaceSerialiser<LongTimeSeries,byte[]>- Specified by:
deserialisein interfaceToBytesSerialiser<LongTimeSeries>- Parameters:
bytes- the bytes to deserialise- Returns:
- T the deserialised object
- Throws:
SerialisationException- if the object fails to deserialiseNote that this implementation is less efficient than using deserialise with an offset and a length, but may still be used if necessary. It has been marked deprecated but will not be removed as it is needed in the Serialiser interface.
- See Also:
ToBytesSerialiser.deserialise(byte[], int, int)
-
deserialiseEmpty
public LongTimeSeries deserialiseEmpty() throws SerialisationException
Description copied from interface:ToBytesSerialiserHandle an empty byte array and reconstruct an appropriate representation in T form.- Specified by:
deserialiseEmptyin interfaceSerialiser<LongTimeSeries,byte[]>- Specified by:
deserialiseEmptyin interfaceToBytesSerialiser<LongTimeSeries>- Returns:
- T the deserialised object
- Throws:
SerialisationException- if the object fails to deserialise
-
preservesObjectOrdering
public boolean preservesObjectOrdering()
Description copied from interface:ToBytesSerialiserIndicates whether the serialisation process preserves the ordering of the T, i.e. if x and y are objects of class T, and x is less than y, then this method should return true if the serialised form of x is guaranteed to be less than the serialised form of y (using the standard ordering of byte arrays). If T is not Comparable then this test makes no sense and false should be returned.- Specified by:
preservesObjectOrderingin interfaceSerialiser<LongTimeSeries,byte[]>- Specified by:
preservesObjectOrderingin interfaceToBytesSerialiser<LongTimeSeries>- Returns:
- true if the serialisation will preserve the order of the T, otherwise false.
-
isConsistent
public boolean isConsistent()
Description copied from interface:SerialiserIndicates whether the serialisation process produces a predictable, consistent OUTPUT, from a given INPUT, ie the same object should always serialise in the same way for this to be true.- Specified by:
isConsistentin interfaceSerialiser<LongTimeSeries,byte[]>- Returns:
- true if serialisation is consistent for a given object, otherwise false.
-
-