Class ShelterService
- All Implemented Interfaces:
ShelterServiceContract
ShelterService é responsável pelas operações de negócios relacionadas a abrigos.
Essas operações incluem criação de abrigos, busca por abrigos e alterações nos atributos dos abrigos.
Esta classe implementa a interface ShelterServiceContract.- Since:
- 1.0.0
- Author:
- diegoneves
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringprivate final ShelterContractRepository -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddDonation(String shelterId, Donation donation) Este método é responsável por adicionar umaDonationa umShelterContractespecífico, identificado por seu id.voidchangeAddress(String shelterId, Address address) Este método é usado para alterar o endereço do abrigo identificado pelo ID fornecido.voidchangeShelterName(String shelterId, String newName) Este método é usado para alterar o nome do abrigo identificado pelo ID fornecido.createShelter(String shelterName, Address address, UserContract responsibleUser) getDonations(String shelterId) Este método é responsável por recuperar a lista deDonationde umShelterContractespecífico, identificado por seu id.getShelter(String shelterId) Retorna um objetoShelterContractbaseado no ID do abrigo fornecido.private static voidvalidateShelterId(String shelterId) Valida o ID do abrigo fornecido.
-
Field Details
-
INVALID_SHELTER_ID_MESSAGE
- See Also:
-
INVALID_SHELTER_NAME_ERROR_MESSAGE
- See Also:
-
ERROR_MESSAGE_ADDRESS_NULL
- See Also:
-
DONATION_REQUIRED_ERROR_MESSAGE
- See Also:
-
shelterContractRepository
-
-
Constructor Details
-
Method Details
-
createShelter
public ShelterContract createShelter(String shelterName, Address address, UserContract responsibleUser) throws ShelterCreationFailureException Este método cria um novoShelterContractutilizandoShelterFactory.create(java.lang.String, diegosneves.github.conectardoacoes.core.domain.shelter.entity.value.Address, diegosneves.github.conectardoacoes.core.domain.user.entity.UserContract). O novo objetoShelteré salvo usando o métodoRepositoryContract.persist(T).- Specified by:
createShelterin interfaceShelterServiceContract- Parameters:
shelterName- O nome do abrigo como uma string.address- uma instancia do objetoAddressrepresentando o endereço do abrigoresponsibleUser- um objetoUserContractrepresentando o usuário responsável pelo abrigo- Returns:
- um novo objeto
ShelterContract - Throws:
ShelterCreationFailureException- quando uma falha ocorre durante a criação doShelterContract- See Also:
-
getShelter
Retorna um objetoShelterContractbaseado no ID do abrigo fornecido.- Specified by:
getShelterin interfaceShelterServiceContract- Parameters:
shelterId- O ID do abrigo como uma string.- Returns:
- um objeto
ShelterContractque corresponde ao ID do abrigo fornecido - Throws:
ShelterServiceFailureException- quando uma falha ocorre durante a busca pelo abrigo
-
validateShelterId
Valida o ID do abrigo fornecido. Primeiro, verifica se o ID do abrigo é nulo ou vazio usandoValidationUtils.validateNotNullOrEmpty(T, java.lang.Integer, java.lang.Class<? extends java.lang.RuntimeException>). Em seguida, tenta verificar se o ID do abrigo é um UUID válido usandoUuidUtils.isValidUUID(java.lang.String). Se qualquer uma dessas verificações falhar, ele lançará umaShelterServiceFailureExceptioncom uma mensagem que indica que o ID do abrigo fornecido é inválido.- Parameters:
shelterId- O ID do abrigo a ser validado.- Throws:
ShelterServiceFailureException- Se o ID do abrigo fornecido for nulo, vazio ou não for um UUID válido.
-
changeShelterName
public void changeShelterName(String shelterId, String newName) throws ShelterServiceFailureException Este método é usado para alterar o nome do abrigo identificado pelo ID fornecido.Primeiro, o método valida se o novo nome não é nulo nem vazio usando
ValidationUtils.validateNotNullOrEmpty(T, java.lang.Integer, java.lang.Class<? extends java.lang.RuntimeException>). Se a validação falhar, umaShelterServiceFailureExceptioné lançada com uma mensagem indicando que o novo nome do abrigo é inválido.O nome do abrigo recuperado é então alterado para o novo nome fornecido usando o método
ShelterContract.changeShelterName(java.lang.String).Finalmente, o abrigo com o nome atualizado é salvo no repositório usando
RepositoryContract.persist(T).- Specified by:
changeShelterNamein interfaceShelterServiceContract- Parameters:
shelterId- O ID do abrigo cujo nome será alterado. Deve ser uma identificação válida de um abrigo existente.newName- O novo nome para o abrigo. Ele não pode sernullou uma String vazia.- Throws:
ShelterServiceFailureException- Se o novo nome do abrigo fornecido for inválido (ou seja, nulo ou vazio), ou se ocorrer um problema ao recuperar o abrigo com o ID fornecido ou ao salvar o abrigo com o nome alterado.
-
changeAddress
Este método é usado para alterar o endereço do abrigo identificado pelo ID fornecido.Primeiro, o método valida se o novo endereço não é nulo usando
ValidationUtils.validateNotNullOrEmpty(T, java.lang.Integer, java.lang.Class<? extends java.lang.RuntimeException>). Se a validação falhar, umaShelterServiceFailureExceptioné lançada com uma mensagem indicando que o novo endereço do abrigo é inválido.O endereço do abrigo recuperado é então alterado para o novo endereço fornecido usando o método
ShelterContract.changeAddress(diegosneves.github.conectardoacoes.core.domain.shelter.entity.value.Address).Finalmente, o abrigo com o endereço atualizado é salvo no repositório usando
RepositoryContract.persist(T).- Specified by:
changeAddressin interfaceShelterServiceContract- Parameters:
shelterId- O ID do abrigo cujo endereço será alterado. Deve ser uma identificação válida de um abrigo existente.address- O novo endereço para o abrigo. Ele não pode sernullou uma instância inválida deAddress.- Throws:
ShelterServiceFailureException- Se o novo endereço do abrigo fornecido for inválido (ou seja, null ou instância inválida), ou se ocorrer um problema ao recuperar o abrigo com o ID fornecido ou ao salvar o abrigo com o endereço alterado.
-
addDonation
Este método é responsável por adicionar umaDonationa umShelterContractespecífico, identificado por seu id.Primeiro, ele confirma que o objeto
Donationnão é nulo usandoValidationUtils.validateNotNullOrEmpty(T, java.lang.Integer, java.lang.Class<? extends java.lang.RuntimeException>). Se este objetoDonationfor nulo, ele lança umaShelterServiceFailureException.Em seguida, ele usa o id do abrigo fornecido para obter o
ShelterContractcorrespondente. EsteShelterContracté então atualizado adicionando aDonationfornecida.Finalmente, o
ShelterContractatualizado é salvo no repositorio usandoRepositoryContract.persist(T).- Specified by:
addDonationin interfaceShelterServiceContract- Parameters:
shelterId- O ID do abrigo ao qual a doação será adicionada. Deve ser uma identificação válida de um abrigo existente.donation- Uma instancia do objetoDonationrepresentando a doação a ser adicionada.- Throws:
ShelterServiceFailureException- Se a doação fornecida for inválida (ou seja, nula ou vazia), ou se ocorrer um problema ao recuperar o abrigo com o ID fornecido ou ao salvar o abrigo com a doação adicionada.
-
getDonations
Este método é responsável por recuperar a lista deDonationde umShelterContractespecífico, identificado por seu id.Primeiro, ele usa o id do abrigo fornecido para obter o
ShelterContractcorrespondente. A lista deDonationdesteShelterContractespecífico é então retornada.Note que este método pode lançar uma
ShelterServiceFailureException. Isto ocorrerá se houver um problema ao tentar recuperar oShelterContractcom o id fornecido.- Specified by:
getDonationsin interfaceShelterServiceContract- Parameters:
shelterId- O ID do abrigo do qual as doações serão recuperadas. Deve ser uma identificação válida de um abrigo existente.- Returns:
- Uma lista de
Donationque foram feitas para o abrigo identificado pelo id fornecido. - Throws:
ShelterServiceFailureException- Se ocorrer um problema ao tentar recuperar oShelterContractcom o id fornecido.
-