Untitled
unknown
plain_text
5 months ago
2.1 kB
3
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