package com.monkeyk.sos.web.controller; import com.monkeyk.sos.domain.dto.UserFormDto; import com.monkeyk.sos.domain.user.Privilege; import com.monkeyk.sos.service.UserService; 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/3/25 * * @author Shengzhao Li */ @Component public class UserFormDtoValidator implements Validator { @Autowired private UserService userService; @Override public boolean supports(Class<?> clazz) { return UserFormDto.class.equals(clazz); } @Override public void validate(Object target, Errors errors) { UserFormDto formDto = (UserFormDto) target; validateUsername(errors, formDto); validatePassword(errors, formDto); validatePrivileges(errors, formDto); } private void validatePrivileges(Errors errors, UserFormDto formDto) { final List<Privilege> privileges = formDto.getPrivileges(); if (privileges == null || privileges.isEmpty()) { errors.rejectValue("privileges", null, "Privileges is required"); } } private void validatePassword(Errors errors, UserFormDto formDto) { final String password = formDto.getPassword(); if (StringUtils.isEmpty(password)) { errors.rejectValue("password", null, "Password is required"); } } private void validateUsername(Errors errors, UserFormDto 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"); } } }