Add resource reference in the search result.
Change-Id: I14745764b0e2127fd4415ea26bd3b45a23410fbb
diff --git a/ChangeLog b/ChangeLog
index 28f9955..0255f82 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
- Implemented search for protected resources by using public metadata search
web-service and adding Diagnostics. (#64)
- Added support for match-id with signatures.
+-
1.0.7-SNAPSHOT
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java b/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
index 25fe426..5f42f03 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapClient.java
@@ -189,14 +189,20 @@
}
boolean freeAccess = true;
-
+ String ref = "";
HttpUriRequest httpRequest = null;
try {
String corpusQuery = obtainCorpusQuery(corpora);
+ ref = KorapSRU.korapWebUri + "?q="+query+"&ql="+queryLanguage;
+ if (!corpusQuery.isEmpty()) {
+ ref = ref +"&cq="+corpusQuery;
+ corpusQuery = URLDecoder.decode(corpusQuery, "utf-8");
+ }
freeAccess = isAccessFree(corpora);
httpRequest = createSearchRequest(query, queryLanguage, version,
startRecord - 1, maximumRecords, corpusQuery,
freeAccess);
+
}
catch (URISyntaxException e) {
throw new IOException("Failed creating http request.");
@@ -212,6 +218,7 @@
new BufferedInputStream(response.getEntity().getContent());
try {
result = objectMapper.readValue(jsonStream, KorapResult.class);
+ result.setResourceReference(ref);
}
finally {
jsonStream.close();
@@ -227,7 +234,6 @@
if (!freeAccess) {
result.getMatches().clear();
}
-
return result;
}
@@ -249,7 +255,7 @@
+ " is not found.");
}
}
- cq = URLDecoder.decode(cq, "utf-8");
+ //cq = URLDecoder.decode(cq, "utf-8");
if (i == 0) {
corpusQuery = cq;
}
@@ -377,7 +383,7 @@
maximumRecords, corpusQuery, freeAccess);
// logger.info("Query URI: " + uri.toString());
-// System.out.println(uri.toString());
+ System.out.println(uri.toString());
HttpGet request = new HttpGet(uri);
return request;
}
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapResult.java b/src/main/java/de/ids_mannheim/korap/sru/KorapResult.java
index 0991c6e..f4bc4fa 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapResult.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapResult.java
@@ -11,6 +11,7 @@
private List<KorapMatch> matches;
private List<List<Object>> errors;
private KorapMeta metadata;
+ private String resourceReference;
public KorapResult () {
matches = new ArrayList<KorapMatch>();
@@ -55,4 +56,12 @@
public void setMetadata (KorapMeta metadata) {
this.metadata = metadata;
}
+
+ public String getResourceReference () {
+ return resourceReference;
+ }
+
+ public void setResourceReference (String resourceReference) {
+ this.resourceReference = resourceReference;
+ }
}
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapSRU.java b/src/main/java/de/ids_mannheim/korap/sru/KorapSRU.java
index 75906be..ecff789 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapSRU.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapSRU.java
@@ -107,7 +107,8 @@
isRewitesAllowed(request), diagnostics);
// logger.info("Number of records: "+korapResult.getTotalResults());
- return new KorapSRUSearchResultSet(korapClient, diagnostics, korapResult, dataviews,
+ return new KorapSRUSearchResultSet(korapClient, diagnostics,
+ korapResult, dataviews,
korapEndpointDescription.getTextLayer(),
korapEndpointDescription.getAnnotationLayers());
}
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java b/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
index 657c35c..b950aa4 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapSRUSearchResultSet.java
@@ -46,6 +46,7 @@
private Layer textLayer;
private AnnotationHandler annotationHandler;
private KorapClient korapClient;
+ private String reference;
/**
* Constructs a KorapSRUSearchResultSet for the given KorapResult.
@@ -80,6 +81,7 @@
this.korapResult = korapResult;
this.dataviews = dataviews;
this.textLayer = textlayer;
+ this.reference = korapResult.getResourceReference();
annotationHandler = new AnnotationHandler(annotationLayers);
}
@@ -114,7 +116,7 @@
KorapMatch match = korapResult.getMatch(i);
match.parseMatchId();
XMLStreamWriterHelper.writeStartResource(writer, match.getMatchId(),
- null);
+ reference);
XMLStreamWriterHelper.writeStartResourceFragment(writer, null, null);
List<AnnotationLayer> annotationLayers;