some bugfixes in CondensedDistribution composition code - #3907
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 25 Jun 2015 16:39:24 +0000 (18:39 +0200)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 25 Jun 2015 16:39:24 +0000 (18:39 +0200)
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/geo/EditGeoServiceUtilities.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/geo/EuroPlusMedCondensedDistributionComposer.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionPortalController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/dto/CondensedDistribution.java

index 86245dca66ed8e8928a5f505624419e8ba8ddbbf..47d01471c75dee9c97190a9b1c980f1a9e2b9d73 100644 (file)
@@ -780,6 +780,9 @@ public class EditGeoServiceUtilities {
     public static CondensedDistribution getCondensedDistribution(Collection<Distribution> filteredDistributions,\r
             CondensedDistributionRecipe recipe, List<Language> langs) {\r
         ICondensedDistributionComposer composer;\r
+        if(recipe == null) {\r
+            throw new NullPointerException("parameter recipe must not be null");\r
+        }\r
         try {\r
             composer = recipe.newCondensedDistributionComposerInstance();\r
         } catch (InstantiationException e) {\r
index a87a62ed89fa98189aa80c680d0a772fd7973ede..d0a2af7585572f87b7546f99a3ebfe6067889f98 100644 (file)
@@ -115,10 +115,14 @@ public class EuroPlusMedCondensedDistributionComposer implements ICondensedDistr
         //1. order by PresenceAbsenceTerms
         Map<PresenceAbsenceTerm, Collection<NamedArea>> byStatus = new HashMap<PresenceAbsenceTerm, Collection<NamedArea>>();
         for(Distribution d : filteredDistributions) {
-            if(!byStatus.containsKey(d.getStatus())) {
-                byStatus.put(d.getStatus(), new HashSet<NamedArea>());
+            PresenceAbsenceTerm status = d.getStatus();
+            if(status == null) {
+                continue;
             }
-            byStatus.get(d.getStatus()).add(d.getArea());
+            if(!byStatus.containsKey(status)) {
+                byStatus.put(status, new HashSet<NamedArea>());
+            }
+            byStatus.get(status).add(d.getArea());
         }
 
         //2. build the area hierarchy
@@ -196,11 +200,14 @@ public class EuroPlusMedCondensedDistributionComposer implements ICondensedDistr
      * @return
      */
     private String statusSymbol(PresenceAbsenceTerm status) {
+        if(status == null) {
+            return "";
+        }
         String symbol = statusSymbols.get(status.getUuid());
         if(symbol == null) {
             symbol = "";
         }
-        return symbol ;
+        return symbol;
     }
 
     private boolean isForeignStatus(PresenceAbsenceTerm status) {
index 9d97ca5d49a0389b2e7a839d9d2183e0f3c9d81d..671807e30b819e4e898ae7da3e786410e1bcd77d 100644 (file)
@@ -256,7 +256,7 @@ public class DescriptionPortalController extends BaseController<DescriptionBase,
             Map<PresenceAbsenceTerm, Color> presenceAbsenceTermColors = EditGeoServiceUtilities.buildStatusColorMap(statusColorsString, termService);\r
 \r
             DistributionInfoDTO dto = geoService.composeDistributionInfoFor(parts, taxonUuid, subAreaPreference, statusOrderPreference,\r
-                    hideMarkedAreas, omitLevels, presenceAbsenceTermColors, LocaleContext.getLanguages(), DISTRIBUTION_INFO_INIT_STRATEGY, null);\r
+                    hideMarkedAreas, omitLevels, presenceAbsenceTermColors, LocaleContext.getLanguages(), DISTRIBUTION_INFO_INIT_STRATEGY, recipe);\r
 \r
             mv.addObject(dto);\r
 \r
index bd3f083c7a6261c5aac3c071f3ea41bf39c63e19..d5eab4d8aae22be8c6a213393d7c27de84506a04 100644 (file)
@@ -103,7 +103,7 @@ public class CondensedDistribution {
         return out.toString();
     }
 
-    class DistributionItem {
+    public class DistributionItem {
 
 
         private PresenceAbsenceTerm status;