fix #9060: fix NPE in term search
authorKatja Luther <k.luther@bgbm.org>
Wed, 10 Jun 2020 10:01:05 +0000 (12:01 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 10 Jun 2020 10:01:05 +0000 (12:01 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/specimen/SpecimenProviderSelectionController.java

index e92700b762ee5d9bcd48bc112abf000964b83bd4..dc8634e05f028bef2519a3bc1a79717807930025 100644 (file)
@@ -22,6 +22,7 @@ import org.eclipse.swt.widgets.Composite;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
@@ -68,12 +69,14 @@ public class TermSearchController extends SearchController<TermSearchResult, Abs
     protected List<TermSearchResult> searchResults(String searchString){
         List<TermSearchResult> searchResults = new ArrayList<>();
         if(CdmUtils.isNotBlank(searchString)){
-            Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, term.getTermType());
+            TermType type = term!= null ? term.getTermType():null;
+            Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, type);
             dtos.remove(term);
             dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
-
-            Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, term.getTermType());
-            vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
+            if (page != null){
+                Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, type);
+                vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
+            }
         }
         return searchResults;
     }
@@ -91,7 +94,9 @@ public class TermSearchController extends SearchController<TermSearchResult, Abs
                     comp.getBtnCheck().setSelection(false);
                 }
                 selectedComp.setSelection(selected);
-                page.setPageComplete(selected);
+                if (page != null){
+                    page.setPageComplete(selected);
+                }
             }
 
             @Override
index 4f779a9c112715f57ee44e8e45a05f5888d4de9d..31e3f87dcdd6cd6c92bd462e8a7684856d010ec1 100644 (file)
@@ -68,7 +68,7 @@ public class SpecimenProviderSelectionController implements Listener{
 
     private void loadLastState() {
         if (lastAccessPoint == null){
-            String lastSelected = PreferencesUtil.getStringValue(PreferencesUtil.LAST_USED_BIOCASE_PROVIDER);
+            String lastSelected = PreferencesUtil.getStringValue(PreferencesUtil.LAST_USED_BIOCASE_PROVIDER, true);
             lastAccessPoint = lastSelected;
         }
         if(lastAccessPoint!=null){