From acdb158440d41e009de3d550fb05ca48ecaf7db1 Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Wed, 10 Jan 2018 12:43:04 +0100
Subject: [PATCH] ref #7095 Filter by rank when adding descriptions
---
.../matrix/SpecimenSelectionDialog.java | 25 ++++++++++++++++---
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java
index 64c53b51f..220a83b3a 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java
@@ -25,8 +25,11 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.description.WorkingSet;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -62,21 +65,35 @@ public class SpecimenSelectionDialog extends Dialog {
Set taxonNodes = workingSet.getTaxonSubtreeFilter();
Set specimens = new HashSet<>();
for (TaxonNode node : taxonNodes) {
- specimens.addAll(addDescriptionsRecursively(node));
+ specimens.addAll(addSpecimensRecursively(node));
}
list.setInput(specimens);
return composite;
}
- private Collection addDescriptionsRecursively(TaxonNode node){
+ private Collection addSpecimensRecursively(TaxonNode node){
Collection specimens = new HashSet<>();
if(node.getTaxon()!=null){
Taxon taxon = HibernateProxyHelper.deproxy(node.getTaxon(), Taxon.class);
- specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
+ TaxonName name = taxon.getName();
+ //filter by Rank
+ if(name!=null &&
+ (name.getRank().equals(workingSet.getMinRank())
+ || name.getRank().isHigher(workingSet.getMinRank())
+ || name.getRank().equals(workingSet.getMaxRank())
+ || name.getRank().isLower(workingSet.getMaxRank()))){
+ IOccurrenceService service = CdmStore.getService(IOccurrenceService.class);
+ //TODO extend FindOccurrencesConfigurator to support area and rank filter
+ // FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
+ // config.setAssociatedTaxonNameUuid(taxon.getUuid());
+ // service.findByTitle(config);
+
+ specimens = service.listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
+ }
}
List childNodes = node.getChildNodes();
for (TaxonNode childNode : childNodes) {
- specimens.addAll(addDescriptionsRecursively(childNode));
+ specimens.addAll(addSpecimensRecursively(childNode));
}
return specimens;
}
--
2.34.1