Revision acdb1584
Added by Patrick Plitzner over 6 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java | ||
---|---|---|
25 | 25 |
import org.eclipse.swt.widgets.Shell; |
26 | 26 |
|
27 | 27 |
import eu.etaxonomy.cdm.api.service.IOccurrenceService; |
28 |
import eu.etaxonomy.cdm.api.service.ITaxonService; |
|
28 | 29 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; |
29 | 30 |
import eu.etaxonomy.cdm.model.description.WorkingSet; |
31 |
import eu.etaxonomy.cdm.model.name.Rank; |
|
32 |
import eu.etaxonomy.cdm.model.name.TaxonName; |
|
30 | 33 |
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; |
31 | 34 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
32 | 35 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
... | ... | |
62 | 65 |
Set<TaxonNode> taxonNodes = workingSet.getTaxonSubtreeFilter(); |
63 | 66 |
Set<SpecimenOrObservationBase> specimens = new HashSet<>(); |
64 | 67 |
for (TaxonNode node : taxonNodes) { |
65 |
specimens.addAll(addDescriptionsRecursively(node));
|
|
68 |
specimens.addAll(addSpecimensRecursively(node));
|
|
66 | 69 |
} |
67 | 70 |
list.setInput(specimens); |
68 | 71 |
return composite; |
69 | 72 |
} |
70 | 73 |
|
71 |
private Collection<SpecimenOrObservationBase> addDescriptionsRecursively(TaxonNode node){
|
|
74 |
private Collection<SpecimenOrObservationBase> addSpecimensRecursively(TaxonNode node){
|
|
72 | 75 |
Collection<SpecimenOrObservationBase> specimens = new HashSet<>(); |
73 | 76 |
if(node.getTaxon()!=null){ |
74 | 77 |
Taxon taxon = HibernateProxyHelper.deproxy(node.getTaxon(), Taxon.class); |
75 |
specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null); |
|
78 |
TaxonName name = taxon.getName(); |
|
79 |
//filter by Rank |
|
80 |
if(name!=null && |
|
81 |
(name.getRank().equals(workingSet.getMinRank()) |
|
82 |
|| name.getRank().isHigher(workingSet.getMinRank()) |
|
83 |
|| name.getRank().equals(workingSet.getMaxRank()) |
|
84 |
|| name.getRank().isLower(workingSet.getMaxRank()))){ |
|
85 |
IOccurrenceService service = CdmStore.getService(IOccurrenceService.class); |
|
86 |
//TODO extend FindOccurrencesConfigurator to support area and rank filter |
|
87 |
// FindOccurrencesConfigurator config = new FindOccurrencesConfigurator(); |
|
88 |
// config.setAssociatedTaxonNameUuid(taxon.getUuid()); |
|
89 |
// service.findByTitle(config); |
|
90 |
|
|
91 |
specimens = service.listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null); |
|
92 |
} |
|
76 | 93 |
} |
77 | 94 |
List<TaxonNode> childNodes = node.getChildNodes(); |
78 | 95 |
for (TaxonNode childNode : childNodes) { |
79 |
specimens.addAll(addDescriptionsRecursively(childNode));
|
|
96 |
specimens.addAll(addSpecimensRecursively(childNode));
|
|
80 | 97 |
} |
81 | 98 |
return specimens; |
82 | 99 |
} |
Also available in: Unified diff
ref #7095 Filter by rank when adding descriptions