ref #8651 remove MarkerType.Computed where possible
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 12 Nov 2019 08:26:37 +0000 (09:26 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 12 Nov 2019 08:26:37 +0000 (09:26 +0100)
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/utility/DescriptionUtility.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/description/DistributionAggregationTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/utility/DescriptionUtilityTest.java

index 5ac7905ef186a1d9fb5d3fb8c134dd7776c86750..d7cc74491e49c036f54eac9bea315685f42c2e92 100644 (file)
@@ -20,6 +20,7 @@ import eu.etaxonomy.cdm.api.service.DistributionTree;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 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.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.location.NamedArea;
@@ -152,7 +153,7 @@ public class DescriptionUtility {
             for (NamedArea area : filteredDistributions.keySet()) {
                 for (Distribution distribution : filteredDistributions.get(area)) {
                     // this is only required for rule 1
-                    if(distribution.hasMarker(MarkerType.COMPUTED(), true)){
+                    if(isAggregated(distribution)){
                         if(!computedDistributions.containsKey(area)){
                             computedDistributions.put(area, new HashSet<>());
                         }
@@ -219,6 +220,18 @@ public class DescriptionUtility {
         return valuesOfAllInnerSets(filteredDistributions.values());
     }
 
+    private static boolean isAggregated(Distribution distribution) {
+        if (distribution.hasMarker(MarkerType.COMPUTED(), true)){
+            return true;
+        }else{
+            DescriptionBase<?> desc = distribution.getInDescription();
+            if (desc != null && desc.isAggregatedDistribution()){
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * @param hiddenAreaMarkerTypes
      * @param area
index ed3eec54b19e764f49049b9aaddfdfa34667af27..8fa3daaa8298903c3bd2dcda0c554f254dc0cd86 100644 (file)
@@ -40,7 +40,6 @@ import eu.etaxonomy.cdm.common.JvmLimitsException;
 import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Extension;
-import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.Distribution;
@@ -496,7 +495,7 @@ public class DistributionAggregationTest extends CdmTransactionalIntegrationTest
         Taxon lapsana_communis = (Taxon) taxonService.load(T_LAPSANA_COMMUNIS_UUID);
         int computedDescriptionsCnt = 0;
         for(TaxonDescription description : lapsana_communis.getDescriptions()) {
-            if(description.hasMarker(MarkerType.COMPUTED(), true)) {
+            if(description.isAggregatedDistribution()) {
                 computedDescriptionsCnt++;
                 assertEquals(2, description.getElements().size());
                 Distribution distribution = (Distribution)description.getElements().iterator().next();
index f3c818d4d7802279f0ddd0531e7c2bd6cce1cbf5..c4a2c952dfee99adb90cae61d4e344ecc997d422 100644 (file)
@@ -22,8 +22,10 @@ import org.unitils.spring.annotation.SpringBeanByType;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.description.DescriptionType;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.Country;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
@@ -65,11 +67,16 @@ public class DescriptionUtilityTest extends CdmTransactionalIntegrationTest {
          * available, the computed data has to be given preference over other
          * data.
          */
-        distributions.add(Distribution.NewInstance(Country.GERMANY(), PresenceAbsenceTerm.NATIVE()));
+        TaxonDescription aggregatedDescription = TaxonDescription.NewInstance();
+        aggregatedDescription.addType(DescriptionType.AGGREGATED_DISTRIBUTION);
+
+        Distribution germanyNative = Distribution.NewInstance(Country.GERMANY(), PresenceAbsenceTerm.NATIVE());
+        distributions.add(germanyNative);
 
-        Distribution computedDistribution = Distribution.NewInstance(Country.GERMANY(), PresenceAbsenceTerm.INTRODUCED());
-        computedDistribution.addMarker(Marker.NewInstance(MarkerType.COMPUTED(), true));
-        distributions.add(computedDistribution);
+        Distribution germanyIntroduced = Distribution.NewInstance(Country.GERMANY(), PresenceAbsenceTerm.INTRODUCED());
+        aggregatedDescription.addElement(germanyIntroduced);
+
+        distributions.add(germanyIntroduced);
 
         statusOrderPreference= true;
         filteredDistributions = DescriptionUtility.filterDistributions(distributions, hideMarkedAreas, true, statusOrderPreference, subAreaPreference);
@@ -79,8 +86,11 @@ public class DescriptionUtilityTest extends CdmTransactionalIntegrationTest {
        /* distributions for parent areas are only
         * removed if direct sub areas have the same status and if subAreaPreference=TRUE which is not the case here
         */
+        TaxonDescription aggParentDescription = TaxonDescription.NewInstance();
+        aggParentDescription.addType(DescriptionType.AGGREGATED_DISTRIBUTION);
+
         Distribution parentComputedDistribution = Distribution.NewInstance(berlin, PresenceAbsenceTerm.INTRODUCED());
-        parentComputedDistribution.addMarker(Marker.NewInstance(MarkerType.COMPUTED(), true));
+        aggParentDescription.addElement(parentComputedDistribution);
         distributions.add(parentComputedDistribution);
 
         filteredDistributions = DescriptionUtility.filterDistributions(distributions, hideMarkedAreas, true, statusOrderPreference, subAreaPreference);