浏览代码

DMY Class (2)

Andrew Grant 3 月之前
父节点
当前提交
afe7e56448

+ 8 - 1
src/main/java/scot/carricksoftware/grantswriter/data/DMY.java

@@ -5,7 +5,8 @@
 
 package scot.carricksoftware.grantswriter.data;
 
-public interface DMY {
+
+public interface DMY extends Comparable<DMY> {
 
     String toString();
 
@@ -21,4 +22,10 @@ public interface DMY {
     @SuppressWarnings({"unused", "SameReturnValue"})
     String getYear();
 
+    void setDay(String day);
+
+    void setMonth(String  month);
+    void setYear(String year) ;
+
+
 }

+ 32 - 6
src/main/java/scot/carricksoftware/grantswriter/data/DMYImpl.java

@@ -5,8 +5,12 @@
 
 package scot.carricksoftware.grantswriter.data;
 
-public class DMYImpl implements DMY {
 
+import org.jetbrains.annotations.NotNull;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DMYImpl implements DMY {
 
     @SuppressWarnings("unused")
     String day;
@@ -19,11 +23,11 @@ public class DMYImpl implements DMY {
     public DMY parse(String string) {
         DMY dmy = new DMYImpl();
         String[] split = string.split("/");
-        day = length2(split[0]);
+        dmy.setDay(split[0]);
 
-        month = length2(split[1]);
+        dmy.setMonth(split[1]);
 
-        year = length4(split[2]);
+        dmy.setYear(split[2]);
         return dmy;
     }
 
@@ -42,6 +46,7 @@ public class DMYImpl implements DMY {
         return year;
     }
 
+    @Override
     public String toString() {
         return day + "/" + month + "/" + year;
     }
@@ -49,12 +54,33 @@ public class DMYImpl implements DMY {
     private final String spaces = "    ";
 
     private String length2(String string) {
-        return (string + spaces).substring(0, 1);
+        return (string.trim() + spaces).substring(0, 1);
     }
 
     private String length4(String string) {
-        return (string + spaces).substring(0, 3);
+        return (string.trim() + spaces).substring(0, 3);
     }
 
 
+    @Override
+    public void setDay(String day) {
+        this.day = day;
+    }
+
+
+    @Override
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+
+    @Override
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    @Override
+    public int compareTo(@NotNull DMY o) {
+        return 0;
+    }
 }

+ 2 - 2
src/main/java/scot/carricksoftware/grantswriter/data/TimeLineData.java

@@ -20,10 +20,10 @@ public interface TimeLineData {
     void add(List<CensusEntry> censusEntryList);
 
     @SuppressWarnings("unused")
-    TreeMap<String, List<String>> getTimeline();
+    TreeMap<DMY, List<String>> getTimeline();
 
     @SuppressWarnings("unused")
-    void setTimeline(TreeMap<String, List<String>> timeline);
+    void setTimeline(TreeMap<DMY, List<String>> timeline);
 
     @SuppressWarnings("unused")
     SortedSet<String> getRefs();

+ 12 - 8
src/main/java/scot/carricksoftware/grantswriter/data/TimeLineDataImpl.java

@@ -17,16 +17,19 @@ import java.util.TreeSet;
 @Component
 public class TimeLineDataImpl implements TimeLineData {
 
-    private TreeMap<String, List<String>> timeline;
+    private TreeMap<DMY, List<String>> timeline;
 
     private SortedSet<String> refs;
 
+    private final DMY dmy;
+
     @SuppressWarnings({"FieldCanBeLocal", "unused"})
     private final TimeLineDateComparator timeLineDateComparator;
 
-    public TimeLineDataImpl(TimeLineDateComparator timeLineDateComparator) {
+    public TimeLineDataImpl(DMY dmy, TimeLineDateComparator timeLineDateComparator) {
+        this.dmy = dmy;
         this.timeLineDateComparator = timeLineDateComparator;
-        this.timeline = new TreeMap<>(new TimeLineDateComparator());
+        this.timeline = new TreeMap<>();
         this.refs = new TreeSet<>();
     }
 
@@ -40,30 +43,31 @@ public class TimeLineDataImpl implements TimeLineData {
     public void add(List<CensusEntry> censusEntryList) {
         for (CensusEntry censusEntry : censusEntryList) {
             String key = censusEntry.getCensus().getCensusDate().label;
-            List<String> values = timeline.get(key);
+            DMY dmyKey = dmy.parse(key);
+            List<String> values = timeline.get(dmyKey);
             if (values == null) {
                 values = new ArrayList<>();
             }
             values.add( "Recorded as being at " +
                     censusEntry.getCensus().getPlace().toString());
-            timeline.put(key, values);
+            timeline.put(dmyKey, values);
 
             if (censusEntry.getPersonalOccupation() != null && !censusEntry.getPersonalOccupation().isEmpty()) {
                 values.add("Occupation recorded as " +
                                 censusEntry.getPersonalOccupation());
-                timeline.put(key, values);
+                timeline.put(dmyKey, values);
             }
             refs.add(censusEntry.getCensus().toString());
         }
     }
 
     @Override
-    public TreeMap<String, List<String>> getTimeline() {
+    public TreeMap<DMY, List<String>> getTimeline() {
         return timeline;
     }
 
     @Override
-    public void setTimeline(TreeMap<String, List<String>> timeline) {
+    public void setTimeline(TreeMap<DMY, List<String>> timeline) {
         this.timeline = timeline;
     }
 

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

@@ -5,9 +5,11 @@
 
 package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers;
 
+import scot.carricksoftware.grantswriter.data.DMY;
+
 import java.util.List;
 import java.util.TreeMap;
 
 public interface WriteTimeLine {
-    void write (TreeMap<String, List<String>> map);
+    void write (TreeMap<DMY, List<String>> map);
 }

+ 6 - 5
src/main/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/WriteTimeLineImpl.java

@@ -9,6 +9,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.springframework.stereotype.Component;
 import scot.carricksoftware.grantswriter.constants.LatexConstants;
+import scot.carricksoftware.grantswriter.data.DMY;
 import scot.carricksoftware.grantswriter.writer.FileWriter;
 import scot.carricksoftware.grantswriter.writer.latex.LatexLongTabLeEnd;
 import scot.carricksoftware.grantswriter.writer.latex.LatexLongTableStart;
@@ -35,7 +36,7 @@ public class WriteTimeLineImpl implements WriteTimeLine {
     }
 
     @Override
-    public void write(TreeMap<String, List<String>> map) {
+    public void write(TreeMap<DMY, List<String>> map) {
         logger.info("PersonSubSectionTimeLineWriterImp::write");
 
         latexLongTableStart.write("l l");
@@ -43,13 +44,13 @@ public class WriteTimeLineImpl implements WriteTimeLine {
         latexLongTabLeEnd.write();
     }
 
-    private void writeTheData(TreeMap<String, List<String>> map) {
+    private void writeTheData(TreeMap<DMY, List<String>> map) {
         logger.info("PersonSubSectionTimeLineWriterImp::writeTheData");
 
-        for (String key : map.keySet()) {
-            var value = map.get(key);
+        for (DMY dmy : map.keySet()) {
+            var value = map.get(dmy);
             for (String event : value) {
-                String builder = key +
+                String builder = dmy.toString() +
                         LatexConstants.TABLE_COLUMN_END +
                         event +
                         LatexConstants.TABLE_LINE_END;

+ 0 - 83
src/test/java/scot/carricksoftware/grantswriter/data/TimeLineDataAddTest.java

@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
- *
- */
-
-package scot.carricksoftware.grantswriter.data;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.springframework.util.LinkedMultiValueMap;
-import scot.carricksoftware.grantswriter.domains.census.Census;
-import scot.carricksoftware.grantswriter.domains.census.CensusEntry;
-import scot.carricksoftware.grantswriter.domains.places.Place;
-import scot.carricksoftware.grantswriter.enums.census.CensusDate;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.SortedSet;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static scot.carricksoftware.grantswriter.GenerateRandomPlaceValues.GetRandomPlace;
-
-@ExtendWith(MockitoExtension.class)
-public class TimeLineDataAddTest {
-
-    @SuppressWarnings({"unused"})
-    private TimeLineData timelineData;
-    private List<CensusEntry> censusEntryList;
-    private CensusEntry censusEntry;
-
-    @Mock
-    private TimeLineDateComparator  timeLineDateComparatorMock;
-
-
-    Census census;
-
-    @BeforeEach
-    void setUp() {
-        timelineData = new TimeLineDataImpl(timeLineDateComparatorMock);
-        Place place = GetRandomPlace();
-
-        census = new Census();
-        census.setPlace(place);
-        census.setCensusDate(CensusDate.CENSUS_1861);
-
-        censusEntry = new CensusEntry();
-        censusEntry.setCensus(census);
-
-        censusEntryList = new ArrayList<>();
-        censusEntryList.add(censusEntry);
-    }
-
-    @SuppressWarnings("unused")
-    private boolean isFound(LinkedMultiValueMap<String, String> timeline, String required) {
-        boolean found = false;
-        Collection<List <String>> test = timeline.values();
-
-        for (List<String> list : test) {
-            for (String s : list) {
-                if (s.equals(required)) {
-                    found = true;
-                    break;
-                }
-            }
-        }
-        return found;
-    }
-
-    @Test
-    void refsTest() {
-        timelineData.add(censusEntryList);
-        SortedSet<String> refs = timelineData.getRefs();
-        assertTrue(refs.contains(censusEntry.getCensus().toString()));
-    }
-
-
-
-}

+ 0 - 95
src/test/java/scot/carricksoftware/grantswriter/data/TimeLineDataGetterAndSetterTest.java

@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
- *
- */
-
-package scot.carricksoftware.grantswriter.data;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-import scot.carricksoftware.grantswriter.enums.census.CensusDate;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static scot.carricksoftware.grantswriter.GenerateCertificateRandomValues.GetRandomString;
-
-@ExtendWith(MockitoExtension.class)
-class TimeLineDataGetterAndSetterTest {
-
-    private TimeLineData timelineData;
-
-
-    @Mock
-    private TimeLineDateComparator  timeLineDateComparatorMock;
-
-    @SuppressWarnings("unused")
-    @Mock
-    private TreeMap<String, List<String>> mapMock;
-
-    @SuppressWarnings("unused")
-    @Mock
-    private TreeSet<CensusDate> censusDateSetMock;
-
-    @BeforeEach
-    void setUp() {
-        timelineData = new TimeLineDataImpl(timeLineDateComparatorMock);
-    }
-
-    @Test
-    void getRefsTest() {
-        assertNotNull(timelineData.getRefs());
-    }
-
-    @Test
-    void setRefsTest() {
-        SortedSet<String> refs = new TreeSet<>();
-        refs.add(GetRandomString());
-        timelineData.setRefs(refs);
-        assertEquals(refs, timelineData.getRefs());
-    }
-
-    @Test
-    void getTimelineTest() {
-        assertEquals(0, timelineData.getTimeline().size());
-    }
-
-    @Test
-    void setTimelineTest() {
-        TreeMap<String, List<String>> timeline   = new TreeMap<>();
-        List<String> stringList = new LinkedList<>();
-        stringList.add(GetRandomString());
-        timeline.put(GetRandomString(), stringList);
-        timelineData.setTimeline(timeline);
-        assertEquals(timeline, timelineData.getTimeline());
-    }
-
-    @SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
-    @Test
-    void clearTimeLineTest() {
-        TreeMap<String, List<String>> timeline   = new TreeMap<>();
-        List<String> stringList = new LinkedList<>();
-        stringList.add(GetRandomString());
-        timeline.put(GetRandomString(), stringList);
-        timelineData.clear();
-        assertEquals(0, timelineData.getTimeline().size());
-    }
-
-    @Test
-    void clearRefsTest() {
-        SortedSet<String> refs = new TreeSet<>();
-        refs.add(GetRandomString());
-        timelineData.setRefs(refs);
-        timelineData.clear();
-        assertEquals(0, timelineData.getRefs().size());
-    }
-
-}

+ 0 - 53
src/test/java/scot/carricksoftware/grantswriter/data/TimeLineDateComparatorTest.java

@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
- *
- */
-
-package scot.carricksoftware.grantswriter.data;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.TreeMap;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-@ExtendWith(MockitoExtension.class)
-class TimeLineDateComparatorTest {
-
-    private TimeLineDateComparator comparator;
-
-    private TreeMap<String, List<String>> map;
-
-    @BeforeEach
-    void setUp() {
-        comparator = new TimeLineDateComparator();
-        map = new TreeMap<>(comparator);
-    }
-
-    @Test
-    void constructorTest() {
-        assertNotNull(comparator);
-    }
-
-    @SuppressWarnings("unused")
-    @Test
-    void newDataIsSortedCorrectly() {
-        List<String> StringList = new ArrayList<>(Arrays.asList("a","b","c"));
-        map.put("25/01/54", StringList);
-        map.put("25/01/52", StringList);
-        map.put("25/01/53", StringList);
-
-        List<String> data = new ArrayList<>();
-        //noinspection UnusedAssignment
-        data = map.get("25/01/54");
-        int dbg = -1;
-    }
-
-
-}