diff --git a/data-access/servlet/src/main/java/common/vo/NullValueCount.java b/data-access/servlet/src/main/java/common/vo/NullValueCount.java index d265b3d11bd1c0fcb78266165b6dc94ed373bc13..623c05e179ba4699a64f1db8843006884ae44e03 100644 --- a/data-access/servlet/src/main/java/common/vo/NullValueCount.java +++ b/data-access/servlet/src/main/java/common/vo/NullValueCount.java @@ -6,6 +6,13 @@ class NullValueCount double percent; long nullCount; long totalCount; + + NullValueCount() + { + percent = 0.0; + nullCount = 0; + totalCount = 0; + } } diff --git a/data-access/servlet/src/main/java/datasets/Cutout.java b/data-access/servlet/src/main/java/datasets/Cutout.java index 0ef94405e8cc5a6ccc8efc0a74ed8b653ee42035..9cb950779ea27a69ac4c3f8613bf33e0d407acce 100644 --- a/data-access/servlet/src/main/java/datasets/Cutout.java +++ b/data-access/servlet/src/main/java/datasets/Cutout.java @@ -17,7 +17,9 @@ public interface Cutout public CutResult doFile(String relPathname, int hdunum, Pos pos, Band band, Time time, Pol pol, - boolean countNullValues, FitsCard[] extraCards); + boolean countNullValues, FitsCard[] extraCards) + throws IOException, InterruptedException; +; } diff --git a/data-access/servlet/src/main/java/datasets/CutoutImpl.java b/data-access/servlet/src/main/java/datasets/CutoutImpl.java index a40de95062f8f2373e67ca2da08fc76cad60fe99..a253c4cc671b5bbeaefdc3f0c7eafce2434130a9 100644 --- a/data-access/servlet/src/main/java/datasets/CutoutImpl.java +++ b/data-access/servlet/src/main/java/datasets/CutoutImpl.java @@ -16,6 +16,7 @@ import java.io.PrintWriter; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.nio.file.StandardOpenOption; import java.nio.file.Files; @@ -184,24 +185,48 @@ class CutoutImpl implements Cutout public CutResult doFile(String relPathname, int hdunum, Pos pos, Band band, Time time, Pol pol, boolean countNullValues, FitsCard[] extraCards) - { - LOGGER.info("trace: " + pos.toString() ); + throws IOException, InterruptedException + { + LOGGER.info("trace: " + pos.toString() ); - String absSubimgPathname = settings.fitsPaths.cutouts() + "/" + generateSubimgPathname(relPathname, hdunum); + CutResult cutResult = new CutResult(); - JsonEncoder jReq = new JsonEncoder(); - jReq.add(relPathname, hdunum); - jReq.add(pos); - jReq.add(band); - jReq.add(time); - jReq.add(pol); - jReq.add(countNullValues); - jReq.add(extraCards); + if(settings.amqpConn.isHostnameEmpty()) + { + String absSubimgPathname = settings.fitsPaths.cutouts() + + "/" + generateSubimgPathname(relPathname, hdunum); - String outJson = doRpc( jReq.toString() ); + OutputStream fileOutputStream = new FileOutputStream( new File(absSubimgPathname) ); - return JsonDecoder.responseFromCutoutJson( outJson ); - } + doStream(relPathname, hdunum, pos, band, time, pol, fileOutputStream); + + // engine returns absPathname see common/cutout.cpp::do_cutout_file() + cutResult.filename = absSubimgPathname; + cutResult.filesize = Files.size(Paths.get(absSubimgPathname)); + + if(countNullValues) + { + LOGGER.info("NullValuesCount not implemented when used with Cutout::doStream()"); + } + } + else + { + JsonEncoder jReq = new JsonEncoder(); + jReq.add(relPathname, hdunum); + jReq.add(pos); + jReq.add(band); + jReq.add(time); + jReq.add(pol); + jReq.add(countNullValues); + jReq.add(extraCards); + + String outJson = doRpc( jReq.toString() ); + + cutResult = JsonDecoder.responseFromCutoutJson( outJson ); + } + + return cutResult; + } diff --git a/data-access/servlet/src/main/java/webapi/ServletCutout.java b/data-access/servlet/src/main/java/webapi/ServletCutout.java index 26e673e427c374d654c2dbe7a5c55ec56d59c969..8b77375f2663d9477543877e6b99b565228571e5 100644 --- a/data-access/servlet/src/main/java/webapi/ServletCutout.java +++ b/data-access/servlet/src/main/java/webapi/ServletCutout.java @@ -113,7 +113,7 @@ public class ServletCutout extends javax.servlet.http.HttpServlet protected void doCutoutFileStream(String id, Pos pos, Band band, Time time, Pol pol, OutputStream respOutputStream) - throws IOException + throws IOException, InterruptedException { LOGGER.info("trace" + pos); @@ -137,6 +137,7 @@ public class ServletCutout extends javax.servlet.http.HttpServlet protected DataLink doCutoutFile(String id, Pos pos, Band band, Time time, Pol pol, boolean countNullValues, String respFormat) + throws IOException, InterruptedException { LOGGER.info("trace"); diff --git a/data-access/servlet/src/main/java/webapi/Settings.java b/data-access/servlet/src/main/java/webapi/Settings.java index 233bfe3882e3580257f9c2c5d433a9302d6514c0..c56f91a3605a79545cf380366d233dced18ce698 100644 --- a/data-access/servlet/src/main/java/webapi/Settings.java +++ b/data-access/servlet/src/main/java/webapi/Settings.java @@ -71,6 +71,11 @@ class Settings public int portNumber() { return portNum; } public String routingKey() { return routingKey; } + public boolean isHostnameEmpty() + { + return ( (hostName == null) || hostName.trim().isEmpty() ); + } + public String toString() { return hostName + " " + String.valueOf(portNum) + " " + routingKey;