diff --git a/data-access/servlet/src/main/java/cutout/Datasets.java b/data-access/servlet/src/main/java/cutout/Datasets.java index 684ba2056fa2e8583b1ba5f213bd095f97761f5c..d07cdc0789e1d95c2c1442c8e9b7d959e0c5edcd 100644 --- a/data-access/servlet/src/main/java/cutout/Datasets.java +++ b/data-access/servlet/src/main/java/cutout/Datasets.java @@ -17,7 +17,7 @@ public interface Datasets public MCutResult doMCutout(String jdlJson) - throws IOException; + throws IOException, InterruptedException; } diff --git a/data-access/servlet/src/main/java/cutout/DatasetsCli.java b/data-access/servlet/src/main/java/cutout/DatasetsCli.java index ffbe830e6b3ecfdfe067c34bdac4524d6e107b0a..3de95c1dafa6c276d24c8225bd2ac59bf70624a4 100644 --- a/data-access/servlet/src/main/java/cutout/DatasetsCli.java +++ b/data-access/servlet/src/main/java/cutout/DatasetsCli.java @@ -73,7 +73,7 @@ class DatasetsCli implements Datasets public MCutResult doMCutout(String jdlJson) - throws IOException + throws IOException, InterruptedException { LOGGER.info("trace"); @@ -114,18 +114,45 @@ class DatasetsCli implements Datasets // FIXME implement similar for Merge: MCutResult = call-Montage-demosaic-sequence(cutResultArr) private MCutResult doCompressCutFiles(MCutResult.Cut[] cutArr) + throws IOException, InterruptedException { - // FIXME do compression here + StringBuilder sb = new StringBuilder(); for(MCutResult.Cut cut : cutArr) { - LOGGER.info("TBD compress cut-id"+ String.valueOf(cut.index) + " -> " + cut.content); + LOGGER.info("cut-id"+ String.valueOf(cut.index) + " -> " + cut.content); + if(cut.contentType == MCutResult.Cut.ContentType.FILENAME) + { + sb.append(" " + cut.content); + } } + final String tgzFileName = settings.fitsPaths.cutouts() + "/mcutout_TIMESTAMP.tar.gz"; + + String[] cmd = new String[4]; + cmd[0] = "/bin/tar"; + cmd[1] = "cfz"; + cmd[2] = tgzFileName; + cmd[3] = sb.toString(); + + LOGGER.info("CMD: " + String.join(" ",cmd)); + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + if(bos == null) + throw new AssertionError("byte output stream for bounds was not created, is null"); + + ExecCmd exec = new ExecCmd(); + exec.doRun(bos, cmd); + LOGGER.info("exec tar.gz exitValue: " + exec.exitValue); + + boolean has_result = (exec.exitValue == 0); + MCutResult mCutResult = new MCutResult(); mCutResult.cutResArr = cutArr; - mCutResult.fileName = "filename.tar.gz"; // FIXME do-zip-all-cuts(cutResultArr) + mCutResult.fileName = tgzFileName; mCutResult.fileSize = 0; + // FIXME add timestamp, add filesize when successful + return mCutResult; } diff --git a/data-access/servlet/src/main/java/webapi/ServletMCutout.java b/data-access/servlet/src/main/java/webapi/ServletMCutout.java index 2cc1ea646a6120b5f792ce1cf85a687533731373..28c878910a11c23dafe89c13c8d89bea36c439de 100644 --- a/data-access/servlet/src/main/java/webapi/ServletMCutout.java +++ b/data-access/servlet/src/main/java/webapi/ServletMCutout.java @@ -134,7 +134,7 @@ public class ServletMCutout extends javax.servlet.http.HttpServlet } - catch(IOException ex) + catch(Exception ex) { /* FIXME find better exception */ throw new AssertionError("internal error: jsonFile.open() throws IOException:" + ex.getMessage());