diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterAppend.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterAppend.java index 848b72e07bd3b28bc20ff332514615e18a490667..0a0a56bdf2d4807b7f54627c9c4ef487b9d349bf 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterAppend.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterAppend.java @@ -9,6 +9,12 @@ import de.unikoblenz.fgbks.base.utils.boundary.impl.IntegerBoundary; import de.unikoblenz.fgbks.base.utils.boundary.impl.LongBoundary; import java.util.Optional; +/** + * The combine creator implementation of {@link BoundaryBiCreaterType#APPEND} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with the combined range of both + * boundaries, or an empty optional, if the creation is not possible. Both boundaries are not in + * contact. <br> In: {@code b1: [10..30[; b2: [30..50]} <br> Out: {@code ]10..50[} <br> + */ public class BiCreaterAppend extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterAppend instance = new BiCreaterAppend(); @@ -17,6 +23,11 @@ public class BiCreaterAppend extends AbstractBoundaryBiCreater<AbstractGrowingBo super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterAppend getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterBetween.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterBetween.java index f76d28bf2934960b912339a5032fc4dc1595761c..e3a18b33524abd2d8ef8bc837126293ef3994ff3 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterBetween.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterBetween.java @@ -9,6 +9,12 @@ import de.unikoblenz.fgbks.base.utils.boundary.impl.DoubleBoundary; import de.unikoblenz.fgbks.base.utils.boundary.impl.IntegerBoundary; import java.util.Optional; +/** + * The between creator implementation of {@link BoundaryBiCreaterType#BETWEEN} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with boundary between the both + * boundaries, or an empty optional, if the creation is not possible. <br> In: {@code b1: [10..20]; + * b2: [30..50]} <br> Out: {@code ]20..30[} <br> + */ public class BiCreaterBetween extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterBetween instance = new BiCreaterBetween(); @@ -17,6 +23,11 @@ public class BiCreaterBetween extends AbstractBoundaryBiCreater<AbstractGrowingB super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterBetween getInstance() { return instance; } @@ -34,9 +45,9 @@ public class BiCreaterBetween extends AbstractBoundaryBiCreater<AbstractGrowingB } // no space between the two bounds if (b1.getUpperBound().equals(b2.getLowerBound()) - && !b1.getUpperBound().equals(b2.getLowerBound()) + && !b1.getUpperBound().equals(b2.getLowerBound()) || b2.getUpperBound().equals(b1.getLowerBound()) - && !b2.getUpperBound().equals(b1.getLowerBound())) { + && !b2.getUpperBound().equals(b1.getLowerBound())) { return Optional.empty(); } if (b1 instanceof IntegerBoundary) { @@ -45,11 +56,11 @@ public class BiCreaterBetween extends AbstractBoundaryBiCreater<AbstractGrowingB int b2L = (int) b1.getLowerBound(); int b2U = (int) b1.getUpperBound(); if (b1U + 1 == b2L - && b1.getUpperBoundType() == INCLUSIVE - && b2.getLowerBoundType() == INCLUSIVE + && b1.getUpperBoundType() == INCLUSIVE + && b2.getLowerBoundType() == INCLUSIVE || b2U + 1 == b1L - && b2.getUpperBoundType() == INCLUSIVE - && b1.getLowerBoundType() == INCLUSIVE) { + && b2.getUpperBoundType() == INCLUSIVE + && b1.getLowerBoundType() == INCLUSIVE) { return Optional.empty(); } } @@ -59,11 +70,11 @@ public class BiCreaterBetween extends AbstractBoundaryBiCreater<AbstractGrowingB long b2L = (long) b1.getLowerBound(); long b2U = (long) b1.getUpperBound(); if (b1U + 1 == b2L - && b1.getUpperBoundType() == INCLUSIVE - && b2.getLowerBoundType() == INCLUSIVE + && b1.getUpperBoundType() == INCLUSIVE + && b2.getLowerBoundType() == INCLUSIVE || b2U + 1 == b1L - && b2.getUpperBoundType() == INCLUSIVE - && b1.getLowerBoundType() == INCLUSIVE) { + && b2.getUpperBoundType() == INCLUSIVE + && b1.getLowerBoundType() == INCLUSIVE) { return Optional.empty(); } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterCombine.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterCombine.java index 303e7e8ec104582cc2f81571dc80403ecb2784a2..6fa9683ee39029fd3e48792baf07ae7d9feac46e 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterCombine.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterCombine.java @@ -8,6 +8,12 @@ import static de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheckType. import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; import java.util.Optional; +/** + * The combine creator implementation of {@link BoundaryBiCreaterType#COMBINE} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with the combined range of both + * boundaries, or an empty optional, if the creation is not possible. <br> In: {@code b1: [10..20]; + * b2: [15..30]} <br> Out: {@code [10..30]} <br> + */ public class BiCreaterCombine extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterCombine instance = new BiCreaterCombine(); @@ -16,6 +22,11 @@ public class BiCreaterCombine extends AbstractBoundaryBiCreater<AbstractGrowingB super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterCombine getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterIntersection.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterIntersection.java index c9774699f80ef0c0fb2f14b12a825ab020af7a85..23f11274b327e0e781d2dad573202095d9bd1e95 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterIntersection.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterIntersection.java @@ -6,6 +6,12 @@ import static de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheckType. import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; import java.util.Optional; +/** + * The intersection creator implementation of {@link BoundaryBiCreaterType#INTERSECTION} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with intersection of both boundaries, + * or an empty optional, if the creation is not possible. <br> In: {@code b1: [10..20]; b2: + * [15..30]} <br> Out: {@code [15..20]} <br> + */ public class BiCreaterIntersection extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterIntersection instance = new BiCreaterIntersection(); @@ -14,6 +20,11 @@ public class BiCreaterIntersection extends AbstractBoundaryBiCreater<AbstractGro super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterIntersection getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterLowerBounds.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterLowerBounds.java index 2a385096e0747be737aba0d310e3a50384a023eb..c4831fab730f7c9587cb2616c8dfc1dd69176383 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterLowerBounds.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterLowerBounds.java @@ -9,6 +9,12 @@ import de.unikoblenz.fgbks.base.utils.boundary.impl.IntegerBoundary; import de.unikoblenz.fgbks.base.utils.boundary.impl.LongBoundary; import java.util.Optional; +/** + * The lower bound creator implementation of {@link BoundaryBiCreaterType#LOWER_BOUNDS} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with the lower bounds, or an empty + * optional, if the creation is not possible. <br> In: {@code b1: [10..20]; b2: [15..30]} <br> Out: + * {@code [10..15[} <br> + */ public class BiCreaterLowerBounds extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterLowerBounds instance = new BiCreaterLowerBounds(); @@ -17,6 +23,11 @@ public class BiCreaterLowerBounds extends AbstractBoundaryBiCreater<AbstractGrow super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterLowerBounds getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringAppend.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringAppend.java index dc77ebb0d91992476773725c481b478e1c0ccea5..a4a9cae687bbb1ef2c8b5676590c428bd75b2acd 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringAppend.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringAppend.java @@ -7,6 +7,12 @@ import de.unikoblenz.fgbks.base.utils.boundary.Boundary; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; import java.util.Optional; +/** + * The between creator implementation of {@link BoundaryBiCreaterType#BETWEEN} for {@link + * StringBoundary}. <br> The result is a new boundary with boundary between the both boundaries, or + * an empty optional, if the creation is not possible. The boundaries are not in contact. <br> In: + * {@code b1: "a"; b2: "b"} <br> Out: {@code not("a","b")} <br> + */ public class BiCreaterStringAppend extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringAppend instance = new BiCreaterStringAppend(); @@ -15,6 +21,11 @@ public class BiCreaterStringAppend extends AbstractBoundaryBiCreater<StringBound super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringAppend getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringBetween.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringBetween.java index 295615f5e00d0d2705940e33a8cbdf799dbb719c..576e841937526af9659bf210868a3e86a2bff1c1 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringBetween.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringBetween.java @@ -6,6 +6,12 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; +/** + * The between creator implementation of {@link BoundaryBiCreaterType#BETWEEN} for {@link + * StringBoundary}. <br> The result is a new boundary with boundary between the both boundaries, or + * an empty optional, if the creation is not possible. <br> In: {@code b1: "a"; b2: "b"} <br> Out: + * {@code not("a","b")} <br> + */ public class BiCreaterStringBetween extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringBetween instance = new BiCreaterStringBetween(); @@ -14,6 +20,11 @@ public class BiCreaterStringBetween extends AbstractBoundaryBiCreater<StringBoun super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringBetween getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java index 50f6c12a1e985afc397b8f8f9abdc43cc4359dd3..dfa683e434b8562adb8b469cbeac7539c6d5d66e 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java @@ -6,6 +6,12 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; +/** + * The combine creator implementation of {@link BoundaryBiCreaterType#COMBINE} for {@link + * StringBoundary}. <br> The result is a new boundary with the combined range of both boundaries, or + * an empty optional, if the creation is not possible. <br> In: {@code b1: "a"; b2: "b"} <br> Out: + * {@code "a","b"} <br> + */ public class BiCreaterStringCombine extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringCombine instance = new BiCreaterStringCombine(); @@ -14,6 +20,11 @@ public class BiCreaterStringCombine extends AbstractBoundaryBiCreater<StringBoun super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringCombine getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringIntersection.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringIntersection.java index 2cbe4f9f21c27cfa5c17f3ec1cac6f30e42e3ce2..d377c390f6feb0817543253a2d574cd11bc4558a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringIntersection.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringIntersection.java @@ -10,6 +10,12 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +/** + * The intersection creator implementation of {@link BoundaryBiCreaterType#INTERSECTION} for {@link + * StringBoundary}. <br> The result is a new boundary with intersection of both boundaries, or an + * empty optional, if the creation is not possible. <br> In: {@code b1: "a" b2: "a","b"} <br> Out: + * {@code "a"} <br> + */ public class BiCreaterStringIntersection extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringIntersection instance = new BiCreaterStringIntersection(); @@ -18,6 +24,11 @@ public class BiCreaterStringIntersection extends AbstractBoundaryBiCreater<Strin super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringIntersection getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringLowerBounds.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringLowerBounds.java index 6cab93a7e80749fc6dc4fe8bf9b5ee56c3cdb2f5..3dd7e3a9923298b5149e47687c6834962f3c3eba 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringLowerBounds.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringLowerBounds.java @@ -9,6 +9,11 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; +/** + * The lower bound creator implementation of {@link BoundaryBiCreaterType#LOWER_BOUNDS} for {@link + * StringBoundary}. <br> The result is a new boundary with the lower bounds, or an empty optional, + * if the creation is not possible. <br> In: {@code b1: "a","b"; b2: "a"}<br> Out: {@code "b"} <br> + */ public class BiCreaterStringLowerBounds extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringLowerBounds instance = new BiCreaterStringLowerBounds(); @@ -17,6 +22,11 @@ public class BiCreaterStringLowerBounds extends AbstractBoundaryBiCreater<String super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringLowerBounds getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringUpperBounds.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringUpperBounds.java index 1f449d7026741e5904c719a24d9c8b6d071cbf0b..04574156ce1fff94a3204ec3fba58ef5c7693906 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringUpperBounds.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringUpperBounds.java @@ -3,6 +3,11 @@ package de.unikoblenz.fgbks.base.utils.boundary.bicreater; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; import java.util.Optional; +/** + * The upper bound creator implementation of {@link BoundaryBiCreaterType#UPPER_BOUNDS} for {@link + * StringBoundary}. <br> The result is a new boundary is always empty. See {@link + * BiCreaterStringLowerBounds} instead. + */ public class BiCreaterStringUpperBounds extends AbstractBoundaryBiCreater<StringBoundary> { private static final BiCreaterStringUpperBounds instance = new BiCreaterStringUpperBounds(); @@ -11,6 +16,11 @@ public class BiCreaterStringUpperBounds extends AbstractBoundaryBiCreater<String super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterStringUpperBounds getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterUpperBounds.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterUpperBounds.java index eec40d2a27ef23632f14ee15fd7df309b8cc003b..e0c531ddf0d08e2fea53f79845a2bf7df184eca4 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterUpperBounds.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterUpperBounds.java @@ -9,6 +9,12 @@ import de.unikoblenz.fgbks.base.utils.boundary.impl.IntegerBoundary; import de.unikoblenz.fgbks.base.utils.boundary.impl.LongBoundary; import java.util.Optional; +/** + * The upper bound creator implementation of {@link BoundaryBiCreaterType#UPPER_BOUNDS} for {@link + * AbstractGrowingBoundary}. <br> The result is a new boundary with the upper bounds, or an empty + * optional, if the creation is not possible. <br> In: {@code b1: [10..20]; b2: [15..30]} <br> Out: + * {@code ]20..30]} <br> + */ public class BiCreaterUpperBounds extends AbstractBoundaryBiCreater<AbstractGrowingBoundary> { private static final BiCreaterUpperBounds instance = new BiCreaterUpperBounds(); @@ -17,6 +23,11 @@ public class BiCreaterUpperBounds extends AbstractBoundaryBiCreater<AbstractGrow super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static BiCreaterUpperBounds getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreater.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreater.java index 0a70608094ba2ce3c596d7f7fb50c69afd6ab537..2f1ad60b79b9edeaf0cd2981cf740e67fddc6b25 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreater.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreater.java @@ -3,9 +3,27 @@ package de.unikoblenz.fgbks.base.utils.boundary.bicreater; import de.unikoblenz.fgbks.base.utils.boundary.Boundary; import java.util.Optional; +/** + * The biCreater interface. Used to create a new Boundary of a given one and an other boundary with + * a modification, specified by the {@link BoundaryBiCreaterType}. + * + * @param <T> the boundary type + */ public interface BoundaryBiCreater<T extends Boundary> { + /** + * Get the {@link BoundaryBiCreaterType}. + * + * @return the {@link BoundaryBiCreaterType} + */ BoundaryBiCreaterType getType(); + /** + * Perform the creation of a new boundary with the given two boundaries. + * + * @param b1 one boundary + * @param b2 the other boundary + * @return An optional with a new boundary or an empty optional, if the creation fails. + */ Optional<T> create(T b1, T b2); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreaterType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreaterType.java index 60289a0e48596474a7177a6f9f578cb0f6fbe53a..b83049ef6ae5626927b43b4f5ba0b8381667e96c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreaterType.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BoundaryBiCreaterType.java @@ -1,10 +1,34 @@ package de.unikoblenz.fgbks.base.utils.boundary.bicreater; public enum BoundaryBiCreaterType { + /** + * Type, that indicates, that the creater should create a new boundary, which is the intersection + * of the two boundaries. + */ INTERSECTION, + /** + * Type, that indicates, that the creater should create a new boundary with the lower bounds of + * both boundaries. + */ LOWER_BOUNDS, + /** + * Type, that indicates, that the creater should create a new boundary with the upper bounds of + * both boundaries. + */ UPPER_BOUNDS, + /** + * Type, that indicates, that the creater should create a new boundary, which is between the both + * boundaries. + */ BETWEEN, + /** + * Type, that indicates, that the creater should create a new boundary, which is a combination of + * the both boundaries. However, both boundaries are not in contact. + */ APPEND, - COMBINE; + /** + * Type, that indicates, that the creater should create a new boundary, which is a combination of + * the both boundaries. Both boundaries can be in contact. (UNION) + */ + COMBINE } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/EmptyBiCreater.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/EmptyBiCreater.java index e3251828d1bcc378014d1b719b5aafd40c5f820b..2eb770dda2535ef402950932b7bb38da8880b87b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/EmptyBiCreater.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/EmptyBiCreater.java @@ -3,6 +3,9 @@ package de.unikoblenz.fgbks.base.utils.boundary.bicreater; import de.unikoblenz.fgbks.base.utils.boundary.Boundary; import java.util.Optional; +/** + * The empty bi creater returns always an empty optional. + */ public class EmptyBiCreater extends AbstractBoundaryBiCreater<Boundary> { private static final EmptyBiCreater instance = new EmptyBiCreater(); @@ -11,6 +14,11 @@ public class EmptyBiCreater extends AbstractBoundaryBiCreater<Boundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static EmptyBiCreater getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheck.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheck.java index 3ba0854d00f40cc8bfb511a10768be02487538be..c497b4f33f8faf5120373d6bbd5d4d1066f5b873 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheck.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheck.java @@ -2,9 +2,27 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.Boundary; +/** + * The checker interface. Used to check something between two boundaries, specified by the {@link + * BoundaryCheckType}. + * + * @param <T> the boundary type + */ public interface BoundaryCheck<T extends Boundary> { + /** + * Get the {@link BoundaryCheckType}. + * + * @return the {@link BoundaryCheckType} + */ BoundaryCheckType getType(); + /** + * Perform the check between the two boundaries. + * + * @param b1 one boundary + * @param b2 the other boundary + * @return true, if the check return true. + */ boolean check(T b1, T b2); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheckType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheckType.java index d6d849ab833e113a7e42406708e3dc6ae15d1ffc..c85b15e99a7a466ae6ea18ca6d01107ea24ded2c 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheckType.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/BoundaryCheckType.java @@ -1,10 +1,34 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; public enum BoundaryCheckType { + /** + * Type, that indicates, that the checker should check, if one boundary is equal to the other + * boundary. + */ IS_EQUAL, + /** + * Type, that indicates, that the checker should check, if one boundary subsumes the other + * boundary or the other boundary subsumes the first boundary. + */ IS_SUBSUMPTION, + /** + * Type, that indicates, that the checker should check, if one boundary subsumes the other + * boundary. + */ SUBSUMES, + /** + * Type, that indicates, that the checker should check, if one boundary is in contact to the other + * boundary. + */ IS_IN_CONTACT, + /** + * Type, that indicates, that the checker should check, if one boundary is not in contact to the + * other boundary. + */ IS_NOT_IN_CONTACT, - IS_OVERLAPPING; + /** + * Type, that indicates, that the checker should check, if one boundary is overlapping with the + * other boundary. + */ + IS_OVERLAPPING } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckEqual.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckEqual.java index fe5c2ac2c70953c5c15143ba931e7bae4524123f..1f2f77912cac6d1084d507cb45e2651ee0829cc3 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckEqual.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckEqual.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The equal checker implementation of {@link BoundaryCheckType#IS_EQUAL} for {@link + * AbstractGrowingBoundary}. <br> The check returns true, if the first boundary is equal to the + * other boundary. <br> E.g: <br> + * + * <ul> + * <li>b1 = "= 1"; b2 = "= 1" -> true + * <li>b1 = "<= 1"; b2 = "< 2" -> true (Integer or Long) / false (others) + * <li>b1 = "[0..20]"; b2 = "[4..22]" -> false + * </ul> + */ public class CheckEqual extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckEqual instance = new CheckEqual(); @@ -10,6 +21,11 @@ public class CheckEqual extends AbstractBoundaryCheck<AbstractGrowingBoundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckEqual getInstance() { return instance; } @@ -24,6 +40,7 @@ public class CheckEqual extends AbstractBoundaryCheck<AbstractGrowingBoundary> { return checkEqual(b1, b2); } + /** see {@link CheckEqual} */ public static boolean checkEqual(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { if (b1 == b2) { return true; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java index c2a3fa790cc8f62951c961c803185bf65c4bbf0b..bcb74f14d8c3d264d7e39b083c7ad085badb781b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckInContact.java @@ -4,6 +4,19 @@ import static de.unikoblenz.fgbks.base.utils.boundary.BoundType.INCLUSIVE; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The in contact checker implementation of {@link BoundaryCheckType#IS_IN_CONTACT} for {@link + * AbstractGrowingBoundary}. <br> The check returns true, if the first boundary is in contact with + * the other boundary. + * <br> + * E.g: <br> + * + * <ul> + * <li>b1 = "= 1"; b2 = "= 1" -> true + * <li>b1 = "<= 1"; b2 = "< 2" -> true + * <li>b1 = "[0..20]"; b2 = "]20..22]" -> false + * </ul> + */ public class CheckInContact extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckInContact instance = new CheckInContact(); @@ -12,6 +25,11 @@ public class CheckInContact extends AbstractBoundaryCheck<AbstractGrowingBoundar super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckInContact getInstance() { return instance; } @@ -26,6 +44,9 @@ public class CheckInContact extends AbstractBoundaryCheck<AbstractGrowingBoundar return checkInContact(b1, b2); } + /** + * see {@link CheckInContact} + */ public static boolean checkInContact(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { // TODO: check raw types if (b1.getLowerBound().compareTo(b2.getLowerBound()) <= 0) { diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckIsSubsumption.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckIsSubsumption.java index 435747b3f5fbb1e11717c57fb21273b4c2973621..086936383ba90fd1fe7a77955f4f9aa0b3cabc70 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckIsSubsumption.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckIsSubsumption.java @@ -2,6 +2,19 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The subsumes checker implementation of {@link BoundaryCheckType#IS_SUBSUMPTION} for {@link + * AbstractGrowingBoundary}. <br> The check returns true, if the first boundary completely subsumes + * (not equal) the other boundary or the other way around. + * <br> + * E.g: <br> + * + * <ul> + * <li>b1 = "[0..20]"; b2 = "[4..19]" -> true + * <li>b1 = "[4..19]"; b2 = "[1..19]" -> true + * <li>b1 = "[0..20]"; b2 = "[4..22]" -> false + * </ul> + */ public class CheckIsSubsumption extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckIsSubsumption instance = new CheckIsSubsumption(); @@ -10,6 +23,11 @@ public class CheckIsSubsumption extends AbstractBoundaryCheck<AbstractGrowingBou super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckIsSubsumption getInstance() { return instance; } @@ -24,6 +42,9 @@ public class CheckIsSubsumption extends AbstractBoundaryCheck<AbstractGrowingBou return checkIsSubsumption(b1, b2); } + /** + * see {@link CheckIsSubsumption} + */ public static boolean checkIsSubsumption(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { return CheckSubsumes.checkSubsumes(b1, b2) || CheckSubsumes.checkSubsumes(b2, b1); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java index 21033ba96fef360a1848cb8c1aedda73eac5a754..3f8a787eb0a6a3f56c25c964193fbf5fed5ddef4 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckNotInContact.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The not in contact checker implementation of {@link BoundaryCheckType#IS_NOT_IN_CONTACT} for + * {@link AbstractGrowingBoundary}. <br> The check returns true, if the first boundary is not in + * contact with the other boundary. <br> E.g: <br> + * + * <ul> + * <li>b1 = "= 1"; b2 = "= 1" -> false + * <li>b1 = "<= 1"; b2 = "< 2" -> false + * <li>b1 = "[0..20]"; b2 = "]20..22]" -> true + * </ul> + */ public class CheckNotInContact extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckNotInContact instance = new CheckNotInContact(); @@ -10,6 +21,11 @@ public class CheckNotInContact extends AbstractBoundaryCheck<AbstractGrowingBoun super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckNotInContact getInstance() { return instance; } @@ -23,4 +39,11 @@ public class CheckNotInContact extends AbstractBoundaryCheck<AbstractGrowingBoun public boolean check(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { return !CheckInContact.checkInContact(b1, b2); } + + /** + * see {@link CheckNotInContact} + */ + public static boolean checkNotInContact(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { + return !CheckInContact.checkInContact(b1, b2); + } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckOverlap.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckOverlap.java index 380531ba3705abc01a3d6a45b73e66ee18d6c096..0b5639eaea96c745056835c7344274eec64550e6 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckOverlap.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckOverlap.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The overlap checker implementation of {@link BoundaryCheckType#IS_OVERLAPPING} for {@link + * AbstractGrowingBoundary}. <br> The check returns true, if the first boundary is overlapping the + * other boundary (not equal and no subsumption). <br> E.g: <br> + * + * <ul> + * <li>b1 = "<= 1"; b2 = ">= 0" -> true + * <li>b1 = "<= 1"; b2 = "< 2" -> false (for integer/long) / true for double + * <li>b1 = "[0..20]"; b2 = "[4..22]" -> true + * </ul> + */ public class CheckOverlap extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckOverlap instance = new CheckOverlap(); @@ -10,6 +21,11 @@ public class CheckOverlap extends AbstractBoundaryCheck<AbstractGrowingBoundary> super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckOverlap getInstance() { return instance; } @@ -24,6 +40,7 @@ public class CheckOverlap extends AbstractBoundaryCheck<AbstractGrowingBoundary> return checkOverlapping(b1, b2); } + /** see {@link CheckOverlap} */ public static boolean checkOverlapping(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { return CheckInContact.checkInContact(b1, b2) && !CheckEqual.checkEqual(b1, b2) diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringEqual.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringEqual.java index 6bda6074c68ffdbba387af4b05781ff4a22448b4..24b85844675e0eb6e8f4ea0313fb3639cb688586 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringEqual.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringEqual.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +/** + * The equal checker implementation of {@link BoundaryCheckType#IS_EQUAL} for {@link + * StringBoundary}. <br> The check returns true, if the first boundary is equal to the other + * boundary. <br> E.g: <br> + * + * <ul> + * <li>b1 = "a"; b2 = "a" -> true + * <li>b1 = "not("a","b"); b2 = "not("a","b")" -> true + * <li>b1 = "a","b"; b2 = "a" -> false + * </ul> + */ public class CheckStringEqual extends AbstractBoundaryCheck<StringBoundary> { private static CheckStringEqual instance = new CheckStringEqual(); @@ -10,6 +21,11 @@ public class CheckStringEqual extends AbstractBoundaryCheck<StringBoundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringEqual getInstance() { return instance; } @@ -24,6 +40,7 @@ public class CheckStringEqual extends AbstractBoundaryCheck<StringBoundary> { return checkEqual(b1, b2); } + /** see {@link CheckStringEqual} */ public static boolean checkEqual(StringBoundary b1, StringBoundary b2) { if (b1 == b2 || b1.getText().equals(b2.getText()) || b1.matchesAny() && b2.matchesAny()) { return true; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringInContact.java index f4f1b1725a35d51f80cb7b53ff958e12588d03f2..3dc1cdd19c4b91b316ee6bd16c3814daa1a7a7f8 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringInContact.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringInContact.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +/** + * The in contact checker implementation of {@link BoundaryCheckType#IS_IN_CONTACT} for {@link + * StringBoundary}. <br> The check returns true, if the first boundary is in contact with the other + * boundary. <br> E.g: <br> + * + * <ul> + * <li>b1 = "a"; b2 = "a" -> true + * <li>b1 = "not("a","b"); b2 = "not("a","b")" -> true + * <li>b1 = "a","b"; b2 = "c" -> false + * </ul> + */ public class CheckStringInContact extends AbstractBoundaryCheck<StringBoundary> { private static CheckStringInContact instance = new CheckStringInContact(); @@ -10,6 +21,11 @@ public class CheckStringInContact extends AbstractBoundaryCheck<StringBoundary> super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringInContact getInstance() { return instance; } @@ -23,7 +39,7 @@ public class CheckStringInContact extends AbstractBoundaryCheck<StringBoundary> public boolean check(StringBoundary b1, StringBoundary b2) { return checkInContact(b1, b2); } - + /** see {@link CheckStringInContact} */ public static boolean checkInContact(StringBoundary b1, StringBoundary b2) { if (b1.matchesAny() || b2.matchesAny() diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringNotInContact.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringNotInContact.java index 2bc266afd92ef184c495398bcbef4be32b68ebf1..6d0abf7749fbc449bbcebbf09fe4f41c2fb21136 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringNotInContact.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringNotInContact.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +/** + * The not in contact checker implementation of {@link BoundaryCheckType#IS_NOT_IN_CONTACT} for + * {@link StringBoundary}. <br> The check returns true, if the first boundary is not in contact with + * the other boundary. <br> E.g: <br> + * + * <ul> + * <li>b1 = "a"; b2 = "a" -> false + * <li>b1 = "not("a","b"); b2 = "not("a","b")" -> false + * <li>b1 = "a","b"; b2 = "c" -> true + * </ul> + */ public class CheckStringNotInContact extends AbstractBoundaryCheck<StringBoundary> { private static CheckStringNotInContact instance = new CheckStringNotInContact(); @@ -10,6 +21,11 @@ public class CheckStringNotInContact extends AbstractBoundaryCheck<StringBoundar super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringNotInContact getInstance() { return instance; } @@ -23,7 +39,7 @@ public class CheckStringNotInContact extends AbstractBoundaryCheck<StringBoundar public boolean check(StringBoundary b1, StringBoundary b2) { return checkNotInContact(b1, b2); } - + /** see {@link CheckStringNotInContact} */ public static boolean checkNotInContact(StringBoundary b1, StringBoundary b2) { return !CheckStringInContact.checkInContact(b1, b2); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringOverlap.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringOverlap.java index 954d82beaab50ab6a163656756aa94980d6bf1c9..9e4116f66c1d20b856f97cc87a5c8a249117e363 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringOverlap.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringOverlap.java @@ -2,6 +2,17 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +/** + * The overlap checker implementation of {@link BoundaryCheckType#IS_OVERLAPPING} for {@link + * StringBoundary}. <br> The check returns true, if the first boundary is overlapping with the other + * boundary (not equal and no subsumption). <br> E.g: <br> + * + * <ul> + * <li>b1 = "a"; b2 = "a" -> false + * <li>b1 = "not("a","b"); b2 = "not("a","b")" -> false + * <li>b1 = "a","b"; b2 = "b" -> true + * </ul> + */ public class CheckStringOverlap extends AbstractBoundaryCheck<StringBoundary> { private static CheckStringOverlap instance = new CheckStringOverlap(); @@ -10,6 +21,11 @@ public class CheckStringOverlap extends AbstractBoundaryCheck<StringBoundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringOverlap getInstance() { return instance; } @@ -24,6 +40,7 @@ public class CheckStringOverlap extends AbstractBoundaryCheck<StringBoundary> { return checkSubsumption(b1, b2); } + /** see {@link CheckStringOverlap} */ public static boolean checkSubsumption(StringBoundary b1, StringBoundary b2) { return CheckStringInContact.checkInContact(b1, b2) && !CheckStringEqual.checkEqual(b1, b2) diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumes.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumes.java index 14f773f2e7f6b4f34cf2bdf441eb7ca166d1831a..fe3720f0556d4b94a4066b5dbfa84cb3851cef3d 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumes.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumes.java @@ -2,6 +2,18 @@ package de.unikoblenz.fgbks.base.utils.boundary.checker; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +/** + * The subsumes checker implementation of {@link BoundaryCheckType#SUBSUMES} for {@link + * StringBoundary}. <br> The check returns true, if the first boundary completely subsumes (not + * equal) the other boundary. + * <br> + * E.g: <br> + * + * <ul> + * <li>b1 = "a","b"; b2 = "a" -> true + * <li>b1 = "a"; b2 = "b" -> false + * </ul> + */ public class CheckStringSubsumes extends AbstractBoundaryCheck<StringBoundary> { private static CheckStringSubsumes instance = new CheckStringSubsumes(); @@ -10,6 +22,11 @@ public class CheckStringSubsumes extends AbstractBoundaryCheck<StringBoundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringSubsumes getInstance() { return instance; } @@ -24,6 +41,9 @@ public class CheckStringSubsumes extends AbstractBoundaryCheck<StringBoundary> { return checkSubsumes(b1, b2); } + /** + * see {@link CheckStringSubsumes} + */ public static boolean checkSubsumes(StringBoundary b1, StringBoundary b2) { if (b1.matchesAny() && !b2.matchesAny()) { return true; diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumption.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumption.java index 6ab3e0727401d7b08bb5ab853ce6fe46717a66f2..acd1b9329c5df2c73f5af7492e3c745dbf3a6c4f 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumption.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckStringSubsumption.java @@ -10,6 +10,11 @@ public class CheckStringSubsumption extends AbstractBoundaryCheck<StringBoundary super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckStringSubsumption getInstance() { return instance; } @@ -24,6 +29,9 @@ public class CheckStringSubsumption extends AbstractBoundaryCheck<StringBoundary return checkSubsumption(b1, b2); } + /** + * see {@link CheckStringSubsumption} + */ public static boolean checkSubsumption(StringBoundary b1, StringBoundary b2) { return CheckStringSubsumes.checkSubsumes(b1, b2) || CheckStringSubsumes.checkSubsumes(b2, b1); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckSubsumes.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckSubsumes.java index 4ee2b429bc6b19c3b0684060735f42fb421069e7..5e74a3da0b0dcd90dc402aca92608292b5a2e442 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckSubsumes.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/checker/CheckSubsumes.java @@ -5,6 +5,19 @@ import static de.unikoblenz.fgbks.base.utils.boundary.BoundType.INCLUSIVE; import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; +/** + * The subsumes checker implementation of {@link BoundaryCheckType#SUBSUMES} for {@link + * AbstractGrowingBoundary}. <br> The check returns true, if the first boundary completely subsumes + * (not equal) the other boundary. + * <br> + * E.g: <br> + * + * <ul> + * <li>b1 = "[0..20]"; b2 = "[4..19]" -> true + * <li>b1 = "[4..19]"; b2 = "[1..19]" -> false + * <li>b1 = "[0..20]"; b2 = "[4..22]" -> false + * </ul> + */ public class CheckSubsumes extends AbstractBoundaryCheck<AbstractGrowingBoundary> { private static final CheckSubsumes instance = new CheckSubsumes(); @@ -13,6 +26,11 @@ public class CheckSubsumes extends AbstractBoundaryCheck<AbstractGrowingBoundary super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CheckSubsumes getInstance() { return instance; } @@ -27,6 +45,9 @@ public class CheckSubsumes extends AbstractBoundaryCheck<AbstractGrowingBoundary return checkSubsumes(b1, b2); } + /** + * see {@link CheckSubsumes} + */ public static boolean checkSubsumes(AbstractGrowingBoundary b1, AbstractGrowingBoundary b2) { // TODO: check raw types int compLo = b1.getLowerBound().compareTo(b2.getLowerBound()); @@ -37,20 +58,18 @@ public class CheckSubsumes extends AbstractBoundaryCheck<AbstractGrowingBoundary if (compLo > 0 || compUp < 0 || (compLo == 0 - && b1.getLowerBoundType() == EXCLUSIVE - && b2.getLowerBoundType() == INCLUSIVE) + && b1.getLowerBoundType() == EXCLUSIVE + && b2.getLowerBoundType() == INCLUSIVE) || (compUp == 0 - && b1.getUpperBoundType() == EXCLUSIVE - && b2.getUpperBoundType() == INCLUSIVE)) { + && b1.getUpperBoundType() == EXCLUSIVE + && b2.getUpperBoundType() == INCLUSIVE)) { return false; } if (compLo == 0 && b1.getLowerBoundType() != b2.getLowerBoundType() || compUp == 0 && b1.getUpperBoundType() != b2.getUpperBoundType()) { return true; - } else if ((compLo + compUp) == 0) { - return false; } else { - return true; + return (compLo + compUp) != 0; } } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreater.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreater.java index 112582c2c8e7fec9fef8da5b7e5e643424818bea..e2d14c0d53cb47000462f3e21a149d3a114d03e5 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreater.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreater.java @@ -3,9 +3,26 @@ package de.unikoblenz.fgbks.base.utils.boundary.creater; import de.unikoblenz.fgbks.base.utils.boundary.Boundary; import java.util.Optional; +/** + * The creater interface. Used to create a new Boundary of a given one with a modification, + * specified by the {@link BoundaryCreaterType}. + * + * @param <T> the boundary type + */ public interface BoundaryCreater<T extends Boundary> { + /** + * Get the {@link BoundaryCreaterType}. + * + * @return the {@link BoundaryCreaterType} + */ BoundaryCreaterType getType(); + /** + * Perform the creation of a new boundary with the given boundary. + * + * @param b the boundary + * @return An optional with a new boundary or an empty optional, if the creation fails. + */ Optional<T> create(T b); } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreaterType.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreaterType.java index f240c05bb00a0e8bcefc18c15664f4f48d54a0cf..90566c8349ba38e8e3440a291d1a326a3e62bf25 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreaterType.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/BoundaryCreaterType.java @@ -1,6 +1,14 @@ package de.unikoblenz.fgbks.base.utils.boundary.creater; public enum BoundaryCreaterType { + /** + * Type, that indicates, that the creator should build a new boundary, which is lower than the + * current boundary. + */ LOWER, - UPPER; + /** + * Type, that indicates, that the creator should build a new boundary, which is higher than the + * current boundary. + */ + UPPER } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterLower.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterLower.java index ce669e9f43cdf4c0c9c3b39c6e7120e942173768..4562f00d4520cbdc45f5c101bccbef452aecf53b 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterLower.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterLower.java @@ -4,6 +4,11 @@ import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; import de.unikoblenz.fgbks.base.utils.boundary.BoundType; import java.util.Optional; +/** + * The upper creator implementation of {@link BoundaryCreaterType#LOWER} for {@link + * AbstractGrowingBoundary}. <br> The result is the complete range of values, which are lower than + * the current boundary.<br> In: {@code >5} <br> Out: {@code <=5} <br> + */ public class CreaterLower extends AbstractBoundaryCreater<AbstractGrowingBoundary> { private static final CreaterLower instance = new CreaterLower(); @@ -12,6 +17,11 @@ public class CreaterLower extends AbstractBoundaryCreater<AbstractGrowingBoundar super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CreaterLower getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringLower.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringLower.java index 6543901acbe17bc6f2ecdf2670de93b91cc0d12b..9c372d6dc85b410c19f7296a4c33520ac685d535 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringLower.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringLower.java @@ -3,6 +3,12 @@ package de.unikoblenz.fgbks.base.utils.boundary.creater; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; import java.util.Optional; +/** + * The upper creator implementation of {@link BoundaryCreaterType#LOWER} for {@link + * StringBoundary}. + * <br> + * The result is the set of all strings which are NOT the current StringBoundary. + */ public class CreaterStringLower extends AbstractBoundaryCreater<StringBoundary> { private static final CreaterStringLower instance = new CreaterStringLower(); @@ -11,6 +17,11 @@ public class CreaterStringLower extends AbstractBoundaryCreater<StringBoundary> super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CreaterStringLower getInstance() { return instance; } @@ -22,10 +33,11 @@ public class CreaterStringLower extends AbstractBoundaryCreater<StringBoundary> @Override public Optional<StringBoundary> create(StringBoundary b) { - return Optional.of(StringBoundary.getBuilder() - .addValues(b.getValues()) - .matchesNoneOfValues(!b.matchesNoneOfValues()) - .matchesAny(b.getAmountOfElements() == 0) - .build()); + return Optional.of( + StringBoundary.getBuilder() + .addValues(b.getValues()) + .matchesNoneOfValues(!b.matchesNoneOfValues()) + .matchesAny(b.getAmountOfElements() == 0) + .build()); } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringUpper.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringUpper.java index 00e08a004bc68dcb6183ffcedfb2f7749e4f90f7..90876e2147a1d691a38da461cc2485216f810baf 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringUpper.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterStringUpper.java @@ -3,6 +3,13 @@ package de.unikoblenz.fgbks.base.utils.boundary.creater; import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; import java.util.Optional; +/** + * The upper creator implementation of {@link BoundaryCreaterType#UPPER} for {@link + * StringBoundary}. + * <br> + * For the String creater this result is always empty. Use {@link BoundaryCreaterType#LOWER} and + * {@link CreaterStringLower}. + */ public class CreaterStringUpper extends AbstractBoundaryCreater<StringBoundary> { private static final CreaterStringUpper instance = new CreaterStringUpper(); @@ -11,6 +18,11 @@ public class CreaterStringUpper extends AbstractBoundaryCreater<StringBoundary> super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CreaterStringUpper getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterUpper.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterUpper.java index 8fe0b3cacda630eb6b593acd03a3e8b08ad106ca..180835e41a77c507acc085e5c1c99d8b9d87cd23 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterUpper.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/CreaterUpper.java @@ -4,6 +4,11 @@ import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary; import de.unikoblenz.fgbks.base.utils.boundary.BoundType; import java.util.Optional; +/** + * The upper creator implementation of {@link BoundaryCreaterType#UPPER} for {@link + * AbstractGrowingBoundary}. <br> The result is the complete range of values, which are higher than + * the current boundary.<br> In: {@code <=5} <br> Out: {@code >5} <br> + */ public class CreaterUpper extends AbstractBoundaryCreater<AbstractGrowingBoundary> { private static final CreaterUpper instance = new CreaterUpper(); @@ -12,6 +17,11 @@ public class CreaterUpper extends AbstractBoundaryCreater<AbstractGrowingBoundar super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static CreaterUpper getInstance() { return instance; } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/EmptyCreater.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/EmptyCreater.java index eeec9f3d27e5095fe9d650c84555ffa154baa12e..e742689b548631009103bf5ebd1573cdac1b00ce 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/EmptyCreater.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/creater/EmptyCreater.java @@ -11,6 +11,11 @@ public class EmptyCreater extends AbstractBoundaryCreater<Boundary> { super(); } + /** + * Get the current instance of this class. + * + * @return the singleton instance + */ public static EmptyCreater getInstance() { return instance; }