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;
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<>());
}
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
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;
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();
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;
* 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);
/* 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);