package io.delphiplatform.api.v3.validation;

import com.google.common.collect.Sets;

import java.util.Collection;
import java.util.Set;

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

import io.delphiplatform.api.util.CollectionUtils;

public class ExactMatchesValidator implements ConstraintValidator<ExactMatches, Collection<String>> {

    private Set<String> anyOf;

    @Override
    public void initialize(ExactMatches constraintAnnotation) {
        this.anyOf = Sets.newHashSet(constraintAnnotation.anyOf());
    }

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