Untitled

 avatar
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