Remove ". " from year only nom-refs
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / strategy / cache / reference / NomRefDefaultCacheStrategyBase.java
index 1a1739b3efacbb963d1a89ddbcc8ca4b2578cd90..fa1e79908e867b7f143b07dd954b6d091ba7713d 100644 (file)
@@ -21,9 +21,8 @@ import eu.etaxonomy.cdm.strategy.StrategyBase;
 /**\r
  * @author a.mueller\r
  * @created 29.06.2008\r
 /**\r
  * @author a.mueller\r
  * @created 29.06.2008\r
- * @version 1.0\r
  */\r
  */\r
-public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extends StrategyBase implements  INomenclaturalReferenceCacheStrategy<T>{\r
+public abstract class NomRefDefaultCacheStrategyBase extends StrategyBase implements INomenclaturalReferenceCacheStrategy{\r
        private static final long serialVersionUID = -725290113353165022L;\r
 \r
        @SuppressWarnings("unused")\r
        private static final long serialVersionUID = -725290113353165022L;\r
 \r
        @SuppressWarnings("unused")\r
@@ -36,7 +35,7 @@ public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extend
        \r
 \r
        @Override\r
        \r
 \r
        @Override\r
-       public String getTokenizedNomenclaturalTitel(T ref) {\r
+       public String getTokenizedNomenclaturalTitel(Reference ref) {\r
                String result =  getTitleWithoutYearAndAuthor(ref, true);\r
                result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;\r
                result = addYear(result, ref, true);\r
                String result =  getTitleWithoutYearAndAuthor(ref, true);\r
                result += INomenclaturalReference.MICRO_REFERENCE_TOKEN;\r
                result = addYear(result, ref, true);\r
@@ -44,16 +43,16 @@ public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extend
        }\r
 \r
        @Override\r
        }\r
 \r
        @Override\r
-       public String getTitleCache(T nomenclaturalReference) {\r
+       public String getTitleCache(Reference nomenclaturalReference) {\r
                return getTitleCache(nomenclaturalReference, false);\r
        }\r
 \r
        @Override\r
                return getTitleCache(nomenclaturalReference, false);\r
        }\r
 \r
        @Override\r
-       public String getAbbrevTitleCache(T nomenclaturalReference) {\r
+       public String getAbbrevTitleCache(Reference nomenclaturalReference) {\r
                return getTitleCache(nomenclaturalReference, true);\r
        }\r
        \r
                return getTitleCache(nomenclaturalReference, true);\r
        }\r
        \r
-       private String getTitleCache(T ref, boolean isAbbrev) {\r
+       private String getTitleCache(Reference ref, boolean isAbbrev) {\r
                //TODO needed?\r
                if (isAbbrev && ref.isProtectedAbbrevTitleCache()){\r
                        return ref.getAbbrevTitleCache();\r
                //TODO needed?\r
                if (isAbbrev && ref.isProtectedAbbrevTitleCache()){\r
                        return ref.getAbbrevTitleCache();\r
@@ -67,41 +66,44 @@ public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extend
                if (team != null){\r
                        String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
                        if (teamTitle.length() > 0 ){\r
                if (team != null){\r
                        String teamTitle = CdmUtils.getPreferredNonEmptyString(team.getTitleCache(), team.getNomenclaturalTitle(), isAbbrev, true);\r
                        if (teamTitle.length() > 0 ){\r
-                               result = team.getTitleCache() + afterAuthor + result;\r
+                               String concat = isNotBlank(result) ? afterAuthor : "";\r
+                               result = team.getTitleCache() + concat + result;\r
                        }\r
                        \r
                }\r
                return result;\r
        }\r
        \r
                        }\r
                        \r
                }\r
                return result;\r
        }\r
        \r
-       protected abstract String getTitleWithoutYearAndAuthor(T reference, boolean isAbbrev);\r
+       protected abstract String getTitleWithoutYearAndAuthor(Reference reference, boolean isAbbrev);\r
 \r
        \r
 \r
        \r
-       public String getCitation(T referenceBase) {\r
+       @Override\r
+       public String getCitation(Reference referenceBase) {\r
                StringBuilder stringBuilder = new StringBuilder();\r
                \r
                StringBuilder stringBuilder = new StringBuilder();\r
                \r
+               String nextConcat = "";\r
+               \r
                TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
                if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
                TeamOrPersonBase<?> team = referenceBase.getAuthorTeam();\r
                if (team != null &&  ! (team.getTitleCache() == null) && ! team.getTitleCache().trim().equals("")){\r
-                       //String author = CdmUtils.Nz(team == null? "" : team.getTitleCache());\r
-                       stringBuilder.append(team.getTitleCache() + afterAuthor);\r
+                       stringBuilder.append(team.getTitleCache() );\r
+                       nextConcat = afterAuthor;\r
                }\r
                \r
                }\r
                \r
-               String year = CdmUtils.Nz(referenceBase.getYear());\r
-               if (!"".equals(year)){\r
-                       stringBuilder.append(beforeYear + year);\r
+               String year = referenceBase.getYear();\r
+               if (StringUtils.isNotBlank(year)){\r
+                       stringBuilder.append(nextConcat + year);\r
                }\r
                \r
                return stringBuilder.toString();\r
        }\r
        \r
                }\r
                \r
                return stringBuilder.toString();\r
        }\r
        \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.cdm.strategy.cache.reference.INomenclaturalReferenceCacheStrategy#getBeforeMicroReference()\r
-        */\r
+\r
+       @Override\r
        public String getBeforeMicroReference(){\r
                return beforeMicroReference;\r
        }\r
        \r
        public String getBeforeMicroReference(){\r
                return beforeMicroReference;\r
        }\r
        \r
-       protected String addYear(String string, T nomRef, boolean useFullDatePublished){\r
+       protected String addYear(String string, Reference nomRef, boolean useFullDatePublished){\r
                String result;\r
                if (string == null){\r
                        return null;\r
                String result;\r
                if (string == null){\r
                        return null;\r
@@ -110,13 +112,14 @@ public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extend
                if (StringUtils.isBlank(year)){\r
                        result = string + afterYear;\r
                }else{\r
                if (StringUtils.isBlank(year)){\r
                        result = string + afterYear;\r
                }else{\r
-                       result = string + beforeYear + year + afterYear;\r
-                       //TODO remove double dots (..) if string ends with "."?  #3645\r
+                       String concat = isBlank(string)  ? "" : string.endsWith(".")? " " : beforeYear;\r
+                       result = string + concat + year + afterYear;\r
                }\r
                return result;\r
        }\r
        \r
                }\r
                return result;\r
        }\r
        \r
-       public String getNomenclaturalCitation(T nomenclaturalReference, String microReference) {\r
+       @Override\r
+       public String getNomenclaturalCitation(Reference nomenclaturalReference, String microReference) {\r
                if (nomenclaturalReference.isProtectedTitleCache()){\r
                        return nomenclaturalReference.getTitleCache();\r
                }\r
                if (nomenclaturalReference.isProtectedTitleCache()){\r
                        return nomenclaturalReference.getTitleCache();\r
                }\r
@@ -126,6 +129,9 @@ public abstract class NomRefDefaultCacheStrategyBase<T extends Reference> extend
                        microReference = getBeforeMicroReference() + microReference;\r
                }\r
                result = result.replaceAll(INomenclaturalReference.MICRO_REFERENCE_TOKEN, microReference);\r
                        microReference = getBeforeMicroReference() + microReference;\r
                }\r
                result = result.replaceAll(INomenclaturalReference.MICRO_REFERENCE_TOKEN, microReference);\r
+               if (result.startsWith(". ")){\r
+                       result = result.substring(2);\r
+               }\r
                return result;\r
        }\r
 \r
                return result;\r
        }\r
 \r