From 2a6ec4cf0c730c67eb111cbd487035f19871ab00 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 31 Mar 2013 13:57:57 +0200 Subject: [PATCH] Added Serializable interface to value model objects --- .../li/strolch/model/timedstate/ITimedState.java | 2 +- .../java/li/strolch/model/timedstate/TimedState.java | 8 +++++--- .../java/li/strolch/model/timevalue/ITimeValue.java | 2 +- .../li/strolch/model/timevalue/ITimeVariable.java | 10 +++++++++- src/main/java/li/strolch/model/timevalue/IValue.java | 2 +- .../li/strolch/model/timevalue/IValueChange.java | 2 +- .../li/strolch/model/timevalue/impl/AString.java | 10 +++++++--- .../li/strolch/model/timevalue/impl/DoubleValue.java | 8 ++++++-- .../strolch/model/timevalue/impl/IntegerValue.java | 8 ++++++-- .../strolch/model/timevalue/impl/StringSetValue.java | 8 +++++--- .../li/strolch/model/timevalue/impl/TimeValue.java | 8 ++++++-- .../strolch/model/timevalue/impl/TimeVariable.java | 12 ++++++++++-- .../li/strolch/model/timevalue/impl/ValueChange.java | 8 ++++++-- 13 files changed, 64 insertions(+), 24 deletions(-) diff --git a/src/main/java/li/strolch/model/timedstate/ITimedState.java b/src/main/java/li/strolch/model/timedstate/ITimedState.java index a5d0a2744..c8bb64538 100644 --- a/src/main/java/li/strolch/model/timedstate/ITimedState.java +++ b/src/main/java/li/strolch/model/timedstate/ITimedState.java @@ -8,7 +8,7 @@ import li.strolch.model.timevalue.IValueChange; /** * A time based state characterized by a {@link IValue} object implementation. * - * @author martin_smock + * @author Martin Smock * * @param * IValue implementation representing the state at a given time diff --git a/src/main/java/li/strolch/model/timedstate/TimedState.java b/src/main/java/li/strolch/model/timedstate/TimedState.java index f5dcfd089..f5e9e5d95 100644 --- a/src/main/java/li/strolch/model/timedstate/TimedState.java +++ b/src/main/java/li/strolch/model/timedstate/TimedState.java @@ -1,5 +1,6 @@ package li.strolch.model.timedstate; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -11,13 +12,14 @@ import li.strolch.model.timevalue.IValue; import li.strolch.model.timevalue.IValueChange; import li.strolch.model.timevalue.impl.TimeVariable; - /** - * @author martin_smock + * @author Martin Smock */ @SuppressWarnings("rawtypes") -public class TimedState implements ITimedState { +public class TimedState implements ITimedState, Serializable { + private static final long serialVersionUID = 1L; + private ITimeVariable timeVariable = new TimeVariable(); @Override diff --git a/src/main/java/li/strolch/model/timevalue/ITimeValue.java b/src/main/java/li/strolch/model/timevalue/ITimeValue.java index 1df712d26..f6dd1187b 100644 --- a/src/main/java/li/strolch/model/timevalue/ITimeValue.java +++ b/src/main/java/li/strolch/model/timevalue/ITimeValue.java @@ -5,7 +5,7 @@ import li.strolch.model.timevalue.impl.TimeVariable; /** * Interface for timed value objects to be used with the {@link TimeVariable} * - * @author martin_smock + * @author Martin Smock * * @param * the backing value of the timed value object diff --git a/src/main/java/li/strolch/model/timevalue/ITimeVariable.java b/src/main/java/li/strolch/model/timevalue/ITimeVariable.java index 4df20ff26..f1bc79261 100644 --- a/src/main/java/li/strolch/model/timevalue/ITimeVariable.java +++ b/src/main/java/li/strolch/model/timevalue/ITimeVariable.java @@ -1,12 +1,13 @@ package li.strolch.model.timevalue; import java.util.Collection; +import java.util.SortedSet; /** * A timed variable storing a ordered sequence of {@link ITimeValue} objects * modeling a time evolution of a quantity. * - * @author martin_smock + * @author Martin Smock * * @param * the backing value of the timed value object @@ -59,6 +60,13 @@ public interface ITimeVariable { */ Collection> getPastValues(final Long time); + /** + * Get all {@link ITimeValue} objects + * + * @return a defensive copy of the {@link ITimeValue}s + */ + SortedSet> getValues(); + /** * removes {@link ITimeValue} objects from the sequence, where the successor * matches value. I.e considering a pair of adjacent {@link ITimeValue} diff --git a/src/main/java/li/strolch/model/timevalue/IValue.java b/src/main/java/li/strolch/model/timevalue/IValue.java index e3e4444ab..2c1cd52f2 100644 --- a/src/main/java/li/strolch/model/timevalue/IValue.java +++ b/src/main/java/li/strolch/model/timevalue/IValue.java @@ -4,7 +4,7 @@ package li.strolch.model.timevalue; * A value object defining some basic algebraic operations. Mathematically * speaking {@link IValue} objects define a group with a addition operation. * - * @author martin_smock + * @author Martin Smock * * @param * any object for which a (generalized) add operation can be defined. diff --git a/src/main/java/li/strolch/model/timevalue/IValueChange.java b/src/main/java/li/strolch/model/timevalue/IValueChange.java index ec25d5b18..c6283be06 100644 --- a/src/main/java/li/strolch/model/timevalue/IValueChange.java +++ b/src/main/java/li/strolch/model/timevalue/IValueChange.java @@ -4,7 +4,7 @@ package li.strolch.model.timevalue; * Interface for operators to be used to change the values of {@link ITimeValue} * in a {@link ITimeVariable}. * - * @author martin_smock + * @author Martin Smock */ @SuppressWarnings("rawtypes") public interface IValueChange { diff --git a/src/main/java/li/strolch/model/timevalue/impl/AString.java b/src/main/java/li/strolch/model/timevalue/impl/AString.java index cd952facc..39ae3d69d 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/AString.java +++ b/src/main/java/li/strolch/model/timevalue/impl/AString.java @@ -1,13 +1,17 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; + /** * Wrapper for java.util.String object defining a inverse to support algebraic * operations. * - * @author martin_smock + * @author Martin Smock */ -public class AString { - +public class AString implements Serializable { + + private static final long serialVersionUID = 1L; + private final String string; private final boolean inverse; diff --git a/src/main/java/li/strolch/model/timevalue/impl/DoubleValue.java b/src/main/java/li/strolch/model/timevalue/impl/DoubleValue.java index f4a73fdff..c8d2f29e5 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/DoubleValue.java +++ b/src/main/java/li/strolch/model/timevalue/impl/DoubleValue.java @@ -1,14 +1,18 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; + import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.IValue; /** * {@link IValue} implementation to work with Double valued {@link ITimeValue} objects * - * @author martin_smock + * @author Martin Smock */ -public class DoubleValue implements IValue { +public class DoubleValue implements IValue, Serializable { + + private static final long serialVersionUID = 1L; public static final DoubleValue NEUTRAL = new DoubleValue(0.0d); diff --git a/src/main/java/li/strolch/model/timevalue/impl/IntegerValue.java b/src/main/java/li/strolch/model/timevalue/impl/IntegerValue.java index 6b1964318..61b622758 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/IntegerValue.java +++ b/src/main/java/li/strolch/model/timevalue/impl/IntegerValue.java @@ -1,5 +1,7 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; + import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.IValue; @@ -7,9 +9,11 @@ import li.strolch.model.timevalue.IValue; * {@link IValue} implementation to work with Integer valued {@link ITimeValue} * objects * - * @author martin_smock + * @author Martin Smock */ -public class IntegerValue implements IValue { +public class IntegerValue implements IValue, Serializable { + + private static final long serialVersionUID = 1L; public static final IntegerValue NEUTRAL = new IntegerValue(0); diff --git a/src/main/java/li/strolch/model/timevalue/impl/StringSetValue.java b/src/main/java/li/strolch/model/timevalue/impl/StringSetValue.java index b298264c4..6f279c7c3 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/StringSetValue.java +++ b/src/main/java/li/strolch/model/timevalue/impl/StringSetValue.java @@ -1,5 +1,6 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -8,15 +9,16 @@ import java.util.Set; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.IValue; - /** * {@link IValue} implementation to work with String valued {@link ITimeValue} * objects. Since a java.util.String object does not define a inverse, a * algebraic {@link AString} wrapper is used. * - * @author martin_smock + * @author Martin Smock */ -public class StringSetValue implements IValue> { +public class StringSetValue implements IValue>, Serializable { + + private static final long serialVersionUID = 1L; private static Set neu = Collections.emptySet(); public static final IValue> NEUTRAL = new StringSetValue(neu); diff --git a/src/main/java/li/strolch/model/timevalue/impl/TimeValue.java b/src/main/java/li/strolch/model/timevalue/impl/TimeValue.java index bd14fed55..eca23d69e 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/TimeValue.java +++ b/src/main/java/li/strolch/model/timevalue/impl/TimeValue.java @@ -1,13 +1,17 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; + import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.IValue; /** - * @author martin_smock + * @author Martin Smock */ @SuppressWarnings("rawtypes") -public class TimeValue implements ITimeValue { +public class TimeValue implements ITimeValue , Serializable { + + private static final long serialVersionUID = 1L; protected final Long time; protected T value; diff --git a/src/main/java/li/strolch/model/timevalue/impl/TimeVariable.java b/src/main/java/li/strolch/model/timevalue/impl/TimeVariable.java index 43a71c63f..34af158a8 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/TimeVariable.java +++ b/src/main/java/li/strolch/model/timevalue/impl/TimeVariable.java @@ -1,5 +1,6 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; import java.util.Collection; import java.util.Iterator; import java.util.SortedSet; @@ -12,11 +13,13 @@ import li.strolch.model.timevalue.IValueChange; /** - * @author martin_smock + * @author Martin Smock */ @SuppressWarnings("rawtypes") -public class TimeVariable implements ITimeVariable { +public class TimeVariable implements ITimeVariable, Serializable { + private static final long serialVersionUID = 1L; + public SortedSet> container = new TreeSet>(); @Override @@ -53,6 +56,11 @@ public class TimeVariable implements ITimeVariable { TimeValue picker = new TimeValue(time, null); return new TreeSet>(container.headSet(picker)); } + + @Override + public SortedSet> getValues() { + return new TreeSet>(container); + } @Override public void applyChange(final IValueChange change) { diff --git a/src/main/java/li/strolch/model/timevalue/impl/ValueChange.java b/src/main/java/li/strolch/model/timevalue/impl/ValueChange.java index 8d7d33664..80ae72579 100644 --- a/src/main/java/li/strolch/model/timevalue/impl/ValueChange.java +++ b/src/main/java/li/strolch/model/timevalue/impl/ValueChange.java @@ -1,14 +1,18 @@ package li.strolch.model.timevalue.impl; +import java.io.Serializable; + import li.strolch.model.timevalue.IValue; import li.strolch.model.timevalue.IValueChange; /** - * @author martin_smock + * @author Martin Smock */ @SuppressWarnings("rawtypes") -public class ValueChange implements IValueChange { +public class ValueChange implements IValueChange, Serializable { + private static final long serialVersionUID = 1L; + protected final Long time; protected final T value;