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
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line

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;
+40 −21
Original line number Diff line number Diff line
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)
      {