package org.oregami.util.validation; import org.apache.commons.lang3.StringUtils; import org.oregami.data.UserDao; import org.oregami.entities.user.User; import org.oregami.service.FieldNames; import org.oregami.service.ServiceError; import org.oregami.service.ServiceErrorContext; import org.oregami.service.ServiceErrorMessage; import org.oregami.util.exception.OregamiRuntimeException; import java.util.ArrayList; import java.util.List; public class UserValidator { private final UserDao userDao; private final User userData; public UserValidator(UserDao userDaoManager, User userData) { if (userDaoManager == null) { throw new OregamiRuntimeException("org.oregami.uservalidator.NoUserDaoManagerGiven"); } if (userData == null) { throw new OregamiRuntimeException("org.oregami.uservalidator.NoUserGiven"); } this.userDao = userDaoManager; this.userData = userData; } public List<ServiceError> validateForRegister() { List<ServiceError> errors = new ArrayList<ServiceError>(); errors.addAll(validateRequiredFields()); if (userDao.findOneByUsername(userData.getUsername())!=null) { errors.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_USERNAME),ServiceErrorMessage.USER_USERNAME_ALREADY_EXISTS)); } return errors; } public List<ServiceError> validateRequiredFields() { List<ServiceError> errorMessages = new ArrayList<ServiceError>(); if (StringUtils.length(userData.getUsername())<3) { errorMessages.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_USERNAME), ServiceErrorMessage.USER_USERNAME_TOO_SHORT)); } if (org.apache.commons.lang3.StringUtils.isEmpty(userData.getUsername())) { errorMessages.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_USERNAME), ServiceErrorMessage.USER_USERNAME_EMPTY)); } if (StringUtils.isEmpty(userData.getEmail())) { errorMessages.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_EMAIL), ServiceErrorMessage.USER_EMAIL_EMPTY)); } if (StringUtils.isEmpty(userData.getPassword())) { errorMessages.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_PASSWORD), ServiceErrorMessage.USER_PASSWORD_EMPTY)); } else if (StringUtils.length(userData.getPassword())<6) { errorMessages.add(new ServiceError(new ServiceErrorContext(FieldNames.USER_PASSWORD), ServiceErrorMessage.USER_PASSWORD_TOO_SHORT)); } return errorMessages; } }