Skip to content
Snippets Groups Projects
Commit 454d5ada authored by Robert Butora's avatar Robert Butora
Browse files

mcutout: implements direct streaming of mcutout.tar.gz file if application/gzip

parent b05e94eb
No related branches found
No related tags found
No related merge requests found
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import java.io.File;
class MCutResult class MCutResult
{ {
...@@ -20,8 +21,24 @@ class MCutResult ...@@ -20,8 +21,24 @@ class MCutResult
jo.put("content", content); jo.put("content", content);
return jo; 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 String fileName;
public long fileSize; public long fileSize;
......
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
...@@ -35,7 +36,6 @@ import org.json.simple.parser.ParseException; ...@@ -35,7 +36,6 @@ import org.json.simple.parser.ParseException;
public class UWSMCutoutWork extends JobThread public class UWSMCutoutWork extends JobThread
{ {
final String RESPONSE_ENCODING = "utf-8";
private Settings settings = UWSMCutout.settings; private Settings settings = UWSMCutout.settings;
private Subsurvey[] subsurveys = UWSMCutout.subsurveys; private Subsurvey[] subsurveys = UWSMCutout.subsurveys;
...@@ -67,14 +67,7 @@ public class UWSMCutoutWork extends JobThread ...@@ -67,14 +67,7 @@ public class UWSMCutoutWork extends JobThread
/* UWS -> SODA (JDL in POST body is part of SODA REC) */ /* UWS -> SODA (JDL in POST body is part of SODA REC) */
UploadFile jsonFile = (UploadFile)job.getAdditionalParameterValue("mcutout"); 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()); InputStreamReader isr = new InputStreamReader(jsonFile.open());
BufferedReader input = new BufferedReader(isr); BufferedReader input = new BufferedReader(isr);
StringBuffer jsonStringBuffer = new StringBuffer(); StringBuffer jsonStringBuffer = new StringBuffer();
...@@ -91,6 +84,15 @@ public class UWSMCutoutWork extends JobThread ...@@ -91,6 +84,15 @@ public class UWSMCutoutWork extends JobThread
/* 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)); PrintWriter writer = new PrintWriter(new OutputStreamWriter(respOutputStream, RESPONSE_ENCODING));
String accessUrl = convertLocalPathnameToRemoteUrl(mresult.fileName, String accessUrl = convertLocalPathnameToRemoteUrl(mresult.fileName,
...@@ -105,6 +107,25 @@ public class UWSMCutoutWork extends JobThread ...@@ -105,6 +107,25 @@ public class UWSMCutoutWork extends JobThread
writer.close(); writer.close();
/* SODA -> UWS */ /* 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 else
{ {
...@@ -112,8 +133,6 @@ public class UWSMCutoutWork extends JobThread ...@@ -112,8 +133,6 @@ public class UWSMCutoutWork extends JobThread
} }
/* FIXME here was uws-check is-job-Interrupted */ /* FIXME here was uws-check is-job-Interrupted */
publishResult(result);
} }
catch(IOException ex) catch(IOException ex)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment