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 2024/06/03 13:21:27 UTC

(causeway-app-petclinic) tag tags/v3/09-02-adds-visit-fixture created (now 2ecb583)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to tag tags/v3/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git


      at 2ecb583  (commit)
This tag includes the following new commits:

     new 2bb72c5  fixes title on home page
     new 24f740c  adds Visit_persona
     new d2add19  updates DomainAppDemo to create visits as well as pet owners/pets
     new 2ecb583  updates javax to jakarta

The 4 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) 03/04: 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/v3/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit d2add1969fa89c3bb86447c776e0771266363a30
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 jakarta.inject.Inject;
 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) 04/04: 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/v3/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit 2ecb5838b24ac25d5414a204e5204b91c47dcaef
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.time.LocalDateTime;
 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;
 


(causeway-app-petclinic) 02/04: 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/v3/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit 24f740c983dfc8b8efca403a685cb0c8b8d5024c
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) 01/04: fixes title on home page

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to tag tags/v3/09-02-adds-visit-fixture
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit 2bb72c531d11cf4fbf37a6633826eb5db4a5c003
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 3 14:16:21 2024 +0100

    fixes title on home page
---
 .../webapp/application/services/homepage/HomePageViewModel.java         | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java b/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
index c96d8bf..3d54a22 100644
--- a/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
+++ b/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
@@ -29,7 +29,7 @@ import domainapp.modules.visit.dom.visit.VisitRepository;
 public class HomePageViewModel {
 
     @ObjectSupport public String title() {
-        return getPetOwners().size() + " pet owners, " + getFutureVisits() + " future visits";
+        return getPetOwners().size() + " pet owners, " + getFutureVisits().size() + " future visits";
     }
 
     @Collection