Răsfoiți Sursa

TimeLineData::add

Andrew Grant 3 luni în urmă
părinte
comite
0d1be4d19c

+ 11 - 0
src/main/java/scot/carricksoftware/grantswriter/data/TimelineDataImpl.java

@@ -34,6 +34,17 @@ public class TimelineDataImpl implements TimelineData {
 
     @Override
     public void add(List<CensusEntry> censusEntryList) {
+        for (CensusEntry censusEntry : censusEntryList) {
+            timeline.put(censusEntry.getCensus().getCensusDate().label,
+                    "Recorded as being at " +
+                            censusEntry.getCensus().getPlace().toString());
+            if (censusEntry.getPersonalOccupation() != null && !censusEntry.getPersonalOccupation().isEmpty()) {
+                timeline.put(censusEntry.getCensus().getCensusDate().label,
+                        "Occupation recorded as " +
+                                censusEntry.getPersonalOccupation());
+            }
+            refs.add(censusEntry.getCensus().toString());
+        }
 
     }
 

+ 36 - 0
src/main/java/scot/carricksoftware/grantswriter/domains/census/Census.java

@@ -5,9 +5,45 @@
 
 package scot.carricksoftware.grantswriter.domains.census;
 
+import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
 import scot.carricksoftware.grantswriter.BaseEntity;
+import scot.carricksoftware.grantswriter.domains.places.Place;
+import scot.carricksoftware.grantswriter.enums.census.CensusDate;
 
 @Entity
 public class Census extends BaseEntity {
+
+    @Enumerated(EnumType.STRING)
+    @Column(name = "`census_date`")
+    private CensusDate censusDate;
+
+    @ManyToOne
+    @JoinColumn(name = "`place_id`")
+    private Place place;
+
+    @Override
+    public String toString() {
+        return place.toString() + ", " + censusDate.label;
+    }
+
+    public CensusDate getCensusDate() {
+        return censusDate;
+    }
+
+    public void setCensusDate(CensusDate censusDate) {
+        this.censusDate = censusDate;
+    }
+
+    public Place getPlace() {
+        return place;
+    }
+
+    public void setPlace(Place place) {
+        this.place = place;
+    }
 }

+ 26 - 1
src/main/java/scot/carricksoftware/grantswriter/domains/census/CensusEntry.java

@@ -5,6 +5,7 @@
 
 package scot.carricksoftware.grantswriter.domains.census;
 
+import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
 import jakarta.persistence.JoinColumn;
 import jakarta.persistence.ManyToOne;
@@ -14,6 +15,8 @@ import scot.carricksoftware.grantswriter.domains.people.Person;
 @Entity
 public class CensusEntry extends BaseEntity {
 
+    @SuppressWarnings({"unused", "JpaDataSourceORMInspection"})
+    @Column(name = "`name`")
     private String name;
 
     @SuppressWarnings("JpaDataSourceORMInspection")
@@ -22,16 +25,38 @@ public class CensusEntry extends BaseEntity {
     private Census census;
 
 
-    @SuppressWarnings("JpaDataSourceORMInspection")
+    @SuppressWarnings({"JpaDataSourceORMInspection", "unused"})
     @ManyToOne
     @JoinColumn(name = "`person_id`")
     private Person person;
 
+    @SuppressWarnings("JpaDataSourceORMInspection")
+    @Column(name = "`personal_occupation`")
+    private String personalOccupation;
+
+
     public void setName(String name) {
         this.name = name;
     }
 
+    @SuppressWarnings("unused")
     public void setPerson(Person person) {
         this.person = person;
     }
+
+    public Census getCensus() {
+        return census;
+    }
+
+    public void setCensus(Census census) {
+        this.census = census;
+    }
+
+    public String getPersonalOccupation() {
+        return personalOccupation;
+    }
+
+    public void setPersonalOccupation(String personalOccupation) {
+        this.personalOccupation = personalOccupation;
+    }
 }

+ 26 - 0
src/main/java/scot/carricksoftware/grantswriter/domains/places/Country.java

@@ -0,0 +1,26 @@
+/*
+ * Copyright (c)  02 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grantswriter.domains.places;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import scot.carricksoftware.grantswriter.BaseEntity;
+
+
+@Entity
+public class Country extends BaseEntity {
+
+    @Column(name = "`name`")
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 46 - 0
src/main/java/scot/carricksoftware/grantswriter/domains/places/Place.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright (c)  02 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grantswriter.domains.places;
+
+
+import jakarta.persistence.*;
+import scot.carricksoftware.grantswriter.BaseEntity;
+
+@Entity
+public class Place extends BaseEntity {
+
+    @Column(name = "`name`")
+    private String name;
+
+    @ManyToOne
+    @JoinColumn(name = "`region_id`")
+    private Region region;
+
+    @SuppressWarnings("unused")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @SuppressWarnings("unused")
+    public Region getRegion() {
+        return region;
+    }
+
+    public void setRegion(Region region) {
+        this.region = region;
+    }
+
+    @Override
+    public String toString() {
+        return name +
+                ", " + region.getName() +
+                ", " + region.getCountry().getName();
+    }
+}

+ 38 - 0
src/main/java/scot/carricksoftware/grantswriter/domains/places/Region.java

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c)  02 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grantswriter.domains.places;
+
+
+import jakarta.persistence.*;
+import scot.carricksoftware.grantswriter.BaseEntity;
+
+@Entity
+public class Region extends BaseEntity {
+
+    @Column(name = "`name`")
+    private String name;
+
+    @ManyToOne
+    @JoinColumn(name = "`country_id`")
+    private Country country;
+
+    @SuppressWarnings("unused")
+    public String getName() {
+        return name;
+    }
+
+    public Country getCountry() {
+        return country;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setCountry(Country country) {
+        this.country = country;
+    }
+}

+ 3 - 0
src/main/java/scot/carricksoftware/grantswriter/enums/census/CensusDate.java

@@ -25,4 +25,7 @@ public enum CensusDate {
     CensusDate(String label) {
         this.label = label;
     }
+
+
+
 }

+ 91 - 8
src/test/java/scot/carricksoftware/grantswriter/data/TimelineDataAddTest.java

@@ -10,22 +10,105 @@ import org.junit.jupiter.api.Test;
 
 import scot.carricksoftware.grantswriter.domains.census.Census;
 import scot.carricksoftware.grantswriter.domains.census.CensusEntry;
+import scot.carricksoftware.grantswriter.domains.places.Country;
+import scot.carricksoftware.grantswriter.domains.places.Place;
+import scot.carricksoftware.grantswriter.domains.places.Region;
+import scot.carricksoftware.grantswriter.enums.census.CensusDate;
 
-class TimelineDataAddTest {
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.SortedSet;
 
-    @SuppressWarnings({"FieldCanBeLocal", "unused"})
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static scot.carricksoftware.grantswriter.GenerateCertificateRandomValues.GetRandomString;
+
+
+public class TimelineDataAddTest {
+
+    @SuppressWarnings({"unused"})
     private TimelineData timelineData;
+    private List<CensusEntry> censusEntryList;
+    private Place place;
+    private CensusDate censusDate;
+    private CensusEntry censusEntry;
 
     @BeforeEach
     void setUp() {
         timelineData = new TimelineDataImpl();
+        Country country = getRandomCountry();
+        Region region = getRandomRegion();
+        region.setCountry(country);
+        place = getRandomPlace();
+        place.setRegion(region);
+
+        Census census = new Census();
+        census.setPlace(place);
+        censusDate = CensusDate.CENSUS_1861;
+        census.setCensusDate(CensusDate.CENSUS_1861);
+
+        censusEntry = new CensusEntry();
+        censusEntry.setCensus(census);
+
+        censusEntryList = new ArrayList<>();
+        censusEntryList.add(censusEntry);
+
+    }
+
+    @SuppressWarnings("unused")
+    @Test
+    void addTestWhereTest() {
+        timelineData.add(censusEntryList);
+        SortedMap<String, String> timeline = timelineData.getTimeline();
+        String required = "Recorded as being at " + place.toString();
+
+        assertTrue(timeline.containsKey(censusDate.label));
+        assertTrue(timeline.containsValue(required));
     }
 
-   @SuppressWarnings("unused")
-   @Test
-    void addTest() {
-       CensusEntry censusEntry = new CensusEntry();
-       Census census = new Census();
-   }
+    @Test
+    void addTestOccupationTest() {
+        String occupation = GetRandomString();
+        censusEntry.setPersonalOccupation(occupation);
+        timelineData.add(censusEntryList);
+        SortedMap<String, String> timeline = timelineData.getTimeline();
+        String required = "Occupation recorded as " + occupation;
+
+        assertTrue(timeline.containsValue(required));
+    }
+
+    @Test
+    void addTestNoOccupationTest() {
+        timelineData.add(censusEntryList);
+        SortedMap<String, String> timeline = timelineData.getTimeline();
+
+        assertFalse(timeline.containsValue("Occupation"));
+    }
+
+    @Test
+    void refsTest() {
+        timelineData.add(censusEntryList);
+        SortedSet<String> refs = timelineData.getRefs();
+        assertTrue(refs.contains(censusEntry.getCensus().toString()));
+    }
+
+    private Place getRandomPlace() {
+        Place place = new Place();
+        place.setName(GetRandomString());
+        return place;
+    }
+
+    private Region getRandomRegion() {
+        Region region = new Region();
+        region.setName(GetRandomString());
+        return region;
+    }
+
+    private Country getRandomCountry() {
+        Country country = new Country();
+        country.setName(GetRandomString());
+        return country;
+    }
 
 }