From 1f80727a72e470da08356692d2b90ce41ed5eab0 Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Sun, 28 Apr 2024 10:33:01 +0200 Subject: [PATCH] replaces DataLink -> MCutResult in doMCutout --- .../main/java/common/output/MCutResult.java | 20 +++++++---- .../src/main/java/cutout/Datasets.java | 2 +- .../src/main/java/cutout/DatasetsImpl.java | 2 +- .../src/main/java/cutout/json/JdlMCutout.java | 30 ++++++++-------- .../main/java/cutout/json/JsonDecoder.java | 4 +-- .../src/main/java/webapi/ServletMCutout.java | 3 +- .../src/main/java/webapi/UWSMCutoutWork.java | 3 +- .../src/main/java/webapi/output/DataLink.java | 35 ++++++++++++++++--- 8 files changed, 67 insertions(+), 32 deletions(-) diff --git a/data-access/servlet/src/main/java/common/output/MCutResult.java b/data-access/servlet/src/main/java/common/output/MCutResult.java index 5288da2..b65a669 100644 --- a/data-access/servlet/src/main/java/common/output/MCutResult.java +++ b/data-access/servlet/src/main/java/common/output/MCutResult.java @@ -1,12 +1,20 @@ - class MCutResult { - public enum ContentType {FILENAME, BAD_REQUEST, SERVICE_ERROR}; - public Inputs inputs; - public int index; - public ContentType contentType; - public String content; + + class Cut + { + public enum ContentType {FILENAME, BAD_REQUEST, SERVICE_ERROR}; + public Inputs inputs; + public int index; + public ContentType contentType; + public String content; + } + + + public String fileName; + public long fileSize; + Cut[] cutResArr; } diff --git a/data-access/servlet/src/main/java/cutout/Datasets.java b/data-access/servlet/src/main/java/cutout/Datasets.java index c07bdb9..684ba20 100644 --- a/data-access/servlet/src/main/java/cutout/Datasets.java +++ b/data-access/servlet/src/main/java/cutout/Datasets.java @@ -16,7 +16,7 @@ public interface Datasets throws FileNotFoundException, IOException; - public DataLink doMCutout(String jdlJson) + public MCutResult doMCutout(String jdlJson) throws IOException; } diff --git a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java index 7a54906..b64e361 100644 --- a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java +++ b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java @@ -67,7 +67,7 @@ class DatasetsImpl implements Datasets - public DataLink doMCutout(String jdlJson) + public MCutResult doMCutout(String jdlJson) throws IOException { LOGGER.info("trace"); diff --git a/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java b/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java index c076dd1..5791ca4 100644 --- a/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java +++ b/data-access/servlet/src/main/java/cutout/json/JdlMCutout.java @@ -101,11 +101,11 @@ public class JdlMCutout - public static DataLink responseFromMCutoutJson(String response) + public static MCutResult responseFromMCutoutJson(String response) // throws ParseException { - DataLink dlk = new DataLink(); + MCutResult cuts = new MCutResult(); try { JSONParser parser = new JSONParser(); Object jsonObj = parser.parse(response); @@ -132,7 +132,7 @@ public class JdlMCutout JSONArray jsonArray = (JSONArray)jsonObject.get("responses"); - MCutResult[] mcutResArr = new MCutResult[jsonArray.size()]; + MCutResult.Cut[] cutResArr = new MCutResult.Cut[jsonArray.size()]; int i = 0; @SuppressWarnings("unchecked") @@ -141,29 +141,29 @@ public class JdlMCutout { JSONObject jObj = itr.next(); - mcutResArr[i].inputs = (Inputs)jObj.get("input"); + cutResArr[i].inputs = (Inputs)jObj.get("input"); String ctype = (String)jObj.get("type"); if(ctype.equals("FILENAME")) - mcutResArr[i].contentType = MCutResult.ContentType.FILENAME; + cutResArr[i].contentType = MCutResult.Cut.ContentType.FILENAME; else if(ctype.equals("BAD_REQUEST")) - mcutResArr[i].contentType = MCutResult.ContentType.BAD_REQUEST; + cutResArr[i].contentType = MCutResult.Cut.ContentType.BAD_REQUEST; else if(ctype.equals("SERVICE_ERROR")) - mcutResArr[i].contentType = MCutResult.ContentType.SERVICE_ERROR; - mcutResArr[i].content = (String)jObj.get("content"); + cutResArr[i].contentType = MCutResult.Cut.ContentType.SERVICE_ERROR; + cutResArr[i].content = (String)jObj.get("content"); i++; } - dlk.contentLength = fileSize; - dlk.accessUrl = fileName; - dlk.mcutResultArr = mcutResArr; + cuts.fileSize = fileSize; + cuts.fileName = fileName; + cuts.cutResArr = cutResArr; } - } + } catch (ParseException e) - { + { e.printStackTrace(); throw new IllegalStateException("Internal system error."); - } - return dlk; + } + return cuts; } diff --git a/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java b/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java index a3b9ffc..3ac4b2b 100644 --- a/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java +++ b/data-access/servlet/src/main/java/cutout/json/JsonDecoder.java @@ -14,13 +14,13 @@ import org.json.simple.parser.ParseException; // // 1. exception (decoded inside 2 3) // -// 2. response from cutout: struct cutout_res_s --> DataLink +// 2. response from cutout: struct cutout_res_s --> CutResult // .filesize // .filename // .nullval_count : {fill_ratio null_count total_count} // // NOTE: MCutout moved to -> dacc/JdlMCutout.java -// 3. response from mcutout: struct mcutout_res_s --> DataLink +// 3. response from mcutout: struct mcutout_res_s --> MCutResult // .filesize // .tgz_filename // .cut_resp_s[] : {cut_param_s content_type content} diff --git a/data-access/servlet/src/main/java/webapi/ServletMCutout.java b/data-access/servlet/src/main/java/webapi/ServletMCutout.java index fd88d8d..db6133e 100644 --- a/data-access/servlet/src/main/java/webapi/ServletMCutout.java +++ b/data-access/servlet/src/main/java/webapi/ServletMCutout.java @@ -96,7 +96,8 @@ public class ServletMCutout extends javax.servlet.http.HttpServlet OutputStream respOutputStream = response.getOutputStream(); - DataLink dlk = datasets.doMCutout(reqJsonString); + MCutResult mCutRes = datasets.doMCutout(reqJsonString); + DataLink dlk = new DataLink(mCutRes); final String contentType = "text/xml"; // FIXME final String respEncoding = "utf-8"; // FIXME diff --git a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java index 259cecb..393b81f 100644 --- a/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java +++ b/data-access/servlet/src/main/java/webapi/UWSMCutoutWork.java @@ -83,7 +83,8 @@ public class UWSMCutoutWork extends JobThread /* SODA -> Implementation */ - DataLink dlk = datasets.doMCutout(reqJsonString); + MCutResult mCutResults = datasets.doMCutout(reqJsonString); + DataLink dlk = new DataLink(mCutResults); /* Implement -> SODA */ diff --git a/data-access/servlet/src/main/java/webapi/output/DataLink.java b/data-access/servlet/src/main/java/webapi/output/DataLink.java index 321379d..7c40950 100644 --- a/data-access/servlet/src/main/java/webapi/output/DataLink.java +++ b/data-access/servlet/src/main/java/webapi/output/DataLink.java @@ -11,23 +11,23 @@ class DataLink /* DataLink fields */ String id; - String accessUrl; + String accessUrl; // MX String serviceDef; String errorMessage; - String description; + String description; // X String semantics; String contentType; - long contentLength; + long contentLength; // MX /* legacy-VLKB fields */ Inputs inputs; String versionString; String cut; - String absCutPathname; + String absCutPathname; // ServeltCutout uses int datacubeCount; NullValueCount nullVals; - MCutResult[] mcutResultArr; + MCutResult.Cut[] mcutResultArr; public DataLink() @@ -62,6 +62,31 @@ class DataLink this.mcutResultArr = null; } + + public DataLink(MCutResult cutResult) + { + this.nullVals = new NullValueCount(); + + this.id = "_PIXEL_BOUNDS"; + this.accessUrl = cutResult.fileName; // FIXME filename ->> remoteUrl + this.serviceDef = null; + this.errorMessage = null; + this.description = "cutout_from ID"; + this.semantics = "FIXME find in IVOA docs..."; + this.contentType = "application/fits"; + this.contentLength = cutResult.fileSize; + + // VLKB-extension to DataLink: + this.inputs = null; + this.versionString = Version.asString; + this.cut = null; + this.absCutPathname = cutResult.fileName; + this.datacubeCount = 1; + this.nullVals = null; + this.mcutResultArr = cutResult.cutResArr; + } + + public String convertLocalPathnameToRemoteUrl(String localPathname, String FITScutpath, String FITSRemoteUrlCutouts) { String filename = localPathname.replaceAll(FITScutpath + "/", ""); -- GitLab