merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / SearchManager.java
index d77912b8d2deaea5e8b5fef2c9eb78fdba545724..91316ef4295e71f11807aabf8da11734c480e39e 100644 (file)
@@ -101,6 +101,8 @@ public class SearchManager {
                return CdmStore.getService(ITaxonService.class).findTaxaAndNamesForEditor(configurator);
        }
 
+       
+       
 
        /**
         * <p>findReferences</p>
@@ -186,13 +188,21 @@ public class SearchManager {
        @Deprecated
        //TODO: method needs to be optimized with a direct SQL query instead of iterating over all specimens
     public List<SpecimenOrObservationBase> findOccurrencesByType(IIdentifiableEntityServiceConfigurator configurator, SpecimenOrObservationType type){
-           List<SpecimenOrObservationBase> occurrences = new ArrayList<SpecimenOrObservationBase>();
-           for(SpecimenOrObservationBase occurrence:findOccurrences(configurator, true)){
-               if(occurrence.getRecordBasis()==type){
-                   occurrences.add(occurrence);
+           List<SpecimenOrObservationBase> filteredOccurrences = new ArrayList<SpecimenOrObservationBase>();
+           List<SpecimenOrObservationBase> occurrences = findOccurrences(configurator, true);
+           if(type!=null){
+               for(SpecimenOrObservationBase occurrence:occurrences){
+                   if(occurrence.getRecordBasis().equals(type)
+                           || occurrence.getRecordBasis().isKindOf(type)
+                           || type == SpecimenOrObservationType.Unknown){
+                       filteredOccurrences.add(occurrence);
+                   }
                }
            }
-           return occurrences;
+           else{
+               filteredOccurrences = occurrences;
+           }
+           return filteredOccurrences;
        }
 
        public List<User> findUsers(IIdentifiableEntityServiceConfigurator configurator){
@@ -232,5 +242,12 @@ public class SearchManager {
                return configurator.getTitleSearchString().replace(WILDCARD, "%");
        }
 
+       public List findTaxa(IIdentifiableEntityServiceConfigurator configurator) {
+               if(checkLargeResult(CdmStore.getService(ITaxonService.class).countByTitle(configurator))){
+                       return CdmStore.getService(ITaxonService.class).findByTitle(configurator).getRecords();
+               }
+               return NO_RESULTS;
+       }
+
 
 }