Project

General

Profile

Download (3.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.editor.workingSet.matrix;
10

    
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.HashSet;
14
import java.util.List;
15
import java.util.Set;
16
import java.util.UUID;
17

    
18
import org.eclipse.jface.dialogs.Dialog;
19
import org.eclipse.jface.viewers.ArrayContentProvider;
20
import org.eclipse.jface.viewers.IStructuredSelection;
21
import org.eclipse.jface.viewers.LabelProvider;
22
import org.eclipse.jface.viewers.TableViewer;
23
import org.eclipse.swt.graphics.Image;
24
import org.eclipse.swt.widgets.Composite;
25
import org.eclipse.swt.widgets.Control;
26
import org.eclipse.swt.widgets.Shell;
27

    
28
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
29
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
30
import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
31
import eu.etaxonomy.cdm.model.description.WorkingSet;
32
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
33
import eu.etaxonomy.cdm.model.taxon.Taxon;
34
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
35
import eu.etaxonomy.taxeditor.model.ImageResources;
36
import eu.etaxonomy.taxeditor.store.CdmStore;
37

    
38
/**
39
 * @author pplitzner
40
 * @since Jan 3, 2018
41
 *
42
 */
43
public class SpecimenSelectionDialog extends Dialog {
44

    
45
    private TableViewer list;
46

    
47
    private WorkingSet workingSet;
48

    
49
    Collection<SpecimenOrObservationBase> selectedSpecimens = new ArrayList<>();
50

    
51
    protected SpecimenSelectionDialog(Shell parentShell, WorkingSet workingSet) {
52
        super(parentShell);
53
        this.workingSet = workingSet;
54
    }
55

    
56
    @Override
57
    protected Control createDialogArea(Composite parent) {
58
        Composite composite = (Composite) super.createDialogArea(parent);
59
        list = new TableViewer(composite);
60
        list.setContentProvider(new ArrayContentProvider());
61
        list.setLabelProvider(new DescriptionLabelProvider());
62

    
63
        //gather descriptions
64
        Set<TaxonNode> taxonNodes = workingSet.getTaxonSubtreeFilter();
65
        Set<SpecimenOrObservationBase> specimens = new HashSet<>();
66

    
67
        //set filter parameters
68
        TaxonNodeFilter filter = TaxonNodeFilter.NewRankInstance(workingSet.getMinRank(), workingSet.getMaxRank());
69
        workingSet.getGeoFilter().forEach(area -> filter.andArea(area.getUuid()));
70
        workingSet.getTaxonSubtreeFilter().forEach(node -> filter.andTaxonNode(node));
71

    
72
        ITaxonNodeService taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
73
        List<UUID> filteredNodes = taxonNodeService.uuidList(filter);
74
        for (UUID uuid : filteredNodes) {
75
            //TODO implement occurrence service for taxon nodes
76
            // let it return UUIDAndTitlechace
77
            Taxon taxon = taxonNodeService.load(uuid).getTaxon();
78
            if(taxon!=null){
79
                specimens.addAll(CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null));
80
            }
81
        }
82

    
83
        list.setInput(specimens);
84
        return composite;
85
    }
86

    
87
    /**
88
     * {@inheritDoc}
89
     */
90
    @Override
91
    protected void okPressed() {
92
        selectedSpecimens = ((IStructuredSelection)list.getSelection()).toList();
93
        super.okPressed();
94
    }
95

    
96
    public Collection<SpecimenOrObservationBase> getSpecimen(){
97
        return selectedSpecimens;
98
    }
99

    
100
    private class DescriptionLabelProvider extends LabelProvider{
101
        /**
102
         * {@inheritDoc}
103
         */
104
        @Override
105
        public Image getImage(Object element) {
106
            if(workingSet.getDescriptions().contains(element)){
107
                return ImageResources.getImage(ImageResources.SYNCED);
108
            }
109
            return null;
110
        }
111
    }
112
}
(8-8/8)