From db459b285bd5e7238200a9bac784df257ce6508c Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Tue, 2 Apr 2024 15:43:46 +0200 Subject: [PATCH] cutout: implements Coutput::doFile with doStream into localfile if AMQP hostname not configured --- .../main/java/common/vo/NullValueCount.java | 7 +++ .../src/main/java/datasets/Cutout.java | 4 +- .../src/main/java/datasets/CutoutImpl.java | 53 ++++++++++++++----- .../src/main/java/webapi/ServletCutout.java | 3 +- .../src/main/java/webapi/Settings.java | 5 ++ 5 files changed, 56 insertions(+), 16 deletions(-) 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 d265b3d..623c05e 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 0ef9440..9cb9507 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 a40de95..a253c4c 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 26e673e..8b77375 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 233bfe3..c56f91a 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; -- GitLab