All Superinterfaces:
org.springframework.data.repository.CrudRepository<ShelterEntity,String>, org.springframework.data.repository.Repository<ShelterEntity,String>, RepositoryContract<ShelterContract>, ShelterContractRepository

@Repository public interface ShelterRepository extends ShelterContractRepository, org.springframework.data.repository.CrudRepository<ShelterEntity,String>
Este repositório é responsável pela persistência de dados relacionados a abrigos (Shelter).

Faz uso de interfaces do Spring Data JPA para implementação do CRUD (Criação, Leitura, Atualização e Deleção) padrão, além de herdar de um contrato específico do Shelter para implementar suas próprias operações básicas (Encontrar por ID, Buscar todas, Persistir e Deletar por ID).

Mecanismos de mapeamento são usados para desacoplar a conversão entre entidades JPA e objetos de domínio.

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

    • INVALID_ID_MESSAGE

      static final Integer INVALID_ID_MESSAGE
    • SHELTER_ERROR_MESSAGE

      static final Integer SHELTER_ERROR_MESSAGE
    • INVALID_UUID_FORMAT_MESSAGE

      static final Integer INVALID_UUID_FORMAT_MESSAGE
  • Method Details

    • getShelterMapper

      private ShelterMapper getShelterMapper()
      Retorna uma nova instância do MapperStrategy para mapear uma entidade ShelterEntity para a classe de domínio Shelter. O MapperStrategy é uma estratégia de design que desacopla a conversão de objeto para objeto para uma complexidade reduzida e manutenção mais fácil.
      Returns:
      uma nova instância de ShelterMapper que implementa a interface MapperStrategy
    • validateId

      private void validateId(String id) throws ShelterEntityFailuresException
      Valida o valor de ID (identificador) fornecido. A validação ocorre em duas etapas: 1. Verifica se o ID fornecido não é nulo e nem vazio, lançando uma exceção do tipo ShelterEntityFailuresException com uma mensagem de erro correspondente se a validação falhar. 2. Verifica se o ID fornecido é um UUID válido, lançando uma exceção do tipo ShelterEntityFailuresException com a causa original da falha se a validação falhar. Note que este método é privado e deve ser usado apenas dentro da interface ShelterRepository.
      Parameters:
      id - O ID que será validado. Deve ser uma string não nula e não vazia representando um UUID válido.
      Throws:
      ShelterEntityFailuresException - se o ID fornecido for nulo, vazio ou não for um UUID válido.
      See Also:
    • mapEntityList

      private List<ShelterContract> mapEntityList(List<ShelterEntity> entities)
      Recebe uma lista de entidades ShelterEntity, realiza o mapeamento das instâncias de ShelterEntity para Shelter e retorna uma lista de Shelters. Este método é particularmente útil na conversão de entidades do banco de dados para objetos de domínio, para uso em outras partes da aplicação.
      Parameters:
      entities - Uma lista de instâncias de ShelterEntity que se pretende mapear para instâncias de Shelter
      Returns:
      Uma lista de instâncias de ShelterContract obtidas a partir do mapeamento das entidades recebidas. Se a lista de entrada for vazia, o método irá retornar uma lista vazia.
      See Also:
    • findEntityById

      default ShelterContract findEntityById(String id)
      Este método é usado para encontrar e retornar uma entidade ShelterEntity pelo ID.

      Primeiro, é executada a função findById do Repositório do Spring, que retorna um Optional de ShelterEntity. Então verifica-se se o Optional está vazio. Se estiver vazio, significa que nenhuma entidade foi encontrada com o ID fornecido, e o método retorna null. Se o Optional não estiver vazio, o método tenta mapear a ShelterEntity encontrada para uma instância de ShelterContract.

      Uma ShelterCreationFailureException pode ser lançada durante o mapeamento. Se isso acontecer, o método lança uma nova ShelterEntityFailuresException com uma mensagem de erro adequada.

      Specified by:
      findEntityById in interface RepositoryContract<ShelterContract>
      Parameters:
      id - A String que representa o ID único da entidade ShelterEntity a ser encontrada. Deve ser um valor não nulo e não vazio.
      Returns:
      Uma instância de ShelterContract que representa a entidade Shelter mapeada da ShelterEntity encontrada. Se nenhuma entidade for encontrada com o id fornecido, o método retornará null.
      Throws:
      ShelterEntityFailuresException - se ocorrer uma exceção ShelterCreationFailureException durante o mapeamento da entidade ShelterEntity para a instância de ShelterContract.
    • getShelterEntityById

      private ShelterEntity getShelterEntityById(String id)
      Este método privado tem como objetivo recuperar um objeto ShelterEntity com base no id fornecido. Ele faz isso primeiro validando o id fornecido usando o método validateId(String id). A validação garante que o id não seja nulo nem vazio e que seja um UUID válido. Caso contrário, uma exceção ShelterEntityFailuresException é lançada.

      Após a validação bem-sucedida do id, o método findById(String id) é chamado para obter o Optional de ShelterEntity correspondente ao id fornecido.

      Se o Optional estiver presente, o valor é retornado. Caso contrário, null é retornado.

      Parameters:
      id - A string que representa o UUID da entidade ShelterEntity a ser recuperada. Deve ser um UUID válido. Caso contrário, uma exceção ShelterEntityFailuresException será lançada.
      Returns:
      um objeto ShelterEntity correspondente ao id fornecido ou null se nenhum ShelterEntity corresponder ao id fornecido.
      Throws:
      ShelterEntityFailuresException - Se o id fornecido for nulo, vazio ou não for um UUID válido.
      See Also:
    • retrieveAll

      default List<ShelterContract> retrieveAll()
      Recupera todos os abrigos do banco de dados.

      Esse método recupera todas as entidades de ShelterEntity presentes no banco de dados, usando o método findAll da interface CrudRepository. Em seguida, realiza o mapeamento dessas entidades para o contrato de abrigo ShelterContract, usando a função mapEntityList. Portanto, este método é responsável por converter as entidades de abrigo representadas no banco de dados em contratos de abrigo que podem ser usados na lógica de negócios da aplicação.

      Specified by:
      retrieveAll in interface RepositoryContract<ShelterContract>
      Returns:
      Uma lista de contratos de abrigo ShelterContract. Se não houver entidades de abrigo no banco de dados, retorna uma lista vazia.
    • persist

      default ShelterContract persist(ShelterContract entity)
      Persiste uma instância de ShelterContract na representação do banco de dados.

      Primeiro, o método mapeia a instância de ShelterContract fornecida para seu equivalente ShelterEntity. A conversão é feita usando uma instância de ShelterEntityMapper.

      O ShelterEntity resultante é então passado para o método save da interface CrudRepository. Este método salva a entidade no banco de dados e retorna a entidade persistida.

      Finalmente, a ShelterEntity persistida é mapeada de volta para um ShelterContract usando uma instância de ShelterMapper. Este ShelterContract mapeado é então retornado.

      Este método é uma implementação direta da operação padrão de persistência fornecida pela interface CrudRepository.

      Specified by:
      persist in interface RepositoryContract<ShelterContract>
      Parameters:
      entity - A instância de ShelterContract que será persistida. Deve ser um valor não nulo.
      Returns:
      uma instância de ShelterContract que representa a entidade persistida.
      Throws:
      ShelterEntityFailuresException - se a entidade fornecida for nula.
      See Also:
      • CrudRepository
    • deleteEntityById

      default void deleteEntityById(String id)
      Este método é usado para excluir uma entidade ShelterEntity pelo ID.

      Primeiramente, o método tenta recuperar a entidade ShelterEntity correspondente ao ID fornecido por meio do método getShelterEntityById(String id). Se o método não conseguir encontrar qualquer entidade ShelterEntity correspondente ao ID fornecido, o método termina e não realiza nenhuma ação.

      Se o método getShelterEntityById(String id) retornar uma entidade válida, essa entidade é passada para o método delete(ShelterEntity targetEntity), que se encarrega de excluir a entidade do banco de dados.

      Este método é uma extensão direta do método delete(ID id) da interface CrudRepository.

      Specified by:
      deleteEntityById in interface RepositoryContract<ShelterContract>
      Parameters:
      id - A String que representa o ID único da entidade ShelterEntity a ser excluída. Deve ser um valor não nulo e não vazio.
      See Also:
    • findShelterEntitiesByResponsibleUser_Email

      Optional<ShelterEntity> findShelterEntitiesByResponsibleUser_Email(String responsibleUserEmail)
      Este método é usado para buscar uma entidade Shelter pelo e-mail do usuário responsável.
      Parameters:
      responsibleUserEmail - O e-mail do usuário responsável. Este é um parâmetro de entrada usado para filtrar a busca pela entidade Shelter. Deve ser um e-mail válido em formato de string.
      Returns:
      Um objeto Optional que inclui a instância de ShelterEntity se o usuário responsável com o e-mail fornecido for encontrado. Se não houver uma correspondência para o e-mail fornecido, um Optional vazio será retornado. Note que Optional é usado para evitar erros de NullPointerException.
      Throws:
      IllegalArgumentException - se o parâmetro de e-mail fornecido for nulo, vazio ou não em um formato de e-mail válido.
    • findAll

      org.springframework.data.domain.Page<ShelterEntity> findAll(org.springframework.data.domain.Pageable pageable)
      Este método é usado para buscar todos os abrigos cadastrados e devolvê-los paginados.

      Esse método recupera todas as entidades de ShelterEntity presentes no banco de dados, usando o método semelhante ao findAll. No entanto, ele recebe um parâmetro Pageable para que possa ser feita a paginação e também a ordenação (sort) de todos os shelters.

      Returns:
      Um Page de todos os ShelterEntity registrados no banco de dados. Se não houver entidades de abrigo no banco de dados, retorna uma lista vazia.