Revision c5e6fc74
Added by Andreas Kohlbecker over 8 years ago
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
separating query protocol implementation from checklist clients