BusinessUnitCodeValidator.java

package com.fulfilment.application.monolith.exception.validation;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import java.util.regex.Pattern;

/** Validates warehouse business unit codes against the canonical format. */
public class BusinessUnitCodeValidator
    implements ConstraintValidator<ValidBusinessUnitCode, String> {

  private static final Pattern VALID_CODE =
      Pattern.compile("^[A-Z0-9][A-Z0-9.\\-_]{2,19}$");

  @Override
  public boolean isValid(String value, ConstraintValidatorContext context) {
    if (value == null || value.isBlank()) {
      return false;
    }
    return VALID_CODE.matcher(value).matches();
  }
}