config.setAssociatedTaxonUuid(selectedTaxon!=null?selectedTaxon.getUuid():null);
config.setSpecimenType(specimenType==SpecimenOrObservationType.Unknown?null:specimenType);//unknown := all types
config.setTitleSearchString(queryString);
+ if(selectedTaxon!=null){
+ config.setRetrieveIndirectlyAssociatedSpecimens(true);
+ config.setSpecimenType(null);
+ }
SearchManager searchManager = new SearchManager();
List<SpecimenOrObservationBase> occurrences = searchManager.findOccurrences(config);
+ //filter out specimens of wrong type (only if an associated taxon was selected)
+ if(selectedTaxon!=null){
+ List<SpecimenOrObservationBase> specimensOfCorrectType = new ArrayList<SpecimenOrObservationBase>();
+ for(SpecimenOrObservationBase<?> occurrence:occurrences){
+ if(occurrence.getRecordBasis().equals(comboSpecimenTypeController.getSelection())
+ || occurrence.getRecordBasis().isKindOf(comboSpecimenTypeController.getSelection())){
+ specimensOfCorrectType.add(occurrence);
+ }
+ }
+ occurrences = specimensOfCorrectType;
+ }
+
//filter out assigned specimens
if(derivateSearchComposite.getBtnFilterUndeterminedSpecimen().getSelection()){
List<SpecimenOrObservationBase> specimensWithNoDetermination = new ArrayList<SpecimenOrObservationBase>();