From 598e861560d1d2711097b7a37894671c87e9ee44 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Sat, 19 Oct 2019 17:01:02 +0200 Subject: [PATCH] BugFix Compare to of String boundary --- .../utils/boundary/impl/StringBoundary.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) 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 973d8d55..7c94b20f 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(); -- GitLab