bugfix for NVN cache strategy
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 17 Jun 2010 20:11:41 +0000 (20:11 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 17 Jun 2010 20:11:41 +0000 (20:11 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/cache/name/NonViralNameDefaultCacheStrategy.java

index a326f5ac852f1f5a6b1727838c27aeaeeb7ee721..84d7801f6061694dbd83ad7712aeb3af5d11063c 100644 (file)
@@ -168,33 +168,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                String result = "";\r
                //Autonym\r
                if (isAutonym(nonViralName)){\r
-                       String speciesPart = getSpeciesNameCache(nonViralName);\r
-                       //TODO should this include basionym authors and ex authors\r
-                       INomenclaturalAuthor author = nonViralName.getCombinationAuthorTeam();\r
-                       String authorPart = "";\r
-                       if (author != null){\r
-                               authorPart = CdmUtils.Nz(author.getNomenclaturalTitle());\r
-                       }\r
-                       INomenclaturalAuthor basAuthor = nonViralName.getBasionymAuthorTeam();\r
-                       String basAuthorPart = "";\r
-                       if (basAuthor != null){\r
-                               basAuthorPart = CdmUtils.Nz(basAuthor.getNomenclaturalTitle());\r
-                       }\r
-                       if (! "".equals(basAuthorPart)){\r
-                               authorPart = "("+ basAuthorPart +")" + authorPart;\r
-                       }\r
-                       String infraSpeciesPart = (CdmUtils.Nz(nonViralName.getInfraSpecificEpithet()));\r
-\r
-                       String infraSpeciesSeparator = "";\r
-                       if (nonViralName.getRank() == null || !nonViralName.getRank().isInfraSpecific()){\r
-                               //TODO handle exception\r
-                               logger.warn("Rank for autonym does not exist or is not lower than species !!");\r
-                       }else{\r
-                               infraSpeciesSeparator = nonViralName.getRank().getAbbreviation();\r
-                       }\r
-                       \r
-                       result = CdmUtils.concat(" ", new String[]{speciesPart, authorPart, infraSpeciesSeparator, infraSpeciesPart});\r
-                       result = result.trim().replace("null", "");\r
+                       result = handleAutonym(nonViralName);\r
                }else{ //not Autonym\r
                        String nameCache = nonViralName.getNameCache();  //OLD: CdmUtils.Nz(getNameCache(nonViralName));\r
                        if (nameIncludesAuthorship(nonViralName)){\r
@@ -206,6 +180,44 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                }\r
                return result;\r
        }\r
+\r
+\r
+       /**\r
+        * @param nonViralName\r
+        * @param speciesPart\r
+        * @return\r
+        */\r
+       private String handleAutonym(T nonViralName) {\r
+               String result;\r
+               String speciesPart = getSpeciesNameCache(nonViralName);\r
+               //TODO should this include basionym authors and ex authors\r
+               INomenclaturalAuthor author = nonViralName.getCombinationAuthorTeam();\r
+               String authorPart = "";\r
+               if (author != null){\r
+                       authorPart = CdmUtils.Nz(author.getNomenclaturalTitle());\r
+               }\r
+               INomenclaturalAuthor basAuthor = nonViralName.getBasionymAuthorTeam();\r
+               String basAuthorPart = "";\r
+               if (basAuthor != null){\r
+                       basAuthorPart = CdmUtils.Nz(basAuthor.getNomenclaturalTitle());\r
+               }\r
+               if (! "".equals(basAuthorPart)){\r
+                       authorPart = "("+ basAuthorPart +")" + authorPart;\r
+               }\r
+               String infraSpeciesPart = (CdmUtils.Nz(nonViralName.getInfraSpecificEpithet()));\r
+\r
+               String infraSpeciesSeparator = "";\r
+               if (nonViralName.getRank() == null || !nonViralName.getRank().isInfraSpecific()){\r
+                       //TODO handle exception\r
+                       logger.warn("Rank for autonym does not exist or is not lower than species !!");\r
+               }else{\r
+                       infraSpeciesSeparator = nonViralName.getRank().getAbbreviation();\r
+               }\r
+               \r
+               result = CdmUtils.concat(" ", new String[]{speciesPart, authorPart, infraSpeciesSeparator, infraSpeciesPart});\r
+               result = result.trim().replace("null", "");\r
+               return result;\r
+       }\r
        \r
        protected boolean nameIncludesAuthorship(NonViralName nonViralName){\r
                Rank rank = nonViralName.getRank();\r
@@ -435,7 +447,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                \r
                protected String getRanklessNameCache(NonViralName nonViralName){\r
                        String result = "";\r
-                       result = (result + (nonViralName.getGenusOrUninomial())).trim().replace("null", "");\r
+                       result = (result + (CdmUtils.Nz(nonViralName.getGenusOrUninomial()))).trim().replace("null", "");\r
                        result += " " + (CdmUtils.Nz(nonViralName.getSpecificEpithet())).trim();\r
                        result += " " + (CdmUtils.Nz(nonViralName.getInfraSpecificEpithet())).trim();\r
                        result = result.trim().replace("null", "");\r
@@ -447,7 +459,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
        \r
                protected String getGenusOrUninomialNameCache(NonViralName nonViralName){\r
                        String result;\r
-                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial());\r
+                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial()).trim();\r
                        result = addAppendedPhrase(result, nonViralName).trim();\r
                        return result;\r
                }\r
@@ -466,7 +478,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                                        infraGenericMarker = "'unhandled infrageneric rank'";\r
                                }\r
                        }\r
-                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial());\r
+                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial()).trim();\r
                        result += " " + infraGenericMarker + " " + (CdmUtils.Nz(nonViralName.getInfraGenericEpithet())).trim().replace("null", "");\r
                        result = addAppendedPhrase(result, nonViralName).trim();\r
                        return result;\r
@@ -475,9 +487,9 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
 //             aggr.|agg.|group\r
                protected String getSpeciesAggregateCache(NonViralName nonViralName){\r
                        String result;\r
-                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial());\r
+                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial()).trim();\r
                        \r
-                       result += " "+getSpeciesAggregateEpithet(nonViralName);\r
+                       result += " " + getSpeciesAggregateEpithet(nonViralName);\r
                        /*result += " " + CdmUtils.Nz(nonViralName.getSpecificEpithet()).trim().replace("null", "");\r
                        String marker;\r
                        try {\r
@@ -507,7 +519,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                \r
                protected String getSpeciesNameCache(NonViralName nonViralName){\r
                        String result;\r
-                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial());\r
+                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial()).trim();\r
                        result += " " + CdmUtils.Nz(nonViralName.getSpecificEpithet()).trim().replace("null", "");\r
                        result = addAppendedPhrase(result, nonViralName).trim();\r
                        result = result.replace("\\s\\", " ");\r
@@ -521,7 +533,7 @@ public class NonViralNameDefaultCacheStrategy<T extends NonViralName> extends Na
                \r
                protected String getInfraSpeciesNameCache(NonViralName nonViralName, boolean includeMarker){\r
                        String result;\r
-                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial());\r
+                       result = CdmUtils.Nz(nonViralName.getGenusOrUninomial()).trim();\r
                        result += " " + (CdmUtils.Nz(nonViralName.getSpecificEpithet()).trim()).replace("null", "");\r
                        if (includeMarker){ \r
                                result += " " + (nonViralName.getRank().getAbbreviation()).trim().replace("null", "");\r