ref #7775 Fix source information in description titlecache
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 25 Sep 2018 05:09:17 +0000 (07:09 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 25 Sep 2018 05:09:17 +0000 (07:09 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/description/DescriptionBaseDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/description/SpecimenDescriptionDefaultCacheStrategy.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/description/TaxonDescriptionDefaultCacheStrategy.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/description/TaxonDescriptionDefaultCacheStrategyTest.java

index d49428b10524e9bb822c8bdc10314e4bf05ef1ab..57ea569187ec9fa678103598334d983c7c37fe4b 100644 (file)
@@ -13,10 +13,10 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.strategy.StrategyBase;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 
@@ -30,18 +30,20 @@ public abstract class DescriptionBaseDefaultCacheStrategy<T extends DescriptionB
        @Override
     public String getTitleCache(T description) {
                String title;
-               SpecimenOrObservationBase specimen = description.getDescribedSpecimenOrObservation();
-               if (specimen == null){
+               IdentifiableEntity entity = getDescriptionEntity(description);
+               if (entity == null){
                        title = getFirstPart(description);
                        title = title.replace(FOR, "");
                }else{
-                       title = specimen.getTitleCache();
+                       title = entity.getTitleCache();
                        title = getFirstPart(description) + title;
                }
                return title;
        }
 
-       protected String getFirstPart(T description){
+       protected abstract IdentifiableEntity getDescriptionEntity(T description);
+
+    protected String getFirstPart(T description){
                Set<Marker> markers = description.getMarkers();
                MarkerType markerType = MarkerType.USE();
                Boolean isUseDescription = false;
@@ -52,11 +54,11 @@ public abstract class DescriptionBaseDefaultCacheStrategy<T extends DescriptionB
                }
                String firstPart;
                if (description.isImageGallery()){
-                       firstPart = "Image gallery "+getSourceString(description)+" for ";
+                       firstPart = "Image gallery"+getSourceString(description);
                } else if (isUseDescription) {
-                   firstPart = "Use description "+getSourceString(description)+" for ";
+                   firstPart = "Use description"+getSourceString(description);
                } else {
-                   firstPart = getDescriptionName()+" "+getSourceString(description)+" for ";
+                   firstPart = getDescriptionName()+getSourceString(description);
                }
                return firstPart+FOR;
        }
@@ -70,7 +72,7 @@ public abstract class DescriptionBaseDefaultCacheStrategy<T extends DescriptionB
                    .map(source->source.getCitation().getTitleCache())
                    .collect(Collectors.joining(","));
            if(CdmUtils.isNotBlank(sourceString)){
-               sourceString = "from "+sourceString+" ";
+               sourceString = " from "+sourceString+" ";
            }
            return sourceString;
        }
index 64fe81de0e3157acea1a129ec61efc76f284ce10..9c76f8308745209ffd8e7083f7ebfa3f43ef7a3c 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.strategy.cache.description;
 \r
 import java.util.UUID;\r
 \r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;\r
 \r
 public class SpecimenDescriptionDefaultCacheStrategy extends DescriptionBaseDefaultCacheStrategy<SpecimenDescription> {\r
@@ -28,4 +29,9 @@ public class SpecimenDescriptionDefaultCacheStrategy extends DescriptionBaseDefa
            return "Specimen description";\r
        }\r
 \r
+       @Override\r
+       protected IdentifiableEntity getDescriptionEntity(SpecimenDescription description) {\r
+           return description.getDescribedSpecimenOrObservation();\r
+       }\r
+\r
 }\r
index 565de829c8f71075ebf60f6d6daed699a7f0e828..8dd3b636337a7bfa452d4ac2f45912aeb93ac2d8 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.cdm.strategy.cache.description;
 \r
 import java.util.UUID;\r
 \r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
 public class TaxonDescriptionDefaultCacheStrategy extends DescriptionBaseDefaultCacheStrategy<TaxonDescription>{\r
 \r
@@ -27,25 +27,22 @@ public class TaxonDescriptionDefaultCacheStrategy extends DescriptionBaseDefault
 \r
        @Override\r
     public String getTitleCache(TaxonDescription taxonDescription) {\r
-               String title;\r
-               Taxon taxon = taxonDescription.getTaxon();\r
-               if (taxon == null){\r
-                       title = getFirstPart(taxonDescription);\r
-                       title = title.replace(" for ", "");\r
-               }else{\r
-                       title = taxon.getTitleCache();\r
-                       int secPos = title.indexOf("sec.");\r
-                       if (secPos > 2){\r
-                               title = title.substring(0, secPos).trim();\r
-                       }\r
-                       title = getFirstPart(taxonDescription) + title;\r
+               String title = super.getTitleCache(taxonDescription);\r
+               int secPos = title.indexOf("sec.");\r
+               if (secPos > 2){\r
+                   title = title.substring(0, secPos).trim();\r
                }\r
                return title;\r
        }\r
 \r
        @Override\r
        protected String getDescriptionName() {\r
-           return "Factual Data Set";\r
+           return "Factual data set";\r
+       }\r
+\r
+       @Override\r
+       protected IdentifiableEntity getDescriptionEntity(TaxonDescription description) {\r
+           return description.getTaxon();\r
        }\r
 \r
 }\r
index 194d3149ec958a7853a03b39392ab67bcec8f13e..bd07817d665107354286de21ab11020a4aaefc45 100644 (file)
@@ -49,13 +49,13 @@ public class TaxonDescriptionDefaultCacheStrategyTest {
                sec.setTitleCache("My sec", true);
                Taxon taxon = Taxon.NewInstance(botName, sec);
                TaxonDescription taxonDescription = TaxonDescription.NewInstance(taxon);
-               Assert.assertEquals("Wrong title cache for description", "Factual data for Genus species", taxonDescription.getTitleCache());
+               Assert.assertEquals("Wrong title cache for description", "Factual data set for Genus species", taxonDescription.generateTitle());
                taxonDescription.setImageGallery(true);
-               Assert.assertEquals("Wrong title cache for description", "Image gallery for Genus species", taxonDescription.getTitleCache());
+               Assert.assertEquals("Wrong title cache for description", "Image gallery for Genus species", taxonDescription.generateTitle());
                taxonDescription = TaxonDescription.NewInstance();
-               Assert.assertEquals("Wrong title cache for description", "Factual data", taxonDescription.getTitleCache());
+               Assert.assertEquals("Wrong title cache for description", "Factual data set", taxonDescription.generateTitle());
                taxonDescription.setImageGallery(true);
-               Assert.assertEquals("Wrong title cache for description", "Image gallery", taxonDescription.getTitleCache());
+               Assert.assertEquals("Wrong title cache for description", "Image gallery", taxonDescription.generateTitle());
 
        }