You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2025/07/08 18:12:52 UTC
(causeway-app-petclinic) tag tags/3.2.0/09-02-adds-visit-fixture created (now 6406bf5)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to tag tags/3.2.0/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
at 6406bf5 (commit)
This tag includes the following new commits:
new 53cdd49 adds Visit_persona
new 5796afb updates DomainAppDemo to create visits as well as pet owners/pets
new 6406bf5 updates javax to jakarta
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(causeway-app-petclinic) 01/03: adds Visit_persona
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to tag tags/3.2.0/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
commit 53cdd492f66bf1a91f0155000e73162893a53e41
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 3 14:16:46 2024 +0100
adds Visit_persona
creates a random number of visits for each pet
---
.../modules/visit/fixture/Visit_persona.java | 131 +++++++++++++++++++++
1 file changed, 131 insertions(+)
diff --git a/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java b/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java
new file mode 100644
index 0000000..5b33da9
--- /dev/null
+++ b/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java
@@ -0,0 +1,131 @@
+package domainapp.modules.visit.fixture;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
+
+import javax.inject.Inject;
+
+import org.apache.causeway.applib.services.wrapper.control.SyncControl;
+
+import org.apache.causeway.applib.services.clock.ClockService;
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
+import org.apache.causeway.testing.fakedata.applib.services.FakeDataService;
+import org.apache.causeway.testing.fixtures.applib.personas.BuilderScriptWithResult;
+import org.apache.causeway.testing.fixtures.applib.personas.Persona;
+import org.apache.causeway.testing.fixtures.applib.setup.PersonaEnumPersistAll;
+
+import domainapp.modules.petowner.fixture.PetOwner_persona;
+import domainapp.modules.visit.contributions.PetOwner_bookVisit;
+import domainapp.modules.visit.contributions.PetOwner_visits;
+import domainapp.modules.visit.dom.visit.Visit;
+
+import domainapp.modules.visit.dom.visit.VisitRepository;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.Setter;
+import lombok.val;
+import lombok.experimental.Accessors;
+
+import domainapp.modules.petowner.dom.petowner.PetOwner;
+
+/**
+ * Returns the most recent Visit, or the one scheduled.
+ */
+@RequiredArgsConstructor
+public enum Visit_persona
+implements Persona<Visit, Visit_persona.Builder> {
+
+ JAMAL_VISITS(PetOwner_persona.JAMAL),
+ CAMILA_VISITS(PetOwner_persona.CAMILA),
+ ARJUN_VISITS(PetOwner_persona.ARJUN),
+ NIA_VISITS(PetOwner_persona.NIA),
+ OLIVIA_VISITS(PetOwner_persona.OLIVIA),
+ LEILA_VISITS(PetOwner_persona.LEILA),
+ MATT_VISITS(PetOwner_persona.MATT),
+ BENJAMIN_VISITS(PetOwner_persona.BENJAMIN),
+ JESSICA_VISITS(PetOwner_persona.JESSICA),
+ DANIEL_VISITS(PetOwner_persona.DANIEL);
+
+ private final PetOwner_persona petOwner_p;
+
+ @Override
+ public Builder builder() {
+ return new Builder().setPersona(this);
+ }
+
+ @Override
+ public Visit findUsing(final ServiceRegistry serviceRegistry) {
+ final var owner = petOwner_p.findUsing(serviceRegistry);
+ final var visits = serviceRegistry.lookupService(VisitRepository.class)
+ .map(x -> x.findByPetOwner(owner))
+ .orElseThrow();
+ return lastOf(visits);
+ }
+
+ private static Visit lastOf(List<Visit> visits) {
+ return visits.get(visits.size()-1);
+ }
+
+ @Accessors(chain = true)
+ public static class Builder extends BuilderScriptWithResult<Visit> {
+
+ @Getter @Setter private Visit_persona persona;
+
+ @Override
+ protected Visit buildResult(final ExecutionContext ec) {
+
+ final var petOwner = ec.executeChildT(this, persona.petOwner_p);
+
+ petOwner.getPets().forEach(pet -> {
+
+ // in the past
+ final var numVisits = fakeDataService.ints().between(2, 4);
+ for (var i = 0; i < numVisits; i++) {
+ final var daysAgo = fakeDataService.ints().between(5, 500);
+ final var minsInTheDay = randomAppointmentTime();
+ final var appointmentTime = randomAppointmentTimeFromToday(-daysAgo, minsInTheDay);
+ wrapperFactory.wrapMixin(PetOwner_bookVisit.class, petOwner, SyncControl.control().withSkipRules()).act(pet, appointmentTime);
+ }
+
+ // in the future
+ if (fakeDataService.booleans().coinFlip()) {
+ final var daysAhead = fakeDataService.ints().between(1, 10);
+ final var minsInTheDay = randomAppointmentTime();
+ final var appointmentTime = randomAppointmentTimeFromToday(daysAhead, minsInTheDay);
+ wrapperFactory.wrapMixin(PetOwner_bookVisit.class, petOwner, SyncControl.control().withSkipRules()).act(pet, appointmentTime);
+ }
+ });
+
+ final var numDaysAgo = fakeDataService.ints().between(2, 100);
+ final var lastVisit = clockService.getClock().nowAsLocalDate().minusDays(numDaysAgo);
+ petOwner.setLastVisit(lastVisit);
+
+ final var visits = wrapperFactory.wrapMixin(PetOwner_visits.class, petOwner, SyncControl.control().withSkipRules()).coll();
+ return lastOf(visits);
+ }
+
+ private LocalDateTime randomAppointmentTimeFromToday(int days, int appointmentTime) {
+ return clockService.getClock().nowAsLocalDate().atStartOfDay().plusDays(days).plusMinutes(appointmentTime);
+ }
+
+ private int randomAppointmentTime() {
+ return (9 * 60) + (fakeDataService.ints().between(0, 32) * 15);
+ }
+
+ // -- DEPENDENCIES
+
+ @Inject ClockService clockService;
+ @Inject FakeDataService fakeDataService;
+ }
+
+ public static class PersistAll
+ extends PersonaEnumPersistAll<Visit, Visit_persona, Builder> {
+ public PersistAll() {
+ super(Visit_persona.class);
+ }
+ }
+
+
+}
(causeway-app-petclinic) 02/03: updates DomainAppDemo to create visits as well as pet owners/pets
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to tag tags/3.2.0/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
commit 5796afbdf5903101941c2ce8b8ea87ed49a88673
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 3 14:17:43 2024 +0100
updates DomainAppDemo to create visits as well as pet owners/pets
---
.../domainapp/webapp/application/fixture/scenarios/DomainAppDemo.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/webapp/src/main/java/domainapp/webapp/application/fixture/scenarios/DomainAppDemo.java b/webapp/src/main/java/domainapp/webapp/application/fixture/scenarios/DomainAppDemo.java
index 6964593..32b8c67 100644
--- a/webapp/src/main/java/domainapp/webapp/application/fixture/scenarios/DomainAppDemo.java
+++ b/webapp/src/main/java/domainapp/webapp/application/fixture/scenarios/DomainAppDemo.java
@@ -5,14 +5,14 @@
import org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixturesService;
-import domainapp.modules.petowner.fixture.PetOwner_persona;
+import domainapp.modules.visit.fixture.Visit_persona;
public class DomainAppDemo extends FixtureScript {
@Override
protected void execute(final ExecutionContext ec) {
ec.executeChildren(this, moduleWithFixturesService.getTeardownFixture());
- ec.executeChild(this, new PetOwner_persona.PersistAll());
+ ec.executeChild(this, new Visit_persona.PersistAll());
}
@Inject ModuleWithFixturesService moduleWithFixturesService;
(causeway-app-petclinic) 03/03: updates javax to jakarta
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to tag tags/3.2.0/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
commit 6406bf5904450e36a0aba3f21e0bca4b4f7351b0
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 3 14:20:29 2024 +0100
updates javax to jakarta
---
.../src/main/java/domainapp/modules/visit/fixture/Visit_persona.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java b/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java
index 5b33da9..295a9a7 100644
--- a/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java
+++ b/module-visit/src/main/java/domainapp/modules/visit/fixture/Visit_persona.java
@@ -4,7 +4,7 @@
import java.util.List;
import java.util.Optional;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.apache.causeway.applib.services.wrapper.control.SyncControl;