3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.ext
.sru
;
12 import java
.io
.IOException
;
13 import java
.io
.InputStream
;
15 import java
.net
.URISyntaxException
;
16 import java
.util
.ArrayList
;
17 import java
.util
.HashMap
;
18 import java
.util
.List
;
21 import org
.apache
.http
.HttpException
;
22 import org
.apache
.http
.NameValuePair
;
23 import org
.apache
.http
.message
.BasicNameValuePair
;
25 import eu
.etaxonomy
.cdm
.ext
.common
.ServiceWrapperBase
;
26 import eu
.etaxonomy
.cdm
.ext
.common
.SchemaAdapterBase
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
31 * @author a.kohlbecker
35 public class SruServiceWrapper
extends ServiceWrapperBase
<ReferenceBase
> {
37 private String SruVersion
= "1.1";
40 * @param cqlQuery an <b>URL encoded</b> CQL Query string see {@link http://www.loc.gov/standards/sru/specs/cql.html} for documentation
44 public List
<ReferenceBase
> doSearchRetrieve(String cqlQuery
, String recordSchema
){
46 List
<NameValuePair
> pairs
= new ArrayList
<NameValuePair
>();
48 SchemaAdapterBase
<ReferenceBase
> schemaAdapter
= schemaAdapterMap
.get(recordSchema
);
49 if(schemaAdapter
== null){
50 logger
.error("No SchemaAdapter found for " + recordSchema
);
53 String sruOperation
= "searchRetrieve";
55 pairs
.add(new BasicNameValuePair("operation", sruOperation
));
56 pairs
.add(new BasicNameValuePair("version", SruVersion
));
57 pairs
.add(new BasicNameValuePair("query", cqlQuery
));
58 pairs
.add(new BasicNameValuePair("recordSchema", recordSchema
));
60 Map
<String
, String
> requestHeaders
= new HashMap
<String
, String
>();
61 requestHeaders
.put("Accept-Charset", "UTF-8");
64 URI requestUri
= createUri(null, pairs
);
67 InputStream stream
= executeHttpGet(requestUri
, requestHeaders
);
68 return schemaAdapter
.getCmdEntities(stream
);
70 } catch (IOException e
) {
71 // thrown by doHttpGet
73 } catch (URISyntaxException e
) {
74 // thrown by createUri
76 } catch (HttpException e
) {
77 // thrown by executeHttpGet