From 09bc64631954956f6ed960decabcb41de809e8f1 Mon Sep 17 00:00:00 2001
From: Robert Butora <robert.butora@inaf.it>
Date: Wed, 10 Apr 2024 14:38:51 +0300
Subject: [PATCH] adds missing implementation of POLYGON to SQL query in
 DbPSearch

---
 .../src/main/java/vlkb/search/DbPSearch.java  | 22 ++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
index 4355231..dbd4494 100644
--- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java
+++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
@@ -71,19 +71,25 @@ public class DbPSearch
 
          inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'";
       }
-      else
-      { // FIXME how to deal with Polygon ? -> use enclose-RECT -> RANGE
-        /* lon = coord.lon;
-         lat = coord.lat;
-         radius = coord.radius;
-         dlon = coord.dlon;
-         dlat = coord.dlat;*/
+      else if (shape.equals("POLYGON"))
+      {
+         // FIXME redefine Polygon as point-array:
+         assert(coord.pos.polygon.lon.length == coord.pos.polygon.lat.length);
 
+         // Polygon has at least 3 points
+         inputRegion = "spoly '( (" + coord.pos.polygon.lon[0] + "d, " + coord.pos.polygon.lat[0] + "d),";
+         for(int ii=1; ii < coord.pos.polygon.lon.length; ii++)
+         {
+            inputRegion += ", (" + coord.pos.polygon.lon[ii] + "d, " + coord.pos.polygon.lat[ii] + "d)";
+         }
+         inputRegion += " )'";
+      }
+      else
+      {
          throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT");
       }
 
       boolean  vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);//coord.vel_valid;
-//      String   vel_type    = coord.vel_type;
 
       String theQuery;
       if(coord.pos.system == Pos.System.GALACTIC)
-- 
GitLab