java.lang.Object
diegosneves.github.conectardoacoes.core.service.UserService
All Implemented Interfaces:
UserServiceContract

public class UserService extends Object implements UserServiceContract
A classe UserService implementa um contratato do serviço do usuário UserServiceContract. Ela fornece os métodos para gerenciar usuários, incluindo criação de um novo usuário, recuperação de um usuário pelo seu ID, alteração da senha do usuário e alteração do nome de usuário.

Isso é feito por meio da interação com o repositório de usuários UserContractRepository, onde os dados do usuário são armazenados.

Os métodos implementados nesta classe realizam checagens de validação para garantir que os dados do usuário sejam válidos. Se quaisquer dados inválidos forem fornecidos, como um ID de usuário, senha ou nome de usuário nulo ou em branco, eles lançarão uma exceção UserServiceFailureException.

Since:
1.0.0
Author:
diegoneves
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • createUser

      public UserContract createUser(String username, String email, UserProfile userProfile, String password) throws UserCreationFailureException
      Cria um novo usuário com os detalhes fornecidos e armazena no repositório de usuários.
      Specified by:
      createUser in interface UserServiceContract
      Parameters:
      username - O nome de usuário para o novo usuário.
      email - O email para o novo usuário.
      userProfile - O perfil do novo usuário.
      password - A senha para o novo usuário.
      Returns:
      A instância de UserContract que representa o usuário criado.
      Throws:
      UserCreationFailureException - se alguma informação fornecida for inválida.
    • getUserById

      public UserContract getUserById(String userId)
      Recupera um usuário pelo seu ID do repositório de usuários.
      Specified by:
      getUserById in interface UserServiceContract
      Parameters:
      userId - O ID do usuário a ser recuperado.
      Returns:
      A instância de UserContract que representa o usuário recuperado.
      Throws:
      UserServiceFailureException - se o ID do usuário for nulo ou em branco.
    • validateUserId

      private static void validateUserId(String userId) throws UserServiceFailureException
      Valida o identificador do usuário fornecido.

      Este método utiliza os utilitários fornecidos pelas classes ValidationUtils e UuidUtils para validar o identificador do usuário. A validação ocorre em dois passos:

      • Primeiro, este método verifica se o identificador do usuário fornecido não é nulo ou vazio utilizando o método checkNotNullAndNotEmptyOrThrowException da classe ValidationUtils.
      • Na sequência, valida se o identificador do usuário é um UUID válido através do método isValidUUID da classe UuidUtils.

      Se qualquer uma das validações falhar, este método lança uma exceção UserServiceFailureException, que é uma exceção personalizada que estende a RuntimeException.

      Parameters:
      userId - O identificador do usuário a ser validado.
      Throws:
      UserServiceFailureException - Se o identificador do usuário for nulo, vazio ou não for um UUID válido. Aqui, UserServiceFailureException encapsula a exceção original (UuidUtilsException) dentro dela para fornecer informação contextual adicional quando o UUID não é válido.
    • changePassword

      public void changePassword(String userId, String newPassword)
      Altera a senha do usuário especificado.
      Specified by:
      changePassword in interface UserServiceContract
      Parameters:
      userId - O ID do usuário cuja senha será alterada.
      newPassword - A nova senha para o usuário.
      Throws:
      UserServiceFailureException - se o ID do usuário ou a nova senha forem nulos ou em branco, ou se o usuário não for encontrado.
    • changeUserName

      public void changeUserName(String userId, String newUsername)
      Altera o nome do usuário especificado.
      Specified by:
      changeUserName in interface UserServiceContract
      Parameters:
      userId - O ID do usuário cujo nome será alterado.
      newUsername - O novo nome de usuário para o usuário.
      Throws:
      UserServiceFailureException - se o ID do usuário ou o novo nome de usuário forem nulos ou em branco, ou se o usuário não for encontrado.
    • getUserByEmail

      public UserContract getUserByEmail(String userEmail)
      Description copied from interface: UserServiceContract
      Método para obter detalhes do usuário por email.

      Este método é usado quando precisamos encontrar um usuário especificamente pelo seu endereço de e-mail. Isso é útil, por exemplo, quando um usuário esquece seu nome de usuário e só pode fornecer um e-mail. Este método retorna um objeto UserContract que contém todos os detalhes do usuário.

      É importante garantir que o e-mail fornecido para este método seja válido e existente na base de dados. Se o e-mail fornecido não estiver associado a nenhum usuário, este método retornará null.

      Specified by:
      getUserByEmail in interface UserServiceContract
      Parameters:
      userEmail - O endereço de e-mail do usuário que está sendo procurado.
      Returns:
      UserContract Uma instância de UserContract que contém os detalhes do usuário procurado. Se nenhum usuário for encontrado com o e-mail fornecido, este método retornará null.