فهرست منبع

GatherMarriageCertificateFirstWitnessTimeLineData
GatherMarriageCertificateSecondWitnessTimeLineData

Andrew Grant 1 ماه پیش
والد
کامیت
79f8e23c68

+ 25 - 1
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/GatherMarriageCertificateTimeLineDataImpl.java

@@ -13,6 +13,8 @@ import scot.carricksoftware.grantswriter.domains.people.Person;
 import scot.carricksoftware.grantswriter.services.certificates.marriagecertificate.MarriageCertificateService;
 import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateBrideTimeLineData;
 import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificate.MarriageCertificate;
+import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateFirstWitnessTimeLineDataImpl;
+import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateSecondWitnessTimeLineDataImpl;
 import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateGroomTimeLineData;
 
 import java.util.List;
@@ -25,13 +27,17 @@ public class GatherMarriageCertificateTimeLineDataImpl implements GatherMarriage
     private final MarriageCertificateService marriageCertificateService;
     private final GatherMarriageCertificateBrideTimeLineData gatherMarriageCertificateBrideTimeLineData;
     private final GatherMarriageCertificateGroomTimeLineData gatherMarriageCertificateGroomTimeLineData;
+    private final GatherMarriageCertificateFirstWitnessTimeLineDataImpl gatherMarriageCertificateFirstWitnessTimeLineDataImpl;
+    private final GatherMarriageCertificateSecondWitnessTimeLineDataImpl gatherMarriageCertificateSecondWitnessTimeLineDataImpl;
 
     public GatherMarriageCertificateTimeLineDataImpl(MarriageCertificateService marriageCertificateService,
                                                      GatherMarriageCertificateBrideTimeLineData gatherMarriageCertificateBrideTimeLineData,
-                                                     GatherMarriageCertificateGroomTimeLineData gatherMarriageCertificateGroomTimeLineData) {
+                                                     GatherMarriageCertificateGroomTimeLineData gatherMarriageCertificateGroomTimeLineData, GatherMarriageCertificateFirstWitnessTimeLineDataImpl gatherMarriageCertificateFirstWitnessTimeLineDataImpl, GatherMarriageCertificateSecondWitnessTimeLineDataImpl gatherMarriageCertificateSecondWitnessTimeLineDataImpl) {
         this.marriageCertificateService = marriageCertificateService;
         this.gatherMarriageCertificateBrideTimeLineData = gatherMarriageCertificateBrideTimeLineData;
         this.gatherMarriageCertificateGroomTimeLineData = gatherMarriageCertificateGroomTimeLineData;
+        this.gatherMarriageCertificateFirstWitnessTimeLineDataImpl = gatherMarriageCertificateFirstWitnessTimeLineDataImpl;
+        this.gatherMarriageCertificateSecondWitnessTimeLineDataImpl = gatherMarriageCertificateSecondWitnessTimeLineDataImpl;
     }
 
     @Override
@@ -39,6 +45,8 @@ public class GatherMarriageCertificateTimeLineDataImpl implements GatherMarriage
         logger.debug("GatherDeathCertificateTimeLineDataImpl::gather");
         gatherBride(person);
         gatherGroom(person);
+        gatherFirstWitness(person);
+        gatherSecondWitness(person);
     }
 
     private void gatherBride(Person person) {
@@ -57,4 +65,20 @@ public class GatherMarriageCertificateTimeLineDataImpl implements GatherMarriage
         }
     }
 
+    private void gatherFirstWitness(Person person) {
+        logger.debug("GatherDeathCertificateTimeLineDataImpl::gatherFirstWitness");
+        List<MarriageCertificate> marriageCertificates = marriageCertificateService.findAllByFirstWitness(person);
+        if (!marriageCertificates.isEmpty()) {
+            gatherMarriageCertificateFirstWitnessTimeLineDataImpl.gather(marriageCertificates);
+        }
+    }
+
+    private void gatherSecondWitness(Person person) {
+        logger.debug("GatherDeathCertificateTimeLineDataImpl::gatherSecondWitness");
+        List<MarriageCertificate> marriageCertificates = marriageCertificateService.findAllBySecondWitness(person);
+        if (!marriageCertificates.isEmpty()) {
+            gatherMarriageCertificateSecondWitnessTimeLineDataImpl.gather(marriageCertificates);
+        }
+    }
+
 }

+ 15 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/marriagecertificate/GatherMarriageCertificateFirstWitnessTimeLineData.java

@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate;
+
+import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificate.MarriageCertificate;
+
+import java.util.List;
+
+public interface GatherMarriageCertificateFirstWitnessTimeLineData {
+   @SuppressWarnings("unused")
+   void gather(List<MarriageCertificate> marriageCertificates);
+}

+ 64 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/marriagecertificate/GatherMarriageCertificateFirstWitnessTimeLineDataImpl.java

@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.data.DMY;
+import scot.carricksoftware.grantswriter.data.DMYImpl;
+import scot.carricksoftware.grantswriter.data.TimeLineData;
+import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificate.MarriageCertificate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeMap;
+
+@Component
+public class GatherMarriageCertificateFirstWitnessTimeLineDataImpl implements GatherMarriageCertificateFirstWitnessTimeLineData {
+
+    private final TimeLineData timelineData;
+
+    private static final Logger logger = LogManager.getLogger(GatherMarriageCertificateFirstWitnessTimeLineDataImpl.class);
+
+    public GatherMarriageCertificateFirstWitnessTimeLineDataImpl(TimeLineData timelineData) {
+        this.timelineData = timelineData;
+    }
+
+    @Override
+    public void gather(List<MarriageCertificate> marriageCertificates) {
+        logger.info("GatherMarriageCertificateFirstWitnessTimeLineDataImpl::Gather");
+        for (MarriageCertificate marriageCertificate : marriageCertificates) {
+            addWitnessed(timelineData.getTimeLine(), marriageCertificate);
+            addRefs(marriageCertificate);
+        }
+    }
+
+    @SuppressWarnings("unused")
+    private void addRefs(MarriageCertificate marriageCertificate) {
+        timelineData.getRefs().add("Marriage Certificate for : " + marriageCertificate.getBride() + " and " + marriageCertificate.getGroom());
+    }
+
+    private void addWitnessed(TreeMap<DMY, List<String>> timeLine, MarriageCertificate marriageCertificate) {
+        logger.info("GatherMarriageCertificateFirstWitnessTimeLineDataImpl::AddWitnessed");
+
+        List<String> existingValues = timeLine.get(getDMY(marriageCertificate.getWhenMarried()));
+        if (existingValues == null) {
+            existingValues = new ArrayList<>();
+        }
+
+        existingValues.add("Witnessed the marriage of " + marriageCertificate.getGroom().toString() + " and " + marriageCertificate.getBride().toString());
+
+        timeLine.put(getDMY(marriageCertificate.getWhenMarried()), existingValues);
+
+    }
+
+    private DMY getDMY(String dateKey) {
+        DMY dmyKey = new DMYImpl();
+        dmyKey.parse(dateKey);
+        return dmyKey;
+    }
+}

+ 15 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/marriagecertificate/GatherMarriageCertificateSecondWitnessTimeLineData.java

@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate;
+
+import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificate.MarriageCertificate;
+
+import java.util.List;
+
+public interface GatherMarriageCertificateSecondWitnessTimeLineData {
+   @SuppressWarnings("unused")
+   void gather(List<MarriageCertificate> marriageCertificates);
+}

+ 64 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/marriagecertificate/GatherMarriageCertificateSecondWitnessTimeLineDataImpl.java

@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.data.DMY;
+import scot.carricksoftware.grantswriter.data.DMYImpl;
+import scot.carricksoftware.grantswriter.data.TimeLineData;
+import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificate.MarriageCertificate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeMap;
+
+@Component
+public class GatherMarriageCertificateSecondWitnessTimeLineDataImpl implements GatherMarriageCertificateSecondWitnessTimeLineData {
+
+    private final TimeLineData timelineData;
+
+    private static final Logger logger = LogManager.getLogger(GatherMarriageCertificateSecondWitnessTimeLineDataImpl.class);
+
+    public GatherMarriageCertificateSecondWitnessTimeLineDataImpl(TimeLineData timelineData) {
+        this.timelineData = timelineData;
+    }
+
+    @Override
+    public void gather(List<MarriageCertificate> marriageCertificates) {
+        logger.info("GatherMarriageCertificateSecondWitnessTimeLineDataImpl::Gather");
+        for (MarriageCertificate marriageCertificate : marriageCertificates) {
+            addWitnessed(timelineData.getTimeLine(), marriageCertificate);
+            addRefs(marriageCertificate);
+        }
+    }
+
+    @SuppressWarnings("unused")
+    private void addRefs(MarriageCertificate marriageCertificate) {
+        timelineData.getRefs().add("Marriage Certificate for : " + marriageCertificate.getBride() + " and " + marriageCertificate.getGroom());
+    }
+
+    private void addWitnessed(TreeMap<DMY, List<String>> timeLine, MarriageCertificate marriageCertificate) {
+        logger.info("GatherMarriageCertificateFirstWitnessTimeLineDataImpl::AddWitnessed");
+
+        List<String> existingValues = timeLine.get(getDMY(marriageCertificate.getWhenMarried()));
+        if (existingValues == null) {
+            existingValues = new ArrayList<>();
+        }
+
+        existingValues.add("Witnessed the marriage of " + marriageCertificate.getGroom().toString() + " and " + marriageCertificate.getBride().toString());
+
+        timeLine.put(getDMY(marriageCertificate.getWhenMarried()), existingValues);
+
+    }
+
+    private DMY getDMY(String dateKey) {
+        DMY dmyKey = new DMYImpl();
+        dmyKey.parse(dateKey);
+        return dmyKey;
+    }
+}

+ 11 - 1
src/test/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/GatherMarriageCertificateTimeLineDataTest.java

@@ -14,7 +14,9 @@ import scot.carricksoftware.grantswriter.domains.certificates.marriagecertificat
 import scot.carricksoftware.grantswriter.domains.people.Person;
 import scot.carricksoftware.grantswriter.services.certificates.marriagecertificate.MarriageCertificateService;
 import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateBrideTimeLineData;
+import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateFirstWitnessTimeLineDataImpl;
 import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateGroomTimeLineData;
+import scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.marriagecertificate.GatherMarriageCertificateSecondWitnessTimeLineDataImpl;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -38,6 +40,12 @@ class GatherMarriageCertificateTimeLineDataTest {
     @Mock
     private GatherMarriageCertificateGroomTimeLineData gatherMarriageCertificateGroomTimeLineDataMock;
 
+    @Mock
+    private GatherMarriageCertificateFirstWitnessTimeLineDataImpl gatherMarriageCertificateFirstWitnessTimeLineData;
+
+    @Mock
+    private GatherMarriageCertificateSecondWitnessTimeLineDataImpl gatherMarriageCertificateSecondWitnessTimeLineData;
+
     List<MarriageCertificate> marriageCertificates;
     Person person;
 
@@ -46,7 +54,9 @@ class GatherMarriageCertificateTimeLineDataTest {
         gatherMarriageCertificateTimeLineData = new GatherMarriageCertificateTimeLineDataImpl(
                 marriageCertificateServiceMock,
                 gatherMarriageCertificateBrideTimeLineDataMock,
-                gatherMarriageCertificateGroomTimeLineDataMock);
+                gatherMarriageCertificateGroomTimeLineDataMock,
+                gatherMarriageCertificateFirstWitnessTimeLineData,
+                gatherMarriageCertificateSecondWitnessTimeLineData);
         marriageCertificates = new ArrayList<>();
 
         person = GetRandomPerson();