diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java index 973d8d55fa13640d987333d466fcda376c715eb4..7c94b20f817fa9e395d0027e4db06313279db29b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java @@ -57,8 +57,13 @@ import org.apache.commons.lang3.Validate; * StringBoundary#matchesNoneOfValues} returns true, which are not in the boundary. <br> * * <p>Only value "a": <br> - * {@code "a"} <br> Value "a" or value "b": <br> {@code "a","b"} <br> Not value "a" and not value - * "b": <br> {@code not("a","b")} <br> All values: <br> {@code (empty String)} + * {@code "a"} <br> + * Value "a" or value "b": <br> + * {@code "a","b"} <br> + * Not value "a" and not value "b": <br> + * {@code not("a","b")} <br> + * All values: <br> + * {@code (empty String)} */ public class StringBoundary extends AbstractBoundary<String> { @@ -105,7 +110,21 @@ public class StringBoundary extends AbstractBoundary<String> { @Override public int compareTo(Boundary o) { - return o.getText().compareTo(o.getText()); + if (!(o instanceof StringBoundary)) { + return 0; + } + StringBoundary otherStringB = (StringBoundary) o; + if (matchesAny() || matchesNoneOfValues()) { + if (otherStringB.matchesAny() || otherStringB.matchesNoneOfValues()) { + return 0; + } else { + return -1; + } + } + if (otherStringB.matchesAny() || otherStringB.matchesNoneOfValues()) { + return 1; + } + return this.getValues()[0].compareTo(otherStringB.getValues()[0]); } /** @@ -178,6 +197,7 @@ public class StringBoundary extends AbstractBoundary<String> { } private void calcHashes() { + Arrays.sort(values); valuesHashes = new int[values.length]; for (int i = 0; i < values.length; i++) { values[i] = values[i].replace('"', '\0').trim();