Project

General

Profile

Download (2.74 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.view.webimport.termimport.requests;
10

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

    
16
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
17

    
18
/**
19
 * @author pplitzner
20
 * @since Apr 23, 2018
21
 *
22
 */
23
public class RequestSearch extends AbstractTerminologyServiceRequest{
24

    
25
    private static final String REGEX_WILDCARD = ".*";
26
    private static final String REGEX_BEGINNING = "^";
27
    private static final String REGEX_END = "$";
28
    private static final String ASTERISK = "*";
29
    private static final String SEARCH = "search";
30
    private static final String TRUE = "true";
31
    private static final String INTERNAL_ONLY = "internal_only";
32
    private static final String INCLUDED = "included";
33
    private static final String REGEX = "regex";
34
    private static final String EXACT = "exact";
35
    private static final String MATCH_TYPE = "match_type";
36
    private String searchString;
37
    private Collection<TerminologyWrapper> selectedOntologies;
38

    
39
    public RequestSearch(String searchString, Collection<TerminologyWrapper> selectedOntologies) {
40
        super();
41
        this.searchString = searchString;
42
        this.selectedOntologies = selectedOntologies;
43
    }
44

    
45
    @Override
46
    protected String getServiceUri() {
47
        return SEARCH;
48
    }
49

    
50
    @Override
51
    protected String getTerminologyId() {
52
        return null;
53
    }
54

    
55
    @Override
56
    protected List<RequestParameter> getServiceParameters() {
57
        List<RequestParameter> params = new ArrayList<>();
58
        if(searchString.contains(ASTERISK)){
59
            params.add(new RequestParameter(MATCH_TYPE, REGEX));
60
            if(!searchString.startsWith(ASTERISK)){
61
                searchString = REGEX_BEGINNING + searchString;
62
            }
63
            if(!searchString.endsWith(ASTERISK)){
64
                searchString += REGEX_END;
65
            }
66
            searchString = searchString.replace(ASTERISK, REGEX_WILDCARD);
67
        }
68
        else{
69
            params.add(new RequestParameter(MATCH_TYPE, EXACT));
70
        }
71
        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_QUERY, searchString));
72
        params.add(new RequestParameter(INTERNAL_ONLY, TRUE));
73
        params.add(new RequestParameter(TerminologyServiceConstants.ATTR_TERMINOLOGIES,
74
                selectedOntologies.stream()
75
                .map(wrapper->wrapper.getAcronym())
76
                .collect(Collectors.joining(","))));
77
        return params;
78
    }
79

    
80
}
(5-5/9)