-
- //filter out specimens of wrong type (only if an associated taxon was selected)
- if(selectedTaxon!=null && !specimenType.equals(SpecimenOrObservationType.Unknown)){
- List<SpecimenOrObservationBase> specimensOfCorrectType = new ArrayList<SpecimenOrObservationBase>();
- for(SpecimenOrObservationBase<?> occurrence:occurrences){
- if(occurrence.getRecordBasis().equals(specimenType)
- || occurrence.getRecordBasis().isKindOf(specimenType)){
- specimensOfCorrectType.add(occurrence);
- }
- }
- occurrences = specimensOfCorrectType;
- }
-
- //filter out (un-)assigned specimens
- if(selectedTaxon==null){
- int selectionIndex = derivateSearchComposite.getComboTaxonAssignment().getSelectionIndex();
- List<SpecimenOrObservationBase<?>> specimenWithAssociations = new ArrayList<SpecimenOrObservationBase<?>>();
- if(selectionIndex!=DerivateSearchComposite.ALL_SPECIMENS){
- for (SpecimenOrObservationBase specimenOrObservationBase : occurrences) {
- Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listAssociatedTaxa(specimenOrObservationBase, null, null, null, null);
- if(!associatedTaxa.isEmpty()){
- specimenWithAssociations.add(specimenOrObservationBase);
- specimenWithAssociations.addAll(CdmStore.getService(IOccurrenceService.class).getFieldUnits(specimenOrObservationBase.getUuid()));
- }
- }
- }
- if(selectionIndex==DerivateSearchComposite.UNASSIGNED_SPECIMENS){
- occurrences.removeAll(specimenWithAssociations);
- }
- else if(selectionIndex==DerivateSearchComposite.ASSIGNED_SPECIMENS){
- occurrences = new ArrayList<SpecimenOrObservationBase>(specimenWithAssociations);
- }
- }