Class UserEntityServiceImpl
- All Implemented Interfaces:
UserEntityService
UserEntityServiceImpl implementa a interface UserEntityService e
lida com a lógica de negócios das operações de usuário.
A classe é marcada como um componente do Spring com a anotação Service,
o que permite ao Spring detectar e gerenciar as instâncias dessa classe.
Além disso, a classe lida com cenários de erros e exceções, lançando uma exceção personalizada
chamada UserEntityFailuresException quando um problema ocorre.
- Since:
- 1.0.0
- Author:
- diegoneves
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DonorDepositServicestatic final Integerstatic final Stringstatic final Integerstatic final Integerstatic final Integerstatic final Stringstatic final Integerstatic final Stringstatic final Integerprivate final UserRepositoryprivate final UserServiceContract -
Constructor Summary
ConstructorsConstructorDescriptionUserEntityServiceImpl(UserRepository userRepository, DonorDepositService donorDepositService) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcheckIfEmailAlreadyInUse(String email) Este método recebe como parâmetro um endereço de email no formato String e verifica se este email já está registrado no repositório de usuários.Método para criar uma nova entidade do usuário.private UserEntityMétodo auxiliar usado para converter uma instância deUserEntityCreationRequestpara uma instância deUserEntity.private UserContractMétodo auxiliar para criar umUsera partir de uma solicitação de criação de entidade de usuárioUserEntityCreationRequest.findUserByEmail(String email) Este método é usado para obter uma response de usuário pelo seu email.private static UserEntityMapperRetorna uma nova instância deUserEntityMapper.searchUserByEmail(String email) Este método é usado para obter uma entidade de usuário pelo seu email.
-
Field Details
-
INVALID_EMAIL_ERROR_MESSAGE
-
EMAIL_NOT_FOUND_ERROR_MESSAGE
-
EMAIL_ALREADY_IN_USE
-
USER_CREATION_FAILURE_MESSAGE
-
USER_PROFILE_VALIDATION_FAILURE
-
MISSING_USER_ENTITY_REQUEST_ERROR_MESSAGE
-
USER_CREATION_ERROR_LOG
- See Also:
-
EMAIL_DUPLICATE_LOG
- See Also:
-
USER_CREATION_SUCCESS_LOG
- See Also:
-
userRepository
-
userServiceContract
-
donorDepositService
-
-
Constructor Details
-
UserEntityServiceImpl
@Autowired public UserEntityServiceImpl(UserRepository userRepository, DonorDepositService donorDepositService)
-
-
Method Details
-
searchUserByEmail
Description copied from interface:UserEntityServiceEste método é usado para obter uma entidade de usuário pelo seu email. Primeiramente, o método verifica se o valor do parâmetro de email não é nulo ou vazio. Se o valor do email for nulo ou vazio, uma exceçãoUserEntityFailuresExceptioné lançada ao usuário com uma mensagem de erro relevante.Se o email for válido, o método tentará encontrar uma entidade de usuário que corresponda ao email usando a interface
UserRepository. Se não for encontrada uma entidade de usuário para o email fornecido, o método lançará uma exceçãoUserEntityFailuresExceptioncom uma mensagem de erro apropriada.- Specified by:
searchUserByEmailin interfaceUserEntityService- Parameters:
email- A string que representa o email do usuário que será procurado no repositório.- Returns:
- A entidade do usuário correspondente ao email fornecido.
- Throws:
UserEntityFailuresException- Se nenhuma entidade de usuário puder ser encontrada para o email fornecido ou o valor do email for nulo ou vazio.
-
createUserEntity
public UserEntityCreatedResponse createUserEntity(UserEntityCreationRequest request) throws UserEntityFailuresException Description copied from interface:UserEntityServiceMétodo para criar uma nova entidade do usuário. Primeiramente, verifica se a solicitação enviada está completa e se os valores de seus atributos estão de acordo com a regra de negócio da aplicação. Caso contrário, uma exceçãoUserEntityFailuresExceptioné disparada com uma mensagem de erro detalhada.Se os dados fornecidos estiverem corretos, o método criará um novo registro de usuário no banco de dados usando a interface
UserRepository. Ao final, um objetoUserEntityCreatedResponseé retornado contendo todos os dados do novo usuário criado.- Specified by:
createUserEntityin interfaceUserEntityService- Parameters:
request- O objetoUserEntityCreationRequestque contém os dados necessários para a criação do novo usuário.- Returns:
- Um objeto
UserEntityCreatedResponsecontendo os dados do novo usuário criado. - Throws:
UserEntityFailuresException- Se os dados fornecidos na solicitação estão incompletos ou inconsistentes ou se ocorrer algum problema durante a criação do novo usuário no banco de dados.
-
findUserByEmail
Description copied from interface:UserEntityServiceEste método é usado para obter uma response de usuário pelo seu email.Se o email for válido, o método tentará encontrar uma entidade de usuário que corresponda ao email usando a interface
UserRepository. Se não for encontrada uma entidade de usuário para o email fornecido, o método lançará uma exceçãoUserEntityFailuresExceptioncom uma mensagem de erro apropriada.- Specified by:
findUserByEmailin interfaceUserEntityService- Parameters:
email- A string que representa o email do usuário que será procurado no repositório.- Returns:
- Um objeto
UserEntityCreatedResponsede um usuário correspondente ao email fornecido.
-
getUserEntityMapper
Retorna uma nova instância deUserEntityMapper.Este método cria e retorna uma nova instância de
UserEntityMapper. É usado para transformarUseremUserEntitye vice-versa. A classeUserEntityMapperé um mapper (conversor) usado no contexto de persistência de dados da aplicação, convertendo objetos de domínio em entidades de banco de dados e vice versa em operações de CRUD.- Returns:
- uma nova instância de
UserEntityMapper - See Also:
-
createUserEntityFromCreationRequest
Método auxiliar usado para converter uma instância deUserEntityCreationRequestpara uma instância deUserEntity.Este método recebe uma solicitação de criação de entidade de usuário, gera um contrato de usuário correspondente através de
createUserFromRequest(UserEntityCreationRequest)e usa umUserEntityMapperpara mapear o contrato de usuário para uma entidade de usuário.- Parameters:
request- Uma instância deUserEntityCreationRequestrepresentando a solicitação de criação de uma nova entidade de usuário.- Returns:
- userEntity Uma instância de
UserEntityrepresentando a entidade de usuário recém-criada. - Throws:
UserEntityFailuresException- Se ocorrer um erro durante a criação do usuário ou mapeamento de contrato de usuário para entidade de usuário. A exceção encapsula e fornece mais detalhes sobre a natureza específica do erro.- See Also:
-
createUserFromRequest
Método auxiliar para criar umUsera partir de uma solicitação de criação de entidade de usuárioUserEntityCreationRequest.Este método é utilizado principalmente para transformar a solicitação de criação de entidade de usuário em uma instância concreta de
User. Ele lida com a validação da solicitação e a criação do usuário, lançando uma exceçãoUserEntityFailuresExceptioncaso algum problema ocorra. A exceção lança detalhes específicos sobre a natureza do erro. O perfil do usuário é validado e convertido para um tipo de enumeraçãoUserProfileapropriado.Exceções
O método lança a exceção
UserEntityFailuresExceptionnas seguintes situações:- Quando o campo userProfile da solicitação de criação de entidade de usuário está nulo.
- Quando ocorrer uma exceção
RuntimeExceptiondurante a criação do usuário no métodoUserServiceContract.createUser(String, String, UserProfile, String).
UserEntityFailuresExceptionserá lançada com uma mensagem de erro adequada.- Parameters:
request- uma solicitação de criação de entidade de usuário formada por userName, email, userProfile e userPassword.- Returns:
- User uma instância de
Userrepresentando o novo usuário criado. - Throws:
UserEntityFailuresException- lançada quando a validação do userProfile falha ou é impossível criar o usuário devido a umaRuntimeException.- See Also:
-
checkIfEmailAlreadyInUse
Este método recebe como parâmetro um endereço de email no formato String e verifica se este email já está registrado no repositório de usuários. A verificação de registro é feita a partir do métodoUserRepository.findByEmail(String), que retorna umOptionaldeUserEntity.Primeiro, o método utiliza a função
ValidationUtils.validateNotNullOrEmpty(Object, String, Class)para assegurar que o email fornecido não é nulo ou vazio.Se a verificação retorna um
UserEntity, isso significa que o endereço de email já existe na base de dados do sistema, neste caso, uma exceçãoUserEntityFailuresExceptioné lançada com uma mensagem predefinidaEMAIL_ALREADY_IN_USE.Já se a instância de
UserEntityfor vazia, ou seja, se o email não foi registrado anteriormente no sistema, a operação prossegue normalmente sem lançar nenhuma exceção.- Parameters:
email- o endereço de email a ser verificado.- Throws:
UserEntityFailuresException- Caso o email fornecido seja nulo ou vazio, ou, caso o email já esteja em uso por um usuário existente.
-