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.users.backingbean.ModifyQuadrigaUser;
import edu.asu.spring.quadriga.web.users.backingbean.ModifyQuadrigaUserForm;
/**
* This method validates if any quadriga role is selected
* for the user
* @author kiran batna
*
*/
@Service
public class UserRolesFormValidator implements Validator
{
@Override
public boolean supports(Class<?> arg0) {
return arg0.isAssignableFrom(ModifyQuadrigaUserForm.class);
}
@Override
public void validate(Object obj, Errors err) {
List<ModifyQuadrigaUser> users;
ModifyQuadrigaUserForm userForm = (ModifyQuadrigaUserForm)obj;
users = userForm.getUsers();
userFormValidation(users,err);
}
/**
* This method validates if the any quadriga roles is selected
* for a user
* @param users
* @param err
* @author kiran batna
*/
public void userFormValidation(List<ModifyQuadrigaUser> users, Errors err)
{
List<IQuadrigaRole> roles;
for(int i = 0;i<users.size();i++)
{
ValidationUtils.rejectIfEmptyOrWhitespace(err, "users["+i+"].quadrigaRoles", "quadriga_roles.required");
if(err.getFieldError("users["+i+"].quadrigaRoles")==null)
{
roles = users.get(i).getQuadrigaRoles();
if(roles == null)
{
err.rejectValue("users["+i+"].quadrigaRoles", "quadriga_roles_selection.required");
}
}
}
}
}