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;
Set<TaxonNode> taxonNodes = workingSet.getTaxonSubtreeFilter();
Set<SpecimenOrObservationBase> specimens = new HashSet<>();
for (TaxonNode node : taxonNodes) {
- specimens.addAll(addDescriptionsRecursively(node));
+ specimens.addAll(addSpecimensRecursively(node));
}
list.setInput(specimens);
return composite;
}
- private Collection<SpecimenOrObservationBase> addDescriptionsRecursively(TaxonNode node){
+ private Collection<SpecimenOrObservationBase> addSpecimensRecursively(TaxonNode node){
Collection<SpecimenOrObservationBase> 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<TaxonNode> childNodes = node.getChildNodes();
for (TaxonNode childNode : childNodes) {
- specimens.addAll(addDescriptionsRecursively(childNode));
+ specimens.addAll(addSpecimensRecursively(childNode));
}
return specimens;
}