package io.delphiplatform.api.v3.validation;

import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import io.delphiplatform.api.util.CollectionUtils;

public class ExactMatchesForIntCollectionValidator implements ConstraintValidator<ExactMatchesForIntCollection, Set<Integer>> {

    private List<Integer> anyOf;

    @Override
    public void initialize(ExactMatchesForIntCollection constraintAnnotation) {
        anyOf = Arrays.stream(constraintAnnotation.anyOf()).boxed().collect(Collectors.toList());
    }

    @Override
    public boolean isValid(Set<Integer> value, ConstraintValidatorContext context) {
        return CollectionUtils.isEmpty(value) || anyOf.containsAll(value);
    }
}
