package edu.asu.spring.quadriga.validator;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import edu.asu.spring.quadriga.domain.IQuadrigaRole;
import edu.asu.spring.quadriga.web.workbench.backing.ModifyCollaborator;
import edu.asu.spring.quadriga.web.workbench.backing.ModifyCollaboratorForm;
@Service
public class CollaboratorFormValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
return arg0.isAssignableFrom(ModifyCollaboratorForm.class);
}
@Override
public void validate(Object obj, Errors err) {
List<ModifyCollaborator> collaboratorList;
ModifyCollaboratorForm collaboratorForm = (ModifyCollaboratorForm)obj;
collaboratorList = collaboratorForm.getCollaborators();
collaboratorFormValidation(collaboratorList,err);
}
/**
* This method checks if any of the collaborator role is marked for updating and also
* if any collaborator roles are associated with the user
* @param collaboratorList
* @param err
*/
public void collaboratorFormValidation(List<ModifyCollaborator> collaboratorList,Errors err)
{
List<IQuadrigaRole> collaboratorRoles;
for(int i = 0;i<collaboratorList.size();i++)
{
ValidationUtils.rejectIfEmptyOrWhitespace(err, "collaborators["+i+"].collaboratorRoles", "collaborator_roles.required");
if(err.getFieldError("collaborators["+i+"].collaboratorRoles")==null)
{
collaboratorRoles = collaboratorList.get(i).getCollaboratorRoles();
if(collaboratorRoles == null)
{
err.rejectValue("collaborators["+i+"].collaboratorRoles", "collaborator_roles_selection.required");
}
}
}
}
}