From bb05d5c52e02642a624914c8085dbe85de7d403f Mon Sep 17 00:00:00 2001
From: Robert Butora <robert.butora@inaf.it>
Date: Sat, 20 Apr 2024 15:08:47 +0300
Subject: [PATCH] implements CALIB and MAXREC in parsing and SQL-query

---
 .../src/main/java/vlkb/search/DbPSearch.java      |  7 +++++++
 .../src/main/java/vlkb/webapi/SearchServlet.java  | 15 +++++++++------
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
index ecb3c44..6eeecbb 100644
--- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java
+++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java
@@ -93,6 +93,13 @@ public class DbPSearch
       theQuery += appendStringMatchConstraint(coord.target, "target_name");
       theQuery += appendStringMatchConstraint(coord.format, "access_format");
 
+      if(coord.calib != null)
+         theQuery += " AND (" + coord.calib + " = calib_level)";
+
+      if(coord.maxrec != null)
+         theQuery += " LIMIT " + coord.maxrec;
+
+
       //theQuery += " ORDER BY obs_collection";
 
       LOGGER.info(theQuery);
diff --git a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java
index 1b2ca23..58d49d4 100644
--- a/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java
+++ b/data-discovery/src/main/java/vlkb/webapi/SearchServlet.java
@@ -91,12 +91,15 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
          coord.target = SingleStringParam.parseSingleStringParam(params, "TARGET");
          coord.format = SingleStringParam.parseSingleStringParam(params, "FORMAT");
 
-         // coord.calib  = Integer.parseInt(SingleStringParam.parseSingleStringParam(params, "CALIB"));
-         // coord.maxrec = Integer.parseInt(SingleStringParam.parseSingleStringParam(params, "MAXREC"));
-         // FIXME implement checks (?in vlkb-volib?): 0<= calib <=5 and maxrec >= 0
-
-         // FIXME add to SQL-query params starting from fov ...
-
+         String str   = SingleStringParam.parseSingleStringParam(params, "CALIB");
+         coord.calib  = (str == null) ? null : Integer.parseInt(str);
+         if((coord.calib != null) && ((coord.calib < 0) || (coord.calib > 4)))
+            throw new IllegalArgumentException("CALIB out of range: " + coord.calib + " but allowed is 0..4");
+
+         str = SingleStringParam.parseSingleStringParam(params, "MAXREC");
+         coord.maxrec  = (str == null) ? null : Integer.parseInt(str);
+         if((coord.maxrec != null) && (coord.maxrec < 0))
+            throw new IllegalArgumentException("MAXREC must not be negative: " + coord.maxrec);
 
          /* query Obscore table */
 
-- 
GitLab