in plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/conditions/PropertyConditionEvaluator.java [98:167]
private boolean compareValues(Object actualValue, Collection<?> expectedValues, Collection<?> expectedValuesInteger, Collection<?> expectedValuesDouble, Collection<?> expectedValuesDate, Collection<?> expectedValuesDateExpr, String op) {
Collection<Object> expectedDateExpr = null;
if (expectedValuesDateExpr != null) {
expectedDateExpr = expectedValuesDateExpr.stream().map(PropertyConditionEvaluator::getDate).collect(Collectors.toList());
}
@SuppressWarnings("unchecked")
Collection<?> expected = ObjectUtils.firstNonNull(expectedValues, expectedValuesDate, expectedValuesInteger, expectedValuesDouble, expectedDateExpr);
if (actualValue == null) {
return expected == null;
} else if (expected == null) {
return false;
}
Collection<Object> actual = ConditionContextHelper.foldToASCII(getValueSet(actualValue));
boolean result = true;
switch (op) {
case "in":
result = false;
for (Object a : actual) {
if (expected.contains(a)) {
result = true;
break;
}
}
break;
case "inContains":
result = false;
for (Object a : actual) {
for (Object b : expected)
if (((String) a).contains((String) b)) {
result = true;
break;
}
}
break;
case "notIn":
for (Object a : actual) {
if (expected.contains(a)) {
result = false;
break;
}
}
break;
case "all":
for (Object e : expected) {
if (!actual.contains(e)) {
result = false;
break;
}
}
break;
case "hasNoneOf":
if (!Collections.disjoint(actual, expected)) {
return false;
}
break;
case "hasSomeOf":
if (Collections.disjoint(actual, expected)) {
return false;
}
break;
default:
throw new IllegalArgumentException("Unknown comparison operator " + op);
}
return result;
}