package com.airlock.iam.base.infrastructure.validation;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

public class EnumValueValidator implements ConstraintValidator<EnumValue, String> {
   private EnumValue annotation;

   public void initialize(EnumValue anAnnotation) {
      this.annotation = anAnnotation;
   }

   public boolean isValid(String valueForValidation, ConstraintValidatorContext constraintValidatorContext) {
      if (valueForValidation == null) {
         return true;
      }

      Enum<?>[] enumValues = (Enum<?>[])this.annotation.enumClass().getEnumConstants();
      if (enumValues != null) {
         for (Enum<?> enumValue : enumValues) {
            if (valueForValidation.equalsIgnoreCase(enumValue.name())) {
               return true;
            }
         }
      }

      return false;
   }
}
