package edu.asu.spring.quadriga.validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import edu.asu.spring.quadriga.domain.impl.workbench.Project;
import edu.asu.spring.quadriga.domain.workbench.IProject;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
@Service
public class ProjectURLValidator implements Validator {
@Autowired
private IUnixNameValidator unixNameValidator;
private static final Logger logger = LoggerFactory.getLogger(ProjectURLValidator.class);
@Override
public boolean supports(Class<?> arg0) {
return Project.class.isAssignableFrom(arg0);
}
/**
* This method validates if the entered Unix name is duplicate or not and if
* unix name contains any special characters
*
* @param unixName
* @param projectId
* @param err
* @throws QuadrigaStorageException
* @author Karthikeyan Mohan
*/
@Override
public void validate(Object obj, Errors err) {
// validate all the input parameters
IProject project = (IProject) obj;
String projUnixName = project.getUnixName();
String projectId = project.getProjectId();
if (err.getFieldError("unixName") == null) {
// validate the regular expression
unixNameValidator.validateUnixNameExp(projUnixName, err);
}
if (err.getFieldError("unixName") == null) {
try {
unixNameValidator.validateUnixName(projUnixName, projectId, err);
} catch (QuadrigaStorageException e) {
err.rejectValue("unixName", "projectUnixName.unique");
logger.error("Error", e);
}
}
}
}