package com.monkeyk.os.web.controller;
import com.monkeyk.os.service.UserService;
import com.monkeyk.os.service.dto.UsersFormDto;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import java.util.List;
/**
* 2016/6/7
*
* @author Shengzhao Li
*/
@Component
public class UsersFormDtoValidator implements Validator {
@Autowired
private UserService userService;
@Override
public boolean supports(Class<?> clazz) {
return UsersFormDto.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
UsersFormDto formDto = (UsersFormDto) target;
validatePassword(errors, formDto);
validateUsername(errors, formDto);
validateRoles(errors, formDto);
}
private void validateRoles(Errors errors, UsersFormDto formDto) {
final List<String> roleGuids = formDto.getRoleGuids();
if(roleGuids==null||roleGuids.isEmpty()){
errors.rejectValue("roleGuids", null, "Roles is required");
}
}
private void validatePassword(Errors errors, UsersFormDto formDto) {
final String password = formDto.getPassword();
if (StringUtils.isEmpty(password)) {
errors.rejectValue("password", null, "Password is required");
}
}
private void validateUsername(Errors errors, UsersFormDto formDto) {
final String username = formDto.getUsername();
if (StringUtils.isEmpty(username)) {
errors.rejectValue("username", null, "Username is required");
return;
}
boolean existed = userService.isExistedUsername(username);
if (existed) {
errors.rejectValue("username", null, "Username already existed");
}
}
}