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