McpdDateValidator.java

/*
 * Copyright 2026 Global Crop Diversity Trust
 * Licensed under the Apache License, Version 2.0
 * See LICENSE file in project root folder or http://www.apache.org/licenses/LICENSE-2.0
 */
package org.genesys.spring.validation.javax;

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

import org.genesys.util.MCPDUtil;

/**
 * Validates that a string is either null or a valid MCPD date.
 * Placeholder dates such as {@code --------} or {@code 00000000} are not valid
 * because they carry no real date information.
 */
public class McpdDateValidator implements ConstraintValidator<McpdDate, String> {

	@Override
	public void initialize(McpdDate constraintAnnotation) {
		// no-op
	}

	@Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		if (value == null) {
			return true;
		}
		return MCPDUtil.isMcpdDate(value);
	}
}