package edu.asu.spring.quadriga.validator;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.xml.bind.helpers.ValidationEventLocatorImpl;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import edu.asu.spring.quadriga.domain.resolver.IProjectHandleResolver;
import edu.asu.spring.quadriga.domain.resolver.impl.ProjectHandleResolver;
@Component
public class ProjectHandleResolverValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return ProjectHandleResolver.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
IProjectHandleResolver resolver = (IProjectHandleResolver) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "projectName", "resolver.project_name.required", "Project name required.");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "resolvedHandlePattern", "resolver.resolved_handler_pattern.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "handlePattern", "resolver.handler_pattern.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "handleExample", "resolver.handler_example.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "resolvedHandleExample", "resolver.resolved_handle_example.required");
if (resolver.getHandlePattern() != null && resolver.getHandleExample() != null) {
try {
Pattern pattern = Pattern.compile(resolver.getHandlePattern());
} catch (PatternSyntaxException ex) {
errors.rejectValue("handlePattern", "resolver.handle_pattern.does_not_compile");
}
}
}
}