java.lang.Object
diegosneves.github.conectardoacoes.core.domain.user.entity.User
All Implemented Interfaces:
UserContract

public class User extends Object implements UserContract
Representa um usuário dentro do sistema.

Esta classe é responsável por manter as informações de um usuário e valida a criação dos mesmos. As informações de um usuário incluem seu nome de usuário, perfil de usuário, e-mail e senha. Além disso, cada usuário também possui um identificador único do tipo UUID.

Cada usuário tem a capacidade de alterar a sua própria senha bem como o nome de usuário.

Estrutura de erros

Caso os dados do usuário falhem na validação, essa classe está preparada para lidar com esses problemas e gera uma UserCreationFailureException adequada.

Nota sobre a implementação

Esta classe implementa a interface UserContract, que define o contrato para criação e manuseio dos usuários. Além disso, faz uso efetivo da classe UserProfile para definir o perfil dos usuários.

As mensagens de erro de validação estão definidas como constantes para manter a classe limpa e dry (Don't Repeat Yourself).

Since:
1.0.0
Author:
diegoneves
  • Field Details

  • Constructor Details

  • Method Details

    • validateData

      private void validateData() throws UserCreationFailureException
      Valida os campos necessários para a criação de um novo Usuário.

      Este método verifica as seguintes condições:

      • Se o perfil do usuário está definido
      • Se o nome do usuário está definido e não está em branco
      • Se o ID do usuário é um UUID válido
      • Se o email do usuário está definido e não está em branco
      • Se a senha do usuário está definida e não está em branco

      Se algum dos campos anteriores estiver ausente, em branco ou inválido, este método lançará uma exceção UserCreationFailureException com uma mensagem de erro adequada.
      Throws:
      UserCreationFailureException - lançada quando campo obrigatório está faltando, em branco ou é inválido
    • getId

      public String getId()
      Description copied from interface: UserContract
      Este método retorna o ID único do usuário.
      Specified by:
      getId in interface UserContract
      Returns:
      ID do usuário como String.
    • getUsername

      public String getUsername()
      Description copied from interface: UserContract
      Obtém o nome de usuário do usuário.
      Specified by:
      getUsername in interface UserContract
      Returns:
      nome de usuário como String.
    • getUserPassword

      public String getUserPassword()
      Description copied from interface: UserContract
      Recupera a senha do usuário.

      Em uma implementação segura, esse método deve ser manuseado com cuidado para evitar a exposição de dados sensíveis.

      Specified by:
      getUserPassword in interface UserContract
      Returns:
      Senha do usuário como String.
    • getUserProfile

      public UserProfile getUserProfile()
      Description copied from interface: UserContract
      Retorna o objeto UserProfile associado ao usuário.
      Specified by:
      getUserProfile in interface UserContract
      Returns:
      A instância de UserProfile do usuário.
    • getEmail

      public String getEmail()
      Description copied from interface: UserContract
      Obtém o email do usuário.
      Specified by:
      getEmail in interface UserContract
      Returns:
      Email do usuário como String.
    • changeUserPassword

      public void changeUserPassword(String password) throws UserCreationFailureException
      Description copied from interface: UserContract
      Altera a senha do usuário atual.

      Este método é usado para alterar a senha do usuário. Ele verifica se a senha fornecida é nula ou em branco. Se for esse o caso, ele lançará uma exceção UserCreationFailureException.

      Specified by:
      changeUserPassword in interface UserContract
      Parameters:
      password - Nova senha do usuário como uma String. Ela não pode ser nula ou em branco.
      Throws:
      UserCreationFailureException - se a senha fornecida for nula ou em branco. Isso indica que uma senha adequada não foi fornecida.
    • changeUserName

      public void changeUserName(String updatedUsername)
      Description copied from interface: UserContract
      Este método é responsável por alterar o nome de usuário.

      Cuidados são tomados para garantir que o nome de usuário não seja uma String vazia ou nula, caso contrário, seria levantada uma exceção UserCreationFailureException indicando que o nome de usuário é obrigatório.

      Essa operação é realizada para o perfil de usuário atual associado a este objeto e o valor de 'this.userName' é alterado no final. O nome de usuário atribuído aqui é usado posteriormente em outras operações relacionadas ao usuário.

      Specified by:
      changeUserName in interface UserContract
      Parameters:
      updatedUsername - uma String que contém o novo nome de usuário.