Untitled
unknown
plain_text
a year ago
2.1 kB
6
Indexable
private static boolean listContains(Object storedValue, Object requestedValue) {
Comparable<?> normalizedRequestedValue = normalizeComparable(requestedValue);
if (storedValue instanceof List<?> list) {
return list.stream()
.map(ApprovalFilterUtils::normalizeComparable)
.anyMatch(item -> Objects.equals(item, normalizedRequestedValue));
} else if (storedValue instanceof String str) {
// Pretvori String u listu i uporedi svaki element
List<String> stringList = Arrays.asList(str.split(",\\s*"));
return stringList.stream()
.map(ApprovalFilterUtils::normalizeComparable)
.anyMatch(item -> Objects.equals(item, normalizedRequestedValue));
}
return false;
}
for (ApprovalFilterModel filter : storedFilters) {
Object requestedValue = requestedFilters.get(filter.getName());
if (!validate(requestedValue, filter.getType(), filter.getOperation())) {
System.out.println("Validation failed for " + filter.getOperation() + " on value: " + requestedValue);
return false;
}
boolean match = switch (filter.getOperation()) {
case EQUALS -> Objects.equals(requestedValue, filter.getValue());
case NOT_EQUALS -> !Objects.equals(requestedValue, filter.getValue());
case GREATER_THAN -> compare(requestedValue, filter.getValue()) > 0;
case GREATER_THAN_EQUALS -> compare(requestedValue, filter.getValue()) >= 0;
case LESS_THAN -> compare(requestedValue, filter.getValue()) < 0;
case LESS_THAN_EQUALS -> compare(requestedValue, filter.getValue()) <= 0;
case IN -> listContains(filter.getValue(), requestedValue);
case NIN -> !listContains(filter.getValue(), requestedValue);
default -> throw new UnsupportedOperationException(
"Unsupported operation: " + filter.getOperation());
};
if (!match) {
System.out.println("Match failed for filter: " + filter + " with requested value: " + requestedValue);
return false;
}
}
Editor is loading...
Leave a Comment