- when searching for a taxon also the indirectly associated specimens of the derivat...
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 13 May 2015 08:07:10 +0000 (08:07 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 13 May 2015 08:07:10 +0000 (08:07 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateSearchCompositeController.java

index 2715d4c652c833c10e274053c240954bfe4ffadb..460ee23cfc7247c69eb1057cada1934226453c14 100644 (file)
@@ -116,10 +116,26 @@ public class DerivateSearchCompositeController implements Listener{
         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>();