From 4b966795883059e4665041d05c133a73c307fefa Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 29 Jul 2015 18:54:42 +0200 Subject: [PATCH] [Major] refactored compareTo()-method on StrolchElements Parameters are now comparable, but remove from some others like the timed states --- .../strolch/model/AbstractStrolchElement.java | 5 - .../src/main/java/li/strolch/model/Order.java | 7 +- .../main/java/li/strolch/model/Resource.java | 7 +- .../java/li/strolch/model/StrolchElement.java | 56 ++++- .../li/strolch/model/activity/Activity.java | 8 +- .../model/parameter/AbstractParameter.java | 3 + .../model/parameter/BooleanParameter.java | 7 + .../model/parameter/DateParameter.java | 7 + .../model/parameter/DurationParameter.java | 7 + .../model/parameter/FloatListParameter.java | 7 + .../model/parameter/FloatParameter.java | 7 + .../model/parameter/IntegerListParameter.java | 7 + .../model/parameter/IntegerParameter.java | 7 + .../model/parameter/LongListParameter.java | 7 + .../model/parameter/LongParameter.java | 7 + .../li/strolch/model/parameter/Parameter.java | 7 +- .../model/parameter/StringListParameter.java | 7 + .../model/parameter/StringParameter.java | 7 + .../li/strolch/model/ModelCompareTest.java | 207 ++++++++++++++++++ 19 files changed, 360 insertions(+), 17 deletions(-) create mode 100644 li.strolch.model/src/test/java/li/strolch/model/ModelCompareTest.java diff --git a/li.strolch.model/src/main/java/li/strolch/model/AbstractStrolchElement.java b/li.strolch.model/src/main/java/li/strolch/model/AbstractStrolchElement.java index dc62e2311..78da13090 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/AbstractStrolchElement.java +++ b/li.strolch.model/src/main/java/li/strolch/model/AbstractStrolchElement.java @@ -141,11 +141,6 @@ public abstract class AbstractStrolchElement implements StrolchElement { return true; } - @Override - public int compareTo(StrolchElement o) { - return getId().compareTo(o.getId()); - } - @Override public abstract String toString(); } diff --git a/li.strolch.model/src/main/java/li/strolch/model/Order.java b/li.strolch.model/src/main/java/li/strolch/model/Order.java index 08d553f62..843aea62c 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/Order.java +++ b/li.strolch.model/src/main/java/li/strolch/model/Order.java @@ -31,7 +31,7 @@ import ch.eitchnet.utils.iso8601.ISO8601FormatFactory; * * @author Robert von Burg */ -public class Order extends GroupedParameterizedElement implements StrolchRootElement { +public class Order extends GroupedParameterizedElement implements StrolchRootElement, Comparable { private static final long serialVersionUID = 0L; @@ -169,4 +169,9 @@ public class Order extends GroupedParameterizedElement implements StrolchRootEle return builder.toString(); } + + @Override + public int compareTo(Order o) { + return getId().compareTo(o.getId()); + } } 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 9f8a2454f..674721b17 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 @@ -31,7 +31,7 @@ import li.strolch.model.visitor.StrolchRootElementVisitor; /** * @author Robert von Burg */ -public class Resource extends GroupedParameterizedElement implements StrolchRootElement { +public class Resource extends GroupedParameterizedElement implements StrolchRootElement, Comparable { private static final long serialVersionUID = 0L; @@ -165,4 +165,9 @@ public class Resource extends GroupedParameterizedElement implements StrolchRoot return builder.toString(); } + + @Override + public int compareTo(Resource o) { + return getId().compareTo(o.getId()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/StrolchElement.java b/li.strolch.model/src/main/java/li/strolch/model/StrolchElement.java index 1f3ad4734..5f06e7180 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/StrolchElement.java +++ b/li.strolch.model/src/main/java/li/strolch/model/StrolchElement.java @@ -20,7 +20,7 @@ import java.io.Serializable; /** * @author Robert von Burg */ -public interface StrolchElement extends Serializable, Comparable { +public interface StrolchElement extends Serializable { /** * Return the {@link Locator} for this element @@ -63,42 +63,84 @@ public interface StrolchElement extends Serializable, Comparable * Set the currently set long value which defines the primary key for use in RDBM-Systems * * @param dbid + * the dbid to set */ public void setDbid(long dbid); /** * Returns the currently set long value which defines the primary key for use in RDBM-Systems * - * @return + * @return the currently set long value which defines the primary key for use in RDBM-Systems */ public long getDbid(); /** * Returns the type of this {@link StrolchElement} * - * @return + * @return the type of this {@link StrolchElement} */ public String getType(); + /** + * @return the direct parent of this element + */ public StrolchElement getParent(); + /** + * Returns the {@link StrolchRootElement} for this {@link StrolchElement} + * + * @return the {@link StrolchRootElement} for this {@link StrolchElement} + */ public StrolchRootElement getRootElement(); + /** + * Returns true if this element is a {@link StrolchRootElement}, false if not + * + * @return true if this element is a {@link StrolchRootElement}, false if not + */ public boolean isRootElement(); /** * Return a clone of this {@link StrolchElement} * - * @return + * @return a clone of this {@link StrolchElement} */ public StrolchElement getClone(); + /** + *

+ * Returns the hashcode of this element. + *

+ * + *

+ * For most {@link StrolchElement} the equals and hashcode methods would only take into account the ID of the + * element, but certain implementations might require more specific attributes + *

+ * + * @see Object#hashCode() + * + * @return the hashcode of this element + */ @Override public int hashCode(); + /** + *

+ * Returns true if this object equals the given parameter object + *

+ * + *

+ * For most {@link StrolchElement} the equals and hashcode methods would only take into account the ID of the + * element, but certain implementations might require more specific attributes + *

+ * + * @see Object#equals(Object) + * + * @param obj + * the object to which to check for equality + * + * @return true if this object equals the given parameter object + */ @Override public boolean equals(Object obj); - - @Override - public int compareTo(StrolchElement o); } diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java index 7a494d117..cd031a8a6 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java +++ b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java @@ -38,7 +38,8 @@ import ch.eitchnet.utils.dbc.DBC; * * @author Martin Smock */ -public class Activity extends GroupedParameterizedElement implements IActivityElement, StrolchRootElement { +public class Activity extends GroupedParameterizedElement implements IActivityElement, StrolchRootElement, + Comparable { private static final long serialVersionUID = 1L; @@ -243,6 +244,11 @@ public class Activity extends GroupedParameterizedElement implements IActivityEl return builder.toString(); } + @Override + public int compareTo(Activity o) { + return getId().compareTo(o.getId()); + } + @Override public T accept(StrolchRootElementVisitor visitor) { throw new StrolchException("not implemented yet"); diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/AbstractParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/AbstractParameter.java index b5e2c2506..72f07740e 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/AbstractParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/AbstractParameter.java @@ -196,4 +196,7 @@ public abstract class AbstractParameter extends AbstractStrolchElement implem return builder.toString(); } + + @Override + public abstract int compareTo(Parameter otherParam); } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/BooleanParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/BooleanParameter.java index 8f1ada4ab..78b8d406c 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/BooleanParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/BooleanParameter.java @@ -17,6 +17,7 @@ package li.strolch.model.parameter; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.helper.StringHelper; /** @@ -92,4 +93,10 @@ public class BooleanParameter extends AbstractParameter { public static Boolean parseFromString(String valueS) { return StringHelper.parseBoolean(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((BooleanParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/DateParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/DateParameter.java index 461319b6f..1106674e6 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/DateParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/DateParameter.java @@ -19,6 +19,7 @@ import java.util.Date; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.iso8601.ISO8601FormatFactory; /** @@ -94,4 +95,10 @@ public class DateParameter extends AbstractParameter { public static Date parseFromString(String valueS) { return ISO8601FormatFactory.getInstance().getDateFormat().parse(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((DateParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/DurationParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/DurationParameter.java index 2916d7aff..5ff87199d 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/DurationParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/DurationParameter.java @@ -17,6 +17,7 @@ package li.strolch.model.parameter; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.iso8601.ISO8601FormatFactory; /** @@ -92,4 +93,10 @@ public class DurationParameter extends AbstractParameter { public static Long parseFromString(String valueS) { return ISO8601FormatFactory.getInstance().getDurationFormat().parse(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((DurationParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatListParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatListParameter.java index 5bee81921..3248224aa 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatListParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatListParameter.java @@ -22,6 +22,7 @@ import java.util.List; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.helper.StringHelper; /** @@ -146,4 +147,10 @@ public class FloatListParameter extends AbstractParameter> implemen } return values; } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return Integer.valueOf(this.getValue().size()).compareTo(((FloatListParameter) o).getValue().size()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java index f9c408ea1..74a86ddeb 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/FloatParameter.java @@ -15,6 +15,7 @@ */ package li.strolch.model.parameter; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; @@ -93,4 +94,10 @@ public class FloatParameter extends AbstractParameter { public static Double parseFromString(String valueS) { return Double.valueOf(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((FloatParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerListParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerListParameter.java index 47fc8f55b..32d2b9010 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerListParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerListParameter.java @@ -22,6 +22,7 @@ import java.util.List; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.helper.StringHelper; /** @@ -146,4 +147,10 @@ public class IntegerListParameter extends AbstractParameter> imple } return values; } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return Integer.valueOf(this.getValue().size()).compareTo(((IntegerListParameter) o).getValue().size()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerParameter.java index 333a2aae4..ee5321e4a 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/IntegerParameter.java @@ -15,6 +15,7 @@ */ package li.strolch.model.parameter; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; @@ -92,4 +93,10 @@ public class IntegerParameter extends AbstractParameter { public static Integer parseFromString(String valueS) { return Integer.valueOf(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((IntegerParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/LongListParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/LongListParameter.java index a5be57b2c..b61da8c34 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/LongListParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/LongListParameter.java @@ -22,6 +22,7 @@ import java.util.List; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.helper.StringHelper; /** @@ -146,4 +147,10 @@ public class LongListParameter extends AbstractParameter> implements } return values; } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return Integer.valueOf(this.getValue().size()).compareTo(((LongListParameter) o).getValue().size()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/LongParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/LongParameter.java index 443daf743..08491e178 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/LongParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/LongParameter.java @@ -15,6 +15,7 @@ */ package li.strolch.model.parameter; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; @@ -92,4 +93,10 @@ public class LongParameter extends AbstractParameter { public static Long parseFromString(String valueS) { return Long.valueOf(valueS); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareTo(((LongParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/Parameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/Parameter.java index c6ecde5dd..505afd54f 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/Parameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/Parameter.java @@ -23,7 +23,7 @@ import li.strolch.model.visitor.ParameterVisitor; /** * @author Robert von Burg */ -public interface Parameter extends StrolchElement { +public interface Parameter extends StrolchElement, Comparable> { /** * Returns the value of the parameter as string @@ -141,9 +141,12 @@ public interface Parameter extends StrolchElement { @Override public boolean equals(Object obj); + + @Override + public int compareTo(Parameter o); @Override public Parameter getClone(); - public U accept(ParameterVisitor visitor); + public U accept(ParameterVisitor visitor); } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/StringListParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/StringListParameter.java index 323506efb..53e3180bd 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/StringListParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/StringListParameter.java @@ -22,6 +22,7 @@ import java.util.List; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; import ch.eitchnet.utils.helper.StringHelper; /** @@ -146,4 +147,10 @@ public class StringListParameter extends AbstractParameter> impleme } return values; } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return Integer.valueOf(this.getValue().size()).compareTo(((StringListParameter) o).getValue().size()); + } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/parameter/StringParameter.java b/li.strolch.model/src/main/java/li/strolch/model/parameter/StringParameter.java index 81c3e7882..a10522e81 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/parameter/StringParameter.java +++ b/li.strolch.model/src/main/java/li/strolch/model/parameter/StringParameter.java @@ -17,6 +17,7 @@ package li.strolch.model.parameter; import li.strolch.model.StrolchValueType; import li.strolch.model.visitor.ParameterVisitor; +import ch.eitchnet.utils.dbc.DBC; /** * @author Robert von Burg @@ -90,4 +91,10 @@ public class StringParameter extends AbstractParameter { public U accept(ParameterVisitor visitor) { return visitor.visitStringParam(this); } + + @Override + public int compareTo(Parameter o) { + DBC.PRE.assertEquals("Not same Parameter types!", this.getType(), o.getType()); + return this.getValue().compareToIgnoreCase(((StringParameter) o).getValue()); + } } diff --git a/li.strolch.model/src/test/java/li/strolch/model/ModelCompareTest.java b/li.strolch.model/src/test/java/li/strolch/model/ModelCompareTest.java new file mode 100644 index 000000000..8356c0a52 --- /dev/null +++ b/li.strolch.model/src/test/java/li/strolch/model/ModelCompareTest.java @@ -0,0 +1,207 @@ +/* + * Copyright 2015 Robert von Burg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package li.strolch.model; + +import static li.strolch.model.ModelGenerator.PARAM_BOOLEAN_ID; +import static li.strolch.model.ModelGenerator.PARAM_DATE_ID; +import static li.strolch.model.ModelGenerator.PARAM_FLOAT_ID; +import static li.strolch.model.ModelGenerator.PARAM_INTEGER_ID; +import static li.strolch.model.ModelGenerator.PARAM_LIST_FLOAT_ID; +import static li.strolch.model.ModelGenerator.PARAM_LIST_INTEGER_ID; +import static li.strolch.model.ModelGenerator.PARAM_LIST_LONG_ID; +import static li.strolch.model.ModelGenerator.PARAM_LIST_STRING_ID; +import static li.strolch.model.ModelGenerator.PARAM_LONG_ID; +import static li.strolch.model.ModelGenerator.PARAM_STRING_ID; +import static org.junit.Assert.assertEquals; +import li.strolch.model.parameter.Parameter; + +import org.junit.Test; + +/** + * @author Robert von Burg + */ +public class ModelCompareTest { + + @Test + public void shouldCompareToEqual() { + + ParameterBag bag1 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + ParameterBag bag2 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + + Parameter param1; + Parameter param2; + + param1 = bag1.getParameter(PARAM_BOOLEAN_ID); + param2 = bag2.getParameter(PARAM_BOOLEAN_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_FLOAT_ID); + param2 = bag2.getParameter(PARAM_FLOAT_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_INTEGER_ID); + param2 = bag2.getParameter(PARAM_INTEGER_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LONG_ID); + param2 = bag2.getParameter(PARAM_LONG_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_STRING_ID); + param2 = bag2.getParameter(PARAM_STRING_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_DATE_ID); + param2 = bag2.getParameter(PARAM_DATE_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_STRING_ID); + param2 = bag2.getParameter(PARAM_LIST_STRING_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_INTEGER_ID); + param2 = bag2.getParameter(PARAM_LIST_INTEGER_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_FLOAT_ID); + param2 = bag2.getParameter(PARAM_LIST_FLOAT_ID); + assertEquals(0, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_LONG_ID); + param2 = bag2.getParameter(PARAM_LIST_LONG_ID); + assertEquals(0, param1.compareTo(param2)); + } + + @Test + public void shouldCompareToLessThan() { + + ParameterBag bag1 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + ParameterBag bag2 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + + Parameter param1; + Parameter param2; + + param1 = bag1.getParameter(PARAM_BOOLEAN_ID); + param2 = bag2.getParameter(PARAM_BOOLEAN_ID); + param1.setValueFromString(Boolean.FALSE.toString()); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_FLOAT_ID); + param2 = bag2.getParameter(PARAM_FLOAT_ID); + param1.setValueFromString("-10.123"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_INTEGER_ID); + param2 = bag2.getParameter(PARAM_INTEGER_ID); + param1.setValueFromString("-10"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LONG_ID); + param2 = bag2.getParameter(PARAM_LONG_ID); + param1.setValueFromString("-10876543"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_STRING_ID); + param2 = bag2.getParameter(PARAM_STRING_ID); + param1.setValueFromString("a"); + assertEquals(-18, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_DATE_ID); + param2 = bag2.getParameter(PARAM_DATE_ID); + param1.setValueFromString("1970-01-01T00:00:00.000Z"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_STRING_ID); + param2 = bag2.getParameter(PARAM_LIST_STRING_ID); + param1.setValueFromString(""); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_INTEGER_ID); + param2 = bag2.getParameter(PARAM_LIST_INTEGER_ID); + param1.setValueFromString("1"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_FLOAT_ID); + param2 = bag2.getParameter(PARAM_LIST_FLOAT_ID); + param1.setValueFromString("1.0"); + assertEquals(-1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_LONG_ID); + param2 = bag2.getParameter(PARAM_LIST_LONG_ID); + param1.setValueFromString("10"); + assertEquals(-1, param1.compareTo(param2)); + } + + @Test + public void shouldCompareToGreaterThan() { + + ParameterBag bag1 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + ParameterBag bag2 = ModelGenerator.createParameterBag("@1", "@1", "Test"); + + Parameter param1; + Parameter param2; + + param1 = bag1.getParameter(PARAM_BOOLEAN_ID); + param2 = bag2.getParameter(PARAM_BOOLEAN_ID); + param2.setValueFromString(Boolean.FALSE.toString()); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_FLOAT_ID); + param2 = bag2.getParameter(PARAM_FLOAT_ID); + param2.setValueFromString("-10.123"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_INTEGER_ID); + param2 = bag2.getParameter(PARAM_INTEGER_ID); + param2.setValueFromString("-10"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LONG_ID); + param2 = bag2.getParameter(PARAM_LONG_ID); + param2.setValueFromString("-10876543"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_STRING_ID); + param2 = bag2.getParameter(PARAM_STRING_ID); + param2.setValueFromString("a"); + assertEquals(18, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_DATE_ID); + param2 = bag2.getParameter(PARAM_DATE_ID); + param2.setValueFromString("1970-01-01T00:00:00.000Z"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_STRING_ID); + param2 = bag2.getParameter(PARAM_LIST_STRING_ID); + param2.setValueFromString(""); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_INTEGER_ID); + param2 = bag2.getParameter(PARAM_LIST_INTEGER_ID); + param2.setValueFromString("1"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_FLOAT_ID); + param2 = bag2.getParameter(PARAM_LIST_FLOAT_ID); + param2.setValueFromString("1.0"); + assertEquals(1, param1.compareTo(param2)); + + param1 = bag1.getParameter(PARAM_LIST_LONG_ID); + param2 = bag2.getParameter(PARAM_LIST_LONG_ID); + param2.setValueFromString("10"); + assertEquals(1, param1.compareTo(param2)); + } +}