From c1cdfbb4ea2ebcfc0a9b220ea16e4e6686a609f6 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Sat, 4 Oct 2014 17:06:58 +0200 Subject: [PATCH] [Bugfix] added missing cloning of StringSetTimedState in Resources --- .../main/java/li/strolch/model/Resource.java | 4 +++ .../model/timedstate/BooleanTimedState.java | 3 +-- .../model/timedstate/FloatTimedState.java | 3 +-- .../model/timedstate/IntegerTimedState.java | 3 +-- .../model/timedstate/StringSetTimedState.java | 3 +-- .../model/timedstate/StrolchTimedState.java | 3 +++ .../test/java/li/strolch/model/ModelTest.java | 19 ++++++++++++++ .../resources/data/resources/Resources.xml | 26 +++++++++++++++++++ 8 files changed, 56 insertions(+), 8 deletions(-) diff --git a/li.strolch.model/src/main/java/li/strolch/model/Resource.java b/li.strolch.model/src/main/java/li/strolch/model/Resource.java index 1a535a4b6..b5a4ec006 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/Resource.java +++ b/li.strolch.model/src/main/java/li/strolch/model/Resource.java @@ -172,6 +172,10 @@ public class Resource extends GroupedParameterizedElement implements StrolchRoot super.fillClone(clone); + for (StrolchTimedState> timedState : this.timedStateMap.values()) { + clone.addTimedState(timedState.getClone()); + } + return clone; } diff --git a/li.strolch.model/src/main/java/li/strolch/model/timedstate/BooleanTimedState.java b/li.strolch.model/src/main/java/li/strolch/model/timedstate/BooleanTimedState.java index 13f3474a7..f77152f10 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/timedstate/BooleanTimedState.java +++ b/li.strolch.model/src/main/java/li/strolch/model/timedstate/BooleanTimedState.java @@ -17,7 +17,6 @@ package li.strolch.model.timedstate; import java.util.SortedSet; -import li.strolch.model.StrolchElement; import li.strolch.model.Tags; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.impl.BooleanValue; @@ -82,7 +81,7 @@ public class BooleanTimedState extends AbstractStrolchTimedState { } @Override - public StrolchElement getClone() { + public BooleanTimedState getClone() { BooleanTimedState clone = new BooleanTimedState(); fillClone(clone); return clone; diff --git a/li.strolch.model/src/main/java/li/strolch/model/timedstate/FloatTimedState.java b/li.strolch.model/src/main/java/li/strolch/model/timedstate/FloatTimedState.java index a82960ba3..94fab80ba 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/timedstate/FloatTimedState.java +++ b/li.strolch.model/src/main/java/li/strolch/model/timedstate/FloatTimedState.java @@ -17,7 +17,6 @@ package li.strolch.model.timedstate; import java.util.SortedSet; -import li.strolch.model.StrolchElement; import li.strolch.model.Tags; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.impl.FloatValue; @@ -82,7 +81,7 @@ public class FloatTimedState extends AbstractStrolchTimedState { } @Override - public StrolchElement getClone() { + public FloatTimedState getClone() { FloatTimedState clone = new FloatTimedState(); fillClone(clone); return clone; diff --git a/li.strolch.model/src/main/java/li/strolch/model/timedstate/IntegerTimedState.java b/li.strolch.model/src/main/java/li/strolch/model/timedstate/IntegerTimedState.java index 8cd771412..3a64db21c 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/timedstate/IntegerTimedState.java +++ b/li.strolch.model/src/main/java/li/strolch/model/timedstate/IntegerTimedState.java @@ -17,7 +17,6 @@ package li.strolch.model.timedstate; import java.util.SortedSet; -import li.strolch.model.StrolchElement; import li.strolch.model.Tags; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.impl.IntegerValue; @@ -82,7 +81,7 @@ public class IntegerTimedState extends AbstractStrolchTimedState { } @Override - public StrolchElement getClone() { + public IntegerTimedState getClone() { IntegerTimedState clone = new IntegerTimedState(); fillClone(clone); return clone; diff --git a/li.strolch.model/src/main/java/li/strolch/model/timedstate/StringSetTimedState.java b/li.strolch.model/src/main/java/li/strolch/model/timedstate/StringSetTimedState.java index 76c202e56..6e6b4c13f 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/timedstate/StringSetTimedState.java +++ b/li.strolch.model/src/main/java/li/strolch/model/timedstate/StringSetTimedState.java @@ -20,7 +20,6 @@ import java.util.Iterator; import java.util.Set; import java.util.SortedSet; -import li.strolch.model.StrolchElement; import li.strolch.model.Tags; import li.strolch.model.timevalue.ITimeValue; import li.strolch.model.timevalue.impl.AString; @@ -105,7 +104,7 @@ public class StringSetTimedState extends AbstractStrolchTimedState extends StrolchElement { public void setParent(Resource aThis); + @Override + public StrolchTimedState getClone(); + public U accept(TimedStateVisitor visitor); } diff --git a/li.strolch.model/src/test/java/li/strolch/model/ModelTest.java b/li.strolch.model/src/test/java/li/strolch/model/ModelTest.java index ce2fd43f0..a1e6c2922 100644 --- a/li.strolch.model/src/test/java/li/strolch/model/ModelTest.java +++ b/li.strolch.model/src/test/java/li/strolch/model/ModelTest.java @@ -130,6 +130,25 @@ public class ModelTest { assertTrue("Same Resource should be deep equal!", visitor.isEqual()); } + @Test + public void shouldPerformResourceClone() { + Resource srcRes = createResource("@res01", "Test resource", "MyType"); + Resource dstRes = srcRes.getClone(); + ResourceDeepEqualsVisitor visitor = new ResourceDeepEqualsVisitor(srcRes); + visitor.visit(dstRes); + assertTrue("Cloned Resource should be deep equal!", visitor.isEqual()); + } + + @Test + public void shouldPerformOrderClone() { + Date date = new Date(); + Order srcOrder = createOrder("@ord01", "Test Order", "MyType", date, State.OPEN); + Order dstOrder = srcOrder.getClone(); + OrderDeepEqualsVisitor visitor = new OrderDeepEqualsVisitor(srcOrder); + visitor.visit(dstOrder); + assertTrue("Cloned Order should be deep equal: " + visitor.getMismatchedLocators(), visitor.isEqual()); + } + @Test public void shouldFailDeepResourceEquals1() { Resource srcRes = createResource("@res01", "Test resource", "MyType"); diff --git a/li.strolch.model/src/test/resources/data/resources/Resources.xml b/li.strolch.model/src/test/resources/data/resources/Resources.xml index bdcd02b52..f937686dd 100644 --- a/li.strolch.model/src/test/resources/data/resources/Resources.xml +++ b/li.strolch.model/src/test/resources/data/resources/Resources.xml @@ -14,5 +14,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +