From 1000df13bf832b2468176587d773053c8d0aa163 Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Mon, 14 Oct 2024 17:02:49 +0300 Subject: [PATCH] adds s_region_galactic and vel_min vel_max to response/VOTable --- .../src/main/java/output/ObscoreExt.java | 14 +++++++++-- .../src/main/java/search/DbPSearch.java | 23 +++++++++++++++--- .../java/webapi/FormatResponseFilter.java | 4 ++- java-libs/lib/vlkb-volib-0.9.0.jar | Bin 21531 -> 0 bytes siav2-vlkb-extensions.tex | 11 --------- 5 files changed, 34 insertions(+), 18 deletions(-) delete mode 100644 java-libs/lib/vlkb-volib-0.9.0.jar delete mode 100644 siav2-vlkb-extensions.tex diff --git a/data-discovery/src/main/java/output/ObscoreExt.java b/data-discovery/src/main/java/output/ObscoreExt.java index ef75552..4027f45 100644 --- a/data-discovery/src/main/java/output/ObscoreExt.java +++ b/data-discovery/src/main/java/output/ObscoreExt.java @@ -95,7 +95,7 @@ class ObscoreExt new ColumnInfo( "overlapSky", Integer.class, "Overlap Code for Sky axes" ), new ColumnInfo( "overlapSpec", Integer.class, "Overlap Code for Spectral axis" ), - new ColumnInfo( "P1lon", Double.class, "P1 longitude" ), +/* new ColumnInfo( "P1lon", Double.class, "P1 longitude" ), new ColumnInfo( "P1lat", Double.class, "P1 latitude" ), new ColumnInfo( "P2lon", Double.class, "P2 longitude" ), new ColumnInfo( "P2lat", Double.class, "P2 latitude" ), @@ -103,7 +103,12 @@ class ObscoreExt new ColumnInfo( "P3lat", Double.class, "P3 latitude" ), new ColumnInfo( "P4lon", Double.class, "P4 longitude" ), new ColumnInfo( "P4lat", Double.class, "P4 latitude" ), +*/ + new ColumnInfo( "s_region_galactic", String.class, "Region [GALACTIC]" ), + new ColumnInfo( "vel_min", Double.class, "Velocity min" ), + new ColumnInfo( "vel_max", Double.class, "Velocity max" ), + new ColumnInfo( "file_url", String.class, "Access URL: all file" ), new ColumnInfo( "cutout_url", String.class, "Access URL: cut file" ), new ColumnInfo( "merge_url", String.class, "Access URL: demosaicing files" ), @@ -118,10 +123,15 @@ class ObscoreExt Integer.valueOf( dataset.overlapCodeSky ), Integer.valueOf( dataset.overlapCodeVel ), - Double.valueOf(dataset.vertices_deg.lon[0]), Double.valueOf(dataset.vertices_deg.lat[0]), +/* Double.valueOf(dataset.vertices_deg.lon[0]), Double.valueOf(dataset.vertices_deg.lat[0]), Double.valueOf(dataset.vertices_deg.lon[1]), Double.valueOf(dataset.vertices_deg.lat[1]), Double.valueOf(dataset.vertices_deg.lon[2]), Double.valueOf(dataset.vertices_deg.lat[2]), Double.valueOf(dataset.vertices_deg.lon[3]), Double.valueOf(dataset.vertices_deg.lat[3]), +*/ + dataset.obsCore.s_region_galactic, + + dataset.obsCore.vel_min == null ? null : Double.valueOf(dataset.obsCore.vel_min), + dataset.obsCore.vel_min == null ? null : Double.valueOf(dataset.obsCore.vel_max), dataset.access.accessFileUrl, dataset.access.accessCutoutUrl, diff --git a/data-discovery/src/main/java/search/DbPSearch.java b/data-discovery/src/main/java/search/DbPSearch.java index d4d066d..10ee843 100644 --- a/data-discovery/src/main/java/search/DbPSearch.java +++ b/data-discovery/src/main/java/search/DbPSearch.java @@ -47,11 +47,12 @@ public class DbPSearch boolean vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE); if(vel_valid) { + String prefix = toSpecColumnNamePrefix(coord.band.system); String vel_no_overlap - = "((em_min > " + Double.toString(coord.band.getMax()) - + ") OR (em_max < " + Double.toString(coord.band.getMin()) + "))"; + = "((" + prefix + "_min > " + Double.toString(coord.band.getMax()) + + ") OR (" + prefix + "_max < " + Double.toString(coord.band.getMin()) + "))"; - theQuery += " AND ( (em_min is null) OR (em_max is null) OR (NOT " + vel_no_overlap + "))"; + theQuery += " AND ( ("+prefix+"_min is null) OR ("+prefix+"_max is null) OR (NOT " + vel_no_overlap + "))"; /* NOTE '... OR (em_min is null)' statement causes to include 2D datasets if they overlap in sky * It is the legacy-search behaviour - however is that useful ? */ @@ -210,6 +211,7 @@ public class DbPSearch obsCore.s_dec = res.getDouble("s_dec"); obsCore.s_fov = res.getDouble("s_fov"); obsCore.s_region = res.getString("s_region"); + obsCore.s_region_galactic = res.getString("s_region_galactic"); obsCore.s_xel1 = res.getLong("s_xel1"); obsCore.s_xel2 = res.getLong("s_xel2"); obsCore.s_resolution = res.getDouble("s_resolution"); @@ -220,6 +222,9 @@ public class DbPSearch obsCore.t_resolution = res.getDouble("t_resolution"); obsCore.t_xel = res.getLong("t_xel"); + obsCore.vel_min = res.getDouble("vel_min"); //boolean em_min_valid = !res.wasNull(); + obsCore.vel_max = res.getDouble("vel_max"); //boolean em_max_valid = !res.wasNull(); + obsCore.em_min = res.getDouble("em_min"); boolean em_min_valid = !res.wasNull(); obsCore.em_max = res.getDouble("em_max"); boolean em_max_valid = !res.wasNull(); obsCore.em_valid = em_min_valid && em_max_valid;; @@ -325,7 +330,17 @@ public class DbPSearch return dbRegion; } - + private String toSpecColumnNamePrefix(Band.System system) + { + // vlkb-volib/Band.System: WAVE_Barycentric, VELO_LSRK, GRID, NONE + String prefix; + switch(system) + { + case VELO_LSRK: prefix = "vel"; break; + default: prefix = "em"; + } + return prefix; + } private void logSqlExInfo(SQLException se) diff --git a/data-discovery/src/main/java/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/webapi/FormatResponseFilter.java index d5adcd8..c8e745c 100644 --- a/data-discovery/src/main/java/webapi/FormatResponseFilter.java +++ b/data-discovery/src/main/java/webapi/FormatResponseFilter.java @@ -217,7 +217,7 @@ public class FormatResponseFilter implements Filter Double t_min, t_max, t_exptime, t_resolution; Long t_xel; - Double em_min, em_max, em_res_power; + Double em_min, em_max, em_res_power; Long em_xel; boolean em_valid; @@ -233,6 +233,8 @@ public class FormatResponseFilter implements Filter boolean inputInsideDb; boolean dbInsideInput; + String s_region_galactic; + Double vel_min, vel_max; } diff --git a/java-libs/lib/vlkb-volib-0.9.0.jar b/java-libs/lib/vlkb-volib-0.9.0.jar deleted file mode 100644 index 7a469173ef91db8367fb58af748e1f668e405fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21531 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 L*cce3eL*|`A5BYI diff --git a/siav2-vlkb-extensions.tex b/siav2-vlkb-extensions.tex deleted file mode 100644 index cd3dfa1..0000000 --- a/siav2-vlkb-extensions.tex +++ /dev/null @@ -1,11 +0,0 @@ - - -VLKB extension above standard SIAv2 has: - -* overlap code -* reconstructs full URLs for cutout and merge -* response repeats all input params to the query -* adds subsurvey metadata -* groups the results by (sub)surveys -* adds mergeable (virtual) datasets - -- GitLab