Project

General

Profile

« Previous | Next » 

Revision f5f64287

Added by Patrick Plitzner about 6 years ago

ref #7095 Move specimen and description loading to service layer

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/SpecimenSelectionDialog.java
12 12
import java.util.Arrays;
13 13
import java.util.Collection;
14 14
import java.util.List;
15
import java.util.UUID;
16 15
import java.util.stream.Collectors;
17 16
import java.util.stream.Stream;
18 17

  
......
40 39
import org.eclipse.swt.widgets.Table;
41 40
import org.eclipse.swt.widgets.Text;
42 41

  
43
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
44
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
45
import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
42
import eu.etaxonomy.cdm.api.service.IWorkingSetService;
43
import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
46 44
import eu.etaxonomy.cdm.common.CdmUtils;
47
import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
48
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
49
import eu.etaxonomy.cdm.model.taxon.Taxon;
50
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
51 45
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
52 46
import eu.etaxonomy.taxeditor.model.AbstractUtility;
53 47
import eu.etaxonomy.taxeditor.model.ImageResources;
......
73 67

  
74 68
    private TableViewer list;
75 69

  
76
    private Collection<SpecimenOrObservationBase> selectedSpecimens = new ArrayList<>();
70
    private Collection<RowWrapperDTO> selectedSpecimens = new ArrayList<>();
77 71
    private CharacterMatrix matrix;
78 72
    private Text txtTextFilter;
79 73

  
......
167 161
    }
168 162

  
169 163
    private void applyFilter(){
170
        Stream<SpecimenWrapper> filteredWrappers =matrix.getSpecimenCache().stream();
164
        Stream<RowWrapperDTO> filteredWrappers =matrix.getSpecimenCache().stream();
171 165
        if(comboTaxon.getSelection()!=null){
172 166
            filteredWrappers =
173 167
                    filteredWrappers
......
177 171
                &&!CdmUtils.isBlank(txtTextFilter.getText())){
178 172
            filteredWrappers =
179 173
                    filteredWrappers
180
                    .filter(wrapper->wrapper.getLabel().toLowerCase().contains(txtTextFilter.getText().toLowerCase()));
174
                    .filter(wrapper->wrapper.getSpecimen().getTitleCache().toLowerCase().contains(txtTextFilter.getText().toLowerCase()));
181 175
        }
182 176
        list.setInput(filteredWrappers.collect(Collectors.toList()));
183 177
    }
184 178

  
185 179
    private void loadSpecimens(){
186
        List<SpecimenWrapper> specimenCache = new ArrayList<>();
187
        //set filter parameters
188
        TaxonNodeFilter filter = TaxonNodeFilter.NewRankInstance(matrix.getWorkingSet().getMinRank(), matrix.getWorkingSet().getMaxRank());
189
        matrix.getWorkingSet().getGeoFilter().forEach(area -> filter.orArea(area.getUuid()));
190
        matrix.getWorkingSet().getTaxonSubtreeFilter().forEach(node -> filter.orSubtree(node));
191
        filter.setIncludeUnpublished(true);
192

  
193
        ITaxonNodeService taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
194
        List<UUID> filteredNodes = taxonNodeService.uuidList(filter);
195
        for (UUID uuid : filteredNodes) {
196
            //TODO implement occurrence service for taxon nodes
197
            // let it return UuidAndTitleCache
198
            TaxonNode taxonNode = taxonNodeService.load(uuid, NODE_PROPERTY_PATH);
199
            Taxon taxon = taxonNode.getTaxon();
200
            if(taxon!=null){
201
                FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
202
                config.setAssociatedTaxonUuid(taxon.getUuid());
203
                List<SpecimenOrObservationBase> specimensForTaxon = CdmStore.getService(IOccurrenceService.class).findByTitle(config).getRecords();
204
                specimensForTaxon.forEach(specimen->specimenCache.add(new SpecimenWrapper(specimen, taxonNode, specimen.getTitleCache())));
205
            }
206
        }
180
        Collection<RowWrapperDTO> specimenCache = CdmStore.getService(IWorkingSetService.class).loadSpecimens(matrix.getWorkingSet());
207 181
        matrix.setSpecimenCache(specimenCache);
208 182
    }
209 183

  
......
217 191
    @Override
218 192
    protected void okPressed() {
219 193
        selectedSpecimens.clear();
220
        List<SpecimenWrapper> wrappers = ((IStructuredSelection)list.getSelection()).toList();
221
        wrappers.forEach(element->selectedSpecimens.add(element.getSpecimen()));
194
        selectedSpecimens = ((IStructuredSelection)list.getSelection()).toList();
222 195
        super.okPressed();
223 196
    }
224 197

  
......
227 200
        return true;
228 201
    }
229 202

  
230
    public Collection<SpecimenOrObservationBase> getSpecimen(){
203
    public Collection<RowWrapperDTO> getSpecimen(){
231 204
        return selectedSpecimens;
232 205
    }
233 206

  
......
240 213

  
241 214
        @Override
242 215
        public String getColumnText(Object element, int columnIndex) {
243
            if(element instanceof SpecimenWrapper){
244
                SpecimenWrapper wrapper = (SpecimenWrapper)element;
216
            if(element instanceof RowWrapperDTO){
217
                RowWrapperDTO wrapper = (RowWrapperDTO)element;
245 218
                switch (columnIndex) {
246 219
                case 0:
247
                    return wrapper.getTaxonNodeLabel();
220
                    return wrapper.getTaxonNode().getTaxon().getName().getTitleCache();
248 221
                case 1:
249 222
                    return wrapper.getSpecimen().getTitleCache();
250 223
                default:

Also available in: Unified diff