From e4d028d1ec75c534ce32f94cf91c19e0df93f0cc Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 3 Feb 2016 07:50:07 +0100 Subject: [PATCH] Pre-select derivatives according to filter criteria - also used service method to filter specimens --- .../editor/view/derivate/DerivateView.java | 13 ++++ .../DerivateSearchCompositeController.java | 64 ++++++++----------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java index f591b9a14..053f90cc4 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java @@ -276,6 +276,19 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa getEditorSite().getActionBars().getStatusLineManager().setMessage(rootElements.size() +" derivative hierarchies found"); + //set selection to derivatives if the filter criteria + //taxon assignment or or derivative type are set + if(derivates!=null && !derivateSearchCompositeController.isDefaultSearch()){ + List nodesToSelect = new ArrayList(); + for (SpecimenOrObservationBase specimenOrObservationBase : derivates) { + nodesToSelect.add(new TreeNode(specimenOrObservationBase)); + } + viewer.setSelection(new StructuredSelection(nodesToSelect)); + } + else{ + viewer.setSelection(null); + } + } public void updateLabelCache(){ diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java index 42d43961a..0cf0191ca 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/searchFilter/DerivateSearchCompositeController.java @@ -9,8 +9,6 @@ */ package eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; import org.eclipse.swt.SWT; @@ -21,14 +19,12 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Widget; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; -import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator; +import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator.AssignmentStatus; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; -import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.SearchManager; import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory; import eu.etaxonomy.taxeditor.ui.mvc.combo.EnumTermComboController; @@ -78,42 +74,22 @@ public class DerivateSearchCompositeController implements Listener{ if(selectedTaxon!=null){ config.setSpecimenType(null); } + switch (derivateSearchComposite.getComboTaxonAssignment().getSelectionIndex()) { + case DerivateSearchComposite.ALL_SPECIMENS: + config.setAssignmentStatus(AssignmentStatus.ALL_SPECIMENS); + break; + case DerivateSearchComposite.ASSIGNED_SPECIMENS: + config.setAssignmentStatus(AssignmentStatus.ASSIGNED_SPECIMENS); + break; + case DerivateSearchComposite.UNASSIGNED_SPECIMENS: + config.setAssignmentStatus(AssignmentStatus.UNASSIGNED_SPECIMENS); + break; + default: + break; + } SearchManager searchManager = new SearchManager(); List occurrences = searchManager.findOccurrences(config, true); - - //filter out specimens of wrong type (only if an associated taxon was selected) - if(selectedTaxon!=null && !specimenType.equals(SpecimenOrObservationType.Unknown)){ - List specimensOfCorrectType = new ArrayList(); - 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> specimenWithAssociations = new ArrayList>(); - if(selectionIndex!=DerivateSearchComposite.ALL_SPECIMENS){ - for (SpecimenOrObservationBase specimenOrObservationBase : occurrences) { - Collection> 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(specimenWithAssociations); - } - } derivativeEditor.updateRootEntities(occurrences); } @@ -159,6 +135,18 @@ public class DerivateSearchCompositeController implements Listener{ derivateSearchComposite.setLayoutData(layoutData); } + /** + * Checks whether or not the search criteria are set to their default value.
+ * This does not consider the title search field. + * @return true if search criteria are set to default. + */ + public boolean isDefaultSearch(){ + boolean isDefault = true; + isDefault &= comboSpecimenTypeController.getSelection()==SpecimenOrObservationType.Unknown; + isDefault &= derivateSearchComposite.getComboTaxonAssignment().getSelectionIndex()==DerivateSearchComposite.ALL_SPECIMENS; + isDefault &= selectedTaxon==null; + return isDefault; + } /** * Resets all input fields */ -- 2.34.1