Make MimeType and format suffix part of the exporter objects
Change-Id: I1a2d1c3ffe027034973f8085e7ef990d952ac4f0
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
index 97bcad5..64cc843 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/Exporter.java
@@ -24,4 +24,6 @@
public void writeHeader (Writer w) throws IOException;
public void addMatch (JsonNode n, Writer w) throws IOException;
public void writeFooter (Writer w) throws IOException;
+ public String getMimeType ();
+ public String getSuffix ();
};
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index 6517c01..004de3f 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -88,6 +88,7 @@
@Context
private HttpServletRequest req;
+
/**
* WebService calls Kustvakt Search Webservices and returns
* response as json (all of the response) and
@@ -155,6 +156,7 @@
String path = properties.getProperty("api.path", "");
int pageSize = Integer.parseInt(properties.getProperty("conf.page_size", "5"));
+ // Create initial search uri
UriBuilder uri = UriBuilder.fromPath("/api/v1.0/search")
.host(host)
.port(Integer.parseInt(port))
@@ -202,33 +204,25 @@
// set filename based on query (if not already set)
if (fname == null) {
fname = q;
- }
+ };
Exporter exp;
+ // Choose the correct exporter
if (format.equals("json")) {
exp = new JsonExporter();
}
else {
exp = new RtfExporter();
};
-
+
+ // Initialize exporter (with meta data and first matches)
exp.init(resp);
// If only one page should be exported there is no need
// for a temporary export file
if (cutoff) {
-
builder = exp.serve();
-
- if (format.equals("json")) {
- builder.type(MediaType.APPLICATION_JSON);
- }
-
- else {
- builder.type("application/rtf");
- format = "rtf";
- };
}
// Page through results
@@ -265,16 +259,8 @@
resp = authBuilder(reqBuilder, xff, auth).get(String.class);
exp.appendMatches(resp);
}
- // builder = Response.ok(expTmp);
- builder = exp.serve();
- if (format.equals("json")) {
- builder.type(MediaType.APPLICATION_JSON);
- }
- else {
- builder.type("application/rtf");
- format = "rtf";
- };
+ builder = exp.serve();
};
builder.header(
@@ -282,7 +268,7 @@
"attachment; filename=" +
sanitizeFileName(fname) +
'.' +
- format
+ exp.getSuffix()
);
return builder.build();
};
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
index dfd9694..d538f2c 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/JsonExporter.java
@@ -1,9 +1,11 @@
package de.ids_mannheim.korap.plkexport;
+import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
import java.io.Writer;
+
/**
* This is a streaming exporter class for Json, so it's based on
* a string buffer.
@@ -16,6 +18,19 @@
{
firstMatch = true;
}
+
+
+ @Override
+ public String getMimeType () {
+ return MediaType.APPLICATION_JSON;
+ };
+
+
+ @Override
+ public String getSuffix () {
+ return "json";
+ };
+
@Override
public void writeHeader (Writer w) throws IOException {
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
index 6a06890..944b729 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/MatchAggregator.java
@@ -39,6 +39,14 @@
public JsonNode meta, query, collection;
+ public String getMimeType() {
+ return "text/plain";
+ };
+
+ public String getSuffix() {
+ return "txt";
+ };
+
public void setMeta (JsonNode meta) {
this.meta = meta;
};
@@ -156,14 +164,20 @@
*/
public ResponseBuilder serve () {
try {
+ ResponseBuilder rb;
this.writeFooter(this.writer);
this.writer.close();
-
+
+
if (this.file == null) {
- return Response.ok(writer.toString());
+ rb = Response.ok(writer.toString());
+ }
+ else {
+ rb = Response.ok(this.file);
};
- return Response.ok(this.file);
+
+ return rb.type(this.getMimeType());
}
// Catch error
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
index c7a3594..852ad91 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/RtfExporter.java
@@ -41,6 +41,18 @@
firstMatch = true;
sb = new StringBuilder(256);
}
+
+ @Override
+ public String getMimeType () {
+ return "application/rtf";
+ };
+
+
+ @Override
+ public String getSuffix () {
+ return "rtf";
+ };
+
@Override
public void writeHeader (Writer w) throws IOException {