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