Project

General

Profile

Download (4.37 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2019 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.view.search.facet.term;
10

    
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.Comparator;
14
import java.util.List;
15

    
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.events.SelectionEvent;
18
import org.eclipse.swt.events.SelectionListener;
19
import org.eclipse.swt.widgets.Button;
20
import org.eclipse.swt.widgets.Composite;
21

    
22
import eu.etaxonomy.cdm.api.service.ITermService;
23
import eu.etaxonomy.cdm.api.service.IVocabularyService;
24
import eu.etaxonomy.cdm.common.CdmUtils;
25
import eu.etaxonomy.cdm.model.term.TermType;
26
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
27
import eu.etaxonomy.cdm.persistence.dto.TermDto;
28
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30
import eu.etaxonomy.taxeditor.store.StoreUtil;
31
import eu.etaxonomy.taxeditor.termtree.TermChooseWizardPage;
32
import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
33
import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
34
import eu.etaxonomy.taxeditor.view.search.facet.SearchController;
35

    
36
/**
37
 * @author pplitzner
38
 * @since Jan 22, 2019
39
 */
40
public class TermSearchController extends SearchController<TermSearchResult, AbstractTermDto> {
41

    
42
    private TermDto term;
43
    private TermChooseWizardPage page = null;
44

    
45
    public TermSearchController(SearchComposite composite, TermDto term) {
46
        super(composite);
47
        this.term = term;
48
    }
49

    
50
    public TermSearchController(SearchComposite composite, TermDto term, TermChooseWizardPage page) {
51
        super(composite);
52
        this.term = term;
53
        this.page = page;
54
    }
55

    
56
    @Override
57
    protected Comparator<TermSearchResult> getResultComparator(String searchString) {
58
        return new Comparator<TermSearchResult>() {
59
            @Override
60
            public int compare(TermSearchResult o1, TermSearchResult o2) {
61
                String label1 = o1.getContent().getRepresentation_L10n();
62
                String label2 = o2.getContent().getRepresentation_L10n();
63
                return StoreUtil.compareBySearchString(searchString, label1, label2);
64
            }
65
        };
66
    }
67

    
68
    @Override
69
    protected List<TermSearchResult> searchResults(String searchString){
70
        List<TermSearchResult> searchResults = new ArrayList<>();
71
        if(CdmUtils.isNotBlank(searchString)){
72
            TermType type = term!= null ? term.getTermType():null;
73
            Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, type);
74
            dtos.remove(term);
75
            dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
76
            if (page != null){
77
                Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, type);
78
                vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
79
            }
80
        }
81
        return searchResults;
82
    }
83

    
84
    @Override
85
    protected TermSearchResultComposite createResultComposite(TermSearchResult result, Composite parent) {
86
        TermSearchResultComposite comp = new TermSearchResultComposite(result, parent, SWT.NONE);
87
        comp.getBtnCheck().addSelectionListener(new SelectionListener() {
88

    
89
            @Override
90
            public void widgetSelected(SelectionEvent e) {
91
                Button selectedComp = (Button) e.widget;
92
                boolean selected = selectedComp.getSelection();
93
                for (CheckBoxSearchResultComposite<?,?> comp: getSearchResultComposites()){
94
                    comp.getBtnCheck().setSelection(false);
95
                }
96
                selectedComp.setSelection(selected);
97
                if (page != null){
98
                    page.setPageComplete(selected);
99
                }
100
            }
101

    
102
            @Override
103
            public void widgetDefaultSelected(SelectionEvent e) {
104
                // TODO Auto-generated method stub
105
            }
106
        });
107
        return comp;
108
    }
109

    
110
    @Override
111
    protected List<TermSearchResult> getSelectedResults() {
112
        return null;
113
    }
114

    
115
    @Override
116
    protected void search(){
117
        super.search();
118

    
119
    }
120
}
(3-3/5)