Skip to content
Snippets Groups Projects
Commit fa3bb584 authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Add equal Check for String values

parent 18a241d5
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@ package de.unikoblenz.fgbks.base.utils.boundary;
import de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheck;
import de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheckType;
import de.unikoblenz.fgbks.base.utils.boundary.impl.InvalidBoundary;
import de.unikoblenz.fgbks.core.dmn.domain.vdmn.VTypeRef;
import java.util.HashMap;
import org.apache.commons.lang3.Validate;
......@@ -32,6 +33,9 @@ public abstract class AbstractBoundary<T extends Comparable<? super T>> implemen
@Override
public boolean checkWith(BoundaryCheckType checkType, Boundary other) {
if (other instanceof InvalidBoundary) {
return false;
}
BoundaryCheck checkFunction = getTestFunction(checkType);
if (checkFunction == null || !isValidOperation(checkType, other)) {
throw new BoundaryOperationNotSupportedException(); // TODO: add error text
......
......@@ -4,16 +4,13 @@ import de.unikoblenz.fgbks.base.utils.boundary.AbstractGrowingBoundary;
public class CheckEqual extends AbstractBoundaryCheck<AbstractGrowingBoundary> {
private static CheckEqual instance;
private static final CheckEqual instance = new CheckEqual();
private CheckEqual() {
super();
}
public static CheckEqual getInstance() {
if (instance == null) {
instance = new CheckEqual();
}
return instance;
}
......
package de.unikoblenz.fgbks.base.utils.boundary.checker;
import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary;
public class CheckEqualString extends AbstractBoundaryCheck<StringBoundary> {
private static CheckEqualString instance = new CheckEqualString();
public static CheckEqualString getInstance() {
return instance;
}
@Override
public BoundaryCheckType getType() {
return BoundaryCheckType.IS_EQUAL;
}
@Override
public boolean check(StringBoundary b1, StringBoundary b2) {
if (b1 == b2 || b1.getText().equals(b2.getText()) || b1.isMatchAny() && b2.isMatchAny()) {
return true;
}
if (b1.isMatchNoneOfValues() != b2.isMatchNoneOfValues()
|| b1.getAmountOfElements() != b2.getAmountOfElements()) {
return false;
}
// hashes are sorted while boundary creation
int[] h1 = b1.getValuesHashes();
int[] h2 = b2.getValuesHashes();
for (int i = 0; i < h1.length; i++) {
if (h1[i] != h2[i]) {
return false;
}
}
return true;
}
}
......@@ -5,6 +5,7 @@ import de.unikoblenz.fgbks.base.utils.boundary.Boundary;
import de.unikoblenz.fgbks.base.utils.boundary.BoundaryParseException;
import de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheck;
import de.unikoblenz.fgbks.base.utils.boundary.checker.BoundaryCheckType;
import de.unikoblenz.fgbks.base.utils.boundary.checker.CheckEqualString;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Objects;
......@@ -26,6 +27,26 @@ public class StringBoundary extends AbstractBoundary<String> {
return o.getText().compareTo(o.getText());
}
public boolean isMatchNoneOfValues() {
return matchNoneOfValues;
}
public boolean isMatchAny() {
return matchAny;
}
public String[] getValues() {
return values.clone(); // performance ?
}
public int[] getValuesHashes() {
return valuesHashes.clone(); // performance ?
}
public int getAmountOfElements() {
return values.length;
}
@Override
protected void parse(String text) {
matchNoneOfValues = false;
......@@ -47,6 +68,8 @@ public class StringBoundary extends AbstractBoundary<String> {
valuesHashes[i] = Objects.hashCode(values[i]);
}
}
// Sort hashes for later comparisons
Arrays.sort(valuesHashes);
} catch (Exception e) {
throw new BoundaryParseException("String value is not valid: " + this.getText());
}
......@@ -59,7 +82,9 @@ public class StringBoundary extends AbstractBoundary<String> {
@Override
protected HashMap<BoundaryCheckType, BoundaryCheck> getChecker() {
return new HashMap<>();
HashMap<BoundaryCheckType, BoundaryCheck> map = new HashMap<>();
map.put(BoundaryCheckType.IS_EQUAL, CheckEqualString.getInstance());
return map;
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment