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 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;
......
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,14 +67,7 @@ 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();
......@@ -91,6 +84,15 @@ public class UWSMCutoutWork extends JobThread
/* 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));
String accessUrl = convertLocalPathnameToRemoteUrl(mresult.fileName,
......@@ -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)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment