ref #3665 adapt orginal spelling name cache strategy to user wishes, also ref #6630
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 5 Jun 2017 10:31:44 +0000 (12:31 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 5 Jun 2017 10:31:44 +0000 (12:31 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/name/NameCacheStrategyBase.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategy.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategyTest.java

index 837c465f7c5b0629248c4952c1120e961a8ef463..22a7e5a847aa49ce9d9608a110a64836d6e24f96 100644 (file)
@@ -18,7 +18,6 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.common.UTF8;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
@@ -244,7 +243,7 @@ public abstract class NameCacheStrategyBase
                     INonViralName originalNvName = CdmBase.deproxy(originalName);
                     originalNameString = makeOriginalNameString(currentName, originalNvName, originalNameTaggs);
                 }
-                originalNameStrings.add("[as " + UTF8.QUOT_DBL_LOW9 + originalNameString + UTF8.QUOT_DBL_LEFT + "]");
+                originalNameStrings.add("[as \"" + originalNameString + "\"]");
             }
         }
         if (originalNameStrings.size() > 0){
index 159f4d18a49d4bbea6ec9f612ca1a714901157eb..cbbaa158df72729c87751b027dc930a0d68c3393 100644 (file)
@@ -21,13 +21,10 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.common.UTF8;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
-import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.name.HybridRelationship;
 import eu.etaxonomy.cdm.model.name.INonViralName;
-import eu.etaxonomy.cdm.model.name.NameRelationship;
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -818,13 +815,6 @@ public class NonViralNameDefaultCacheStrategy
         return tags;
     }
 
-    protected void addOriginalSpelling(List<TaggedText> tags, INonViralName nonViralName){
-        String originalName = getOriginalNameString(nonViralName, tags);
-        if (StringUtils.isNotBlank(originalName)){
-            tags.add(new TaggedText(TagEnum.name, originalName));
-        }
-    }
-
     /**
      * Adds the tag for the appended phrase if an appended phrase exists
      * @param tags
@@ -837,76 +827,6 @@ public class NonViralNameDefaultCacheStrategy
         }
     }
 
-    private String getOriginalNameString(INonViralName currentName, List<TaggedText> originalNameTaggs) {
-               List<String> originalNameStrings = new ArrayList<>(1);
-               currentName = CdmBase.deproxy(currentName);
-               //Hibernate.initialize(currentName.getRelationsToThisName());
-       for (NameRelationship nameRel : currentName.getRelationsToThisName()){  //handle list, just in case we have strange data; this may result in strange looking results
-                       NameRelationshipType type = nameRel.getType();
-               if(type != null && type.equals(NameRelationshipType.ORIGINAL_SPELLING())){
-                       String originalNameString;
-                       TaxonName originalName = nameRel.getFromName();
-                       if (!originalName.isNonViral()){
-                               originalNameString = originalName.getTitleCache();
-                       }else{
-                               INonViralName originalNvName = CdmBase.deproxy(originalName);
-                               originalNameString = makeOriginalNameString(currentName, originalNvName, originalNameTaggs);
-                       }
-                       originalNameStrings.add("(as " + UTF8.QUOT_DBL_LEFT + originalNameString + UTF8.QUOT_DBL_RIGHT + ")");
-               }
-               }
-       if (originalNameStrings.size() > 0){
-               String result = CdmUtils.concat("", originalNameStrings.toArray(new String[originalNameStrings.size()])) ;
-               return result;
-       }else{
-               return null;
-       }
-       }
-
-
-       private String makeOriginalNameString(INonViralName currentName, INonViralName originalName,
-               List<TaggedText> currentNameTags) {
-               //use cache if necessary
-               String cacheToUse = null;
-               if (originalName.isProtectedNameCache() && StringUtils.isNotBlank(originalName.getNameCache())){
-                       cacheToUse = originalName.getNameCache();
-               }else if (originalName.isProtectedTitleCache() && StringUtils.isNotBlank(originalName.getTitleCache())){
-                       cacheToUse = originalName.getTitleCache();
-               }else if (originalName.isProtectedFullTitleCache() && StringUtils.isNotBlank(originalName.getFullTitleCache())){
-                       cacheToUse = originalName.getFullTitleCache();
-               }
-               if (cacheToUse != null){
-                       return cacheToUse;
-               }
-               //use atomized data
-               //get originalNameParts array
-               String originalNameString = originalName.getNameCache();
-               if (originalNameString == null){
-                       originalNameString = originalName.getTitleCache();
-               }
-               if (originalNameString == null){  //should not happen
-                       originalNameString = originalName.getFullTitleCache();
-               }
-               String[] originalNameSplit = originalNameString.split("\\s+");
-
-               //get current name parts
-               String currentNameString = createString(currentNameTags);
-               String[] currentNameSplit = currentNameString.split("\\s+");
-
-               //compute string
-               String result = originalNameString;
-               for (int i = 0; i < Math.min(originalNameSplit.length, currentNameSplit.length); i++){
-                       if (originalNameSplit[i].equals(currentNameSplit[i])){
-                               result = result.replaceFirst(originalNameSplit[i], "").trim();
-                       }
-               }
-               //old
-//             if (originalName.getGenusOrUninomial() != null && originalName.getGenusOrUninomial().equals(currentName.getGenusOrUninomial())){
-//
-//             }
-               return result;
-       }
-
 
        @Override
     public String getLastEpithet(TaxonName taxonName) {
index 754c5775d53c6fc89840a9b83e8d6e62d03a3d0c..ce97b49c62db64fc3e30e97b81bb5b943f13f02e 100644 (file)
@@ -318,14 +318,14 @@ public class NonViralNameDefaultCacheStrategyTest extends NameCacheStrategyTestB
         Assert.assertEquals("Name cache should not show original spelling", "Abies alpa", originalName.getNameCache());
 
        speciesName.addRelationshipFromName(originalName, origSpellingType, null);
-       Assert.assertEquals("Abies alba (as \u201calpa\u201d)", speciesName.getFullTitleCache());
+       Assert.assertEquals("Abies alba [as \"alpa\"]", speciesName.getFullTitleCache());
         Assert.assertEquals("Abies alba", speciesName.getTitleCache());
         Assert.assertEquals("Name cache should not show original spelling", "Abies alba", speciesName.getNameCache());
 
        originalName.setGenusOrUninomial("Apies");
        speciesName.setNameCache(null, false);
        //TODO update cache of current name (species name)
-       Assert.assertEquals("Abies alba (as \u201cApies alpa\u201d)", speciesName.getFullTitleCache());
+       Assert.assertEquals("Abies alba [as \"Apies alpa\"]", speciesName.getFullTitleCache());
         Assert.assertEquals("Abies alba", speciesName.getTitleCache());
         Assert.assertEquals("Name cache should not show original spelling", "Abies alba", speciesName.getNameCache());
 
@@ -335,18 +335,18 @@ public class NonViralNameDefaultCacheStrategyTest extends NameCacheStrategyTestB
        correctName.addRelationshipFromName(originalSpelling, origSpellingType, null);
        Assert.assertEquals("Nepenthes glabrata", correctName.getNameCache());
        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton", correctName.getTitleCache());
-       Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton (as \u201cglabratus\u201d)", correctName.getFullTitleCache());
+       Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton [as \"glabratus\"]", correctName.getFullTitleCache());
 
        correctName.setNomenclaturalReference(citationRef);
-        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, My Reference (as \u201cglabratus\u201d)", correctName.getFullTitleCache());
+        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, My Reference [as \"glabratus\"]", correctName.getFullTitleCache());
         citationRef.setProtectedTitleCache(false);
         citationRef.setTitle("Sp. Pl.");
         citationRef.setDatePublished(TimePeriodParser.parseString("1988"));
         correctName.setFullTitleCache(null, false);
-        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, Sp. Pl. 1988 (as \u201cglabratus\u201d)", correctName.getFullTitleCache());
+        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, Sp. Pl. 1988 [as \"glabratus\"]", correctName.getFullTitleCache());
         correctName.addStatus(NomenclaturalStatus.NewInstance(NomenclaturalStatusType.ILLEGITIMATE()));
         correctName.setFullTitleCache(null, false);
-        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, Sp. Pl. 1988 (as \u201cglabratus\u201d), nom. illeg.", correctName.getFullTitleCache());
+        Assert.assertEquals("Nepenthes glabrata J.R.Turnbull & A.T.Middleton, Sp. Pl. 1988 [as \"glabratus\"], nom. illeg.", correctName.getFullTitleCache());
 
        //TODO add more tests when specification of exact behaviour is clearer