ref #10057 adapt TaxonBaseDefaultCacheStrategy to secSource.accessed
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 26 Jul 2022 18:07:43 +0000 (20:07 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 26 Jul 2022 18:07:43 +0000 (20:07 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategy.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/taxon/TaxonBaseDefaultCacheStrategyTest.java

index 4badd19f8bd462697600179751f3f7cebc832fa4..cf8b4a6ba59f3bccd6a497d1bc11d75f843b8c0e 100644 (file)
@@ -16,6 +16,7 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.format.reference.OriginalSourceFormatter;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
@@ -163,6 +164,8 @@ public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase>
 
         Reference sec = taxonBase.getSec();
         sec = HibernateProxyHelper.deproxy(sec);
+        TimePeriod sourceAccessed = taxonBase.getSecSource() == null ? null : taxonBase.getSecSource().getAccessed();
+
         String secRef;
         if (sec == null){
             //missing sec
@@ -179,15 +182,19 @@ public class TaxonBaseDefaultCacheStrategy<T extends TaxonBase>
                     sec.getAuthorship() != null &&
                     isNotBlank(sec.getAuthorship().getTitleCache()) &&
                     isNotBlank(sec.getYear())){
-                secRef = OriginalSourceFormatter.INSTANCE.format(sec, null);  //microRef is handled later
+                secRef = OriginalSourceFormatter.INSTANCE.format(sec, null, sourceAccessed);  //microRef is handled later
             }else if ((sec.isDynamic())
                     && titleExists(sec)){  //maybe we should also test protected caches (but which one, the abbrev cache or the titleCache?
                 secRef = isNotBlank(sec.getAbbrevTitle())? sec.getAbbrevTitle() : sec.getTitle();
-                String secDate = sec.getYear();
-                if (isBlank(secDate) && sec.getAccessed() != null){
-                    secDate = String.valueOf(sec.getAccessed().getYear());
+                String year = sourceAccessed == null? null:sourceAccessed.getYear();
+                if (isBlank(year) && sec.getAccessed() != null){
+                    year = String.valueOf(sec.getAccessed().getYear());
+                }
+                if (isBlank(year) && sec.getYear() != null){
+                    year = sec.getYear();
                 }
-                secRef = CdmUtils.concat(" ", secRef, secDate);
+
+                secRef = CdmUtils.concat(" ", secRef, year);
             }else{
                 secRef = sec.getTitleCache();
                 //TODO maybe not always correct
index c7b3f1505f6da9fbd348f1ca99e96c63c83e16e2..59bd45962ab6e4a90d7e14f13e3fe6e526f92993 100644 (file)
@@ -20,6 +20,7 @@ import org.junit.Test;
 import eu.etaxonomy.cdm.common.URI;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
 import eu.etaxonomy.cdm.model.name.IBotanicalName;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -231,6 +232,9 @@ public class TaxonBaseDefaultCacheStrategyTest extends TermTestBase {
         taxonBase.setTitleCache(null, false);
         Assert.assertEquals("Abies alba (L.) Mill. sec. MLW 1983", taxonBase.getTitleCache());
 
+        VerbatimTimePeriod accessed = TimePeriodParser.parseStringVerbatim("5 Mar 2014");
+        taxonBase.getSecSource().setAccessed(accessed);
+        Assert.assertEquals("Abies alba (L.) Mill. sec. MLW 2014", taxonBase.getTitleCache());
     }
 
     @Test