Project

General

Profile

« Previous | Next » 

Revision c5e6fc74

Added by Andreas Kohlbecker over 8 years ago

separating query protocol implementation from checklist clients

View differences:

src/main/java/org/bgbm/biovel/drf/checklist/BaseChecklistClient.java
1 1
package org.bgbm.biovel.drf.checklist;
2 2

  
3
import java.net.URI;
4
import java.util.ArrayList;
5 3
import java.util.EnumSet;
6 4
import java.util.Iterator;
7 5
import java.util.List;
8
import java.util.Map;
9 6

  
10
import org.bgbm.biovel.drf.rest.ServiceProviderInfo;
11
import org.bgbm.biovel.drf.rest.TaxoRESTClient;
7
import org.bgbm.biovel.drf.client.AbstractClient;
8
import org.bgbm.biovel.drf.client.ServiceProviderInfo;
9
import org.bgbm.biovel.drf.query.IQueryClient;
12 10
import org.bgbm.biovel.drf.tnr.msg.Query;
13
import org.bgbm.biovel.drf.tnr.msg.Query.Request;
14 11
import org.bgbm.biovel.drf.tnr.msg.TnrMsg;
15 12
import org.bgbm.biovel.drf.utils.TnrMsgUtils;
16 13
import org.slf4j.Logger;
17 14
import org.slf4j.LoggerFactory;
18 15

  
19
public abstract class BaseChecklistClient extends TaxoRESTClient {
16
public abstract class BaseChecklistClient<QC extends IQueryClient> extends AbstractClient<QC> {
20 17

  
21 18
    protected Logger logger = LoggerFactory.getLogger(BaseChecklistClient.class);
22 19

  
23
    public final static String QUERY_PLACEHOLDER = "{q}";
24 20

  
25 21
    protected final static String CHECKLIST_KEY = "checklist";
26 22
    protected final static String CHECKLIST_URL_KEY = "checklist_url";
......
39 35
        super(spInfo);
40 36
    }
41 37

  
42
    /**
43
     *
44
     * @param queryList
45
     * @param endpointSuffix
46
     * @param queryKey
47
     * @param likeModeWildcard the wildcard to add to the query string in case of like search modes
48
     * @param paramMap
49
     * @return
50
     */
51
    public URI buildUriFromQueryList(List<Query> queryList,
52
            String endpointSuffix,
53
            String queryKey,
54
            String likeModeWildcard,
55
            Map<String, String> paramMap) {
56

  
57
        List<String> queries = new ArrayList<String>();
58

  
59
        EnumSet<SearchMode> likeModes = EnumSet.of(SearchMode.scientificNameLike);
60

  
61
        for(Query query : queryList) {
62
            Request tnrRequest = query.getRequest();
63
            String queryString = tnrRequest.getQueryString();
64
            if(likeModes.contains(SearchMode.valueOf(tnrRequest.getSearchMode()))){
65
                queryString += likeModeWildcard;
66
            }
67
            queries.add(queryString);
68
        }
69

  
70
        logger.debug("Query size : " + queries.size());
71

  
72
        return buildUriFromQueryStringList(queries,
73
                endpointSuffix,
74
                queryKey,
75
                paramMap);
76
    }
77

  
78
    public URI buildUriFromQuery(Query query,
79
            String endpointSuffix,
80
            String queryKey,
81
            Map<String, String> paramMap) {
82
        return buildUriFromQueryString(query.getRequest().getQueryString(),
83
                endpointSuffix,
84
                queryKey,
85
                paramMap);
86
    }
87

  
88
    public URI buildUriFromQuery(Query query,
89
            String regexpUrl,
90
            Map<String, String> paramMap) {
91
        String url = regexpUrl.replace(QUERY_PLACEHOLDER, query.getRequest().getQueryString());
92
        return buildUriFromQueryString(url, paramMap);
93
    }
94

  
95 38

  
96 39
    /**
97 40
     * @param tnrMsg

Also available in: Unified diff