This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
commit 3e34fc096704199c35e77d7ad0698aa916afc78b Author: Dan Haywood <[email protected]> AuthorDate: Sun May 26 22:32:08 2024 +0100 adds a subscriber to veto deletion if there are any visits for the owner --- .../subscriptions/PetOwner_delete_subscriber.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/module-visit/src/main/java/domainapp/modules/visit/subscriptions/PetOwner_delete_subscriber.java b/module-visit/src/main/java/domainapp/modules/visit/subscriptions/PetOwner_delete_subscriber.java new file mode 100644 index 0000000..650f9b2 --- /dev/null +++ b/module-visit/src/main/java/domainapp/modules/visit/subscriptions/PetOwner_delete_subscriber.java @@ -0,0 +1,39 @@ +package domainapp.modules.visit.subscriptions; + +import domainapp.modules.petowner.dom.petowner.PetOwner; +import domainapp.modules.visit.dom.visit.Visit; +import domainapp.modules.visit.dom.visit.VisitRepository; + +import java.util.List; + +import javax.inject.Inject; + +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +@Component +public class PetOwner_delete_subscriber { + + @EventListener(PetOwner.DeleteActionDomainEvent.class) + void on(PetOwner.DeleteActionDomainEvent event) { + PetOwner subject = event.getSubject(); + switch (event.getEventPhase()) { + case HIDE: + break; + case DISABLE: + List<Visit> visits = visitRepository.findByPetOwner(subject); + if (!visits.isEmpty()) { + event.veto("This owner has %d visit%s", visits.size(), (visits.size() == 1 ? "" : "s")); + } + break; + case VALIDATE: + break; + case EXECUTING: + break; + case EXECUTED: + break; + } + } + + @Inject VisitRepository visitRepository; +}
