fix #9071 fix incorrect formatting for empty but not null partials
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 3 Jul 2020 07:10:34 +0000 (09:10 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 3 Jul 2020 07:11:19 +0000 (09:11 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/format/common/TimePeriodFormatter.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/format/common/TimePeriodFormatterTest.java

index 28c3ed45fdd77f16b8357e70a3c7a2c8c359f4b7..b655f3734fa4c3cd0d69b4580779ad505a5b69fc 100644 (file)
@@ -70,14 +70,20 @@ public class TimePeriodFormatter {
                     start = start.without(MONTH_TYPE);
                 }
             }
-            String strStart = start != null ? start.toString(formatter): null;
-            String strEnd = end != null ? end.toString(formatter): null;
+            @SuppressWarnings("null")
+            String strStart = isNotEmpty(start) ? start.toString(formatter): null;
+            @SuppressWarnings("null")
+            String strEnd = isNotEmpty(end) ? end.toString(formatter): null;
             result = CdmUtils.concat(TimePeriod.SEP, strStart, strEnd);
         }
 
         return result;
     }
 
+    private boolean isNotEmpty(Partial partial) {
+        return partial != null && partial.getFields().length>0;
+    }
+
     public String getYear(TimePeriod tp){
         String result = "";
         if (tp.getStartYear() != null){
index f0d4109899df09c5c296d80b0686371c204ba6a7..c8932a68298681d6695816c63fcd579afd179914 100644 (file)
@@ -24,6 +24,7 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
 public class TimePeriodFormatterTest {
 
     private TimePeriodFormatter formatter;
+    private String endash = UTF8.EN_DASH.toString();
 
     @Before
     public void setUp() throws Exception {
@@ -32,7 +33,6 @@ public class TimePeriodFormatterTest {
 
     @Test
     public void test() {
-        String endash = UTF8.EN_DASH.toString();
         TimePeriod tp1 = TimePeriod.NewInstance(1788,1799);
         assertNotNull(tp1);
         Assert.assertEquals("1788"+endash+"1799", formatter.format(tp1));
@@ -68,4 +68,15 @@ public class TimePeriodFormatterTest {
 
     }
 
+    @Test
+    public void testEmptyEnd() {
+        TimePeriod tp1 = TimePeriod.NewInstance(1788,1799);
+        assertNotNull(tp1);
+        Assert.assertEquals("1788"+endash+"1799", formatter.format(tp1));
+        tp1.setEndYear(null);
+        Assert.assertEquals("1788", formatter.format(tp1));
+        tp1.setEndYear(1799);
+        tp1.setStartYear(null);
+        Assert.assertEquals("1799", formatter.format(tp1));
+    }
 }