diff --git a/data-access/servlet/src/main/java/common/output/MCutResult.java b/data-access/servlet/src/main/java/common/output/MCutResult.java index b5dbe1eaeaf167234ef965aec7ca057ce9906305..1f2aac894a3733a7a885d0d77549142ab4a400aa 100644 --- a/data-access/servlet/src/main/java/common/output/MCutResult.java +++ b/data-access/servlet/src/main/java/common/output/MCutResult.java @@ -1,5 +1,6 @@ import org.json.simple.JSONObject; +import java.io.File; class MCutResult { @@ -20,8 +21,24 @@ class MCutResult jo.put("content", content); return jo; } + + void deleteFile() + { + if(contentType == ContentType.FILENAME) + { + File cutFile = new File(content); + cutFile.delete(); + } + } } + public void deleteCutFiles() + { + for(Cut cut : cutResArr) + { + cut.deleteFile(); + } + } public String fileName; public long fileSize; diff --git a/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java b/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java index df5e0e167d3892297754802c560f6b974239f0ac..4cd11f3b1f87a29a126c22e737a5c184b5a348d8 100644 --- a/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java +++ b/data-access/servlet/src/main/java/mcutout/webapi/UWSMCutoutWork.java @@ -1,4 +1,5 @@ import java.io.File; +import java.io.FileInputStream; import java.io.PrintWriter; import java.io.OutputStream; import java.io.BufferedOutputStream; @@ -35,7 +36,6 @@ import org.json.simple.parser.ParseException; public class UWSMCutoutWork extends JobThread { - final String RESPONSE_ENCODING = "utf-8"; private Settings settings = UWSMCutout.settings; private Subsurvey[] subsurveys = UWSMCutout.subsurveys; @@ -67,29 +67,31 @@ public class UWSMCutoutWork extends JobThread /* UWS -> SODA (JDL in POST body is part of SODA REC) */ UploadFile jsonFile = (UploadFile)job.getAdditionalParameterValue("mcutout"); - final String contentType = "text/xml"; // FIXME should be input param ? RESPONSEFORMAT ? - Result result = createResult("Report"); - result.setMimeType("text/xml"); - OutputStream respOutputStream = getResultOutput(result); - - if(contentType.equals("text/xml") || contentType.equals("application/xml")) + InputStreamReader isr = new InputStreamReader(jsonFile.open()); + BufferedReader input = new BufferedReader(isr); + StringBuffer jsonStringBuffer = new StringBuffer(); + String line; + while((line = input.readLine()) != null) { - InputStreamReader isr = new InputStreamReader(jsonFile.open()); - BufferedReader input = new BufferedReader(isr); - StringBuffer jsonStringBuffer = new StringBuffer(); - String line; - while((line = input.readLine()) != null) - { - jsonStringBuffer.append(line); - } - String reqJsonString = jsonStringBuffer.toString(); + jsonStringBuffer.append(line); + } + String reqJsonString = jsonStringBuffer.toString(); + + /* SODA -> Implementation */ - /* SODA -> Implementation */ + MCutResult mresult = vlkb.doMCutout(reqJsonString); - MCutResult mresult = vlkb.doMCutout(reqJsonString); + /* Implement -> SODA */ - /* Implement -> SODA */ + final String contentType = "application/gzip";// FIXME force stream output + + if(contentType.equals("text/xml") || contentType.equals("application/xml")) + { + Result result = createResult("Report"); + result.setMimeType("text/xml"); + OutputStream respOutputStream = getResultOutput(result); + final String RESPONSE_ENCODING = "utf-8"; PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING)); @@ -105,6 +107,25 @@ public class UWSMCutoutWork extends JobThread writer.close(); /* SODA -> UWS */ + + publishResult(result); + } + else if(contentType.equals("application/gzip") || contentType.equals("application/x-tar+gzip")) + { + Result result = createResult("mcutout.tar.gz"); + result.setMimeType("application/gzip"); + OutputStream respOutputStream = getResultOutput(result); + + String absCutPathname = mresult.fileName; + File downloadFile = new File(absCutPathname); + FileInputStream fileInput = new FileInputStream(downloadFile); + + fileInput.transferTo(respOutputStream); + + downloadFile.delete(); + mresult.deleteCutFiles(); + + publishResult(result); } else { @@ -112,8 +133,6 @@ public class UWSMCutoutWork extends JobThread } /* FIXME here was uws-check is-job-Interrupted */ - - publishResult(result); } catch(IOException ex) {