Commit 931ca42d authored by Robert Butora's avatar Robert Butora
Browse files

renames class Coord -> QueryArgs

parent 2fc43ff8
Loading
Loading
Loading
Loading
+27 −27
Original line number Diff line number Diff line
@@ -83,23 +83,23 @@ public class DbPSearch



   public String[] queryOverlapingPubdid(Coord coord)
   public String[] queryOverlapingPubdid(QueryArgs qArgs)
      throws Exception
   {
      LOGGER.fine("trace");

      String inputRegion = toPgSphereSqlTypeString(coord.pos);
      String dbRegion    = toRegionColumnName(coord.pos.system);
      String inputRegion = toPgSphereSqlTypeString(qArgs.pos);
      String dbRegion    = toRegionColumnName(qArgs.pos.system);

      String theQuery = "SELECT obs_publisher_did FROM obscore WHERE ("+inputRegion+"  && " + dbRegion + ")";

      boolean  vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);
      boolean  vel_valid = (qArgs.band != null) && (qArgs.band.system != Band.System.NONE);
      if(vel_valid)
      {
         String prefix = toSpecColumnNamePrefix(coord.band.system);
         String prefix = toSpecColumnNamePrefix(qArgs.band.system);
         String vel_no_overlap
            = "((" + prefix + "_min > " + Double.toString(coord.band.getMax())
            + ") OR (" + prefix + "_max < " + Double.toString(coord.band.getMin()) + "))";
            = "((" + prefix + "_min > " + Double.toString(qArgs.band.getMax())
            + ") OR (" + prefix + "_max < " + Double.toString(qArgs.band.getMin()) + "))";

         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
@@ -107,34 +107,34 @@ public class DbPSearch
          */
      }

      if(coord.collection != null)
      if(qArgs.collection != null)
      {
         String addColl = "";
         if(coord.collection.length() > 0)
            addColl += "(obs_collection LIKE '%" + coord.collection + "%')";
         if(qArgs.collection.length() > 0)
            addColl += "(obs_collection LIKE '%" + qArgs.collection + "%')";
      
         if(addColl.length() > 0) theQuery += " AND (" + addColl + ")";
      }

      theQuery += appendIntervalConstraint(coord.fov,     "s_fov");
      theQuery += appendIntervalConstraint(coord.spatres, "s_resolution");
      theQuery += appendIntervalConstraint(coord.specrp,  "em_res_power");
      theQuery += appendIntervalConstraint(coord.exptime, "t_exptime");
      theQuery += appendIntervalConstraint(coord.timeres, "t_resolution");
      theQuery += appendIntervalConstraint(qArgs.fov,     "s_fov");
      theQuery += appendIntervalConstraint(qArgs.spatres, "s_resolution");
      theQuery += appendIntervalConstraint(qArgs.specrp,  "em_res_power");
      theQuery += appendIntervalConstraint(qArgs.exptime, "t_exptime");
      theQuery += appendIntervalConstraint(qArgs.timeres, "t_resolution");

      theQuery += appendStringMatchConstraint(coord.id,         "obs_publisher_did");
      theQuery += appendStringMatchConstraint(coord.facility,   "facility_name");
      theQuery += appendStringMatchConstraint(coord.instrument, "instrument_name");
      theQuery += appendStringMatchConstraint(coord.dptype,     "dataproduct_type");
      theQuery += appendStringMatchConstraint(qArgs.id,         "obs_publisher_did");
      theQuery += appendStringMatchConstraint(qArgs.facility,   "facility_name");
      theQuery += appendStringMatchConstraint(qArgs.instrument, "instrument_name");
      theQuery += appendStringMatchConstraint(qArgs.dptype,     "dataproduct_type");

      theQuery += appendStringMatchConstraint(coord.target, "target_name");
      theQuery += appendStringMatchConstraint(coord.format, "access_format");
      theQuery += appendStringMatchConstraint(qArgs.target, "target_name");
      theQuery += appendStringMatchConstraint(qArgs.format, "access_format");

      if(coord.calib != null)
         theQuery += " AND (" + coord.calib + " = calib_level)";
      if(qArgs.calib != null)
         theQuery += " AND (" + qArgs.calib + " = calib_level)";

      if(coord.maxrec != null)
         theQuery += " LIMIT " + coord.maxrec;
      if(qArgs.maxrec != null)
         theQuery += " LIMIT " + qArgs.maxrec;


      //theQuery += " ORDER BY obs_collection";
@@ -325,7 +325,7 @@ public class DbPSearch
      {
         if(band.system == Band.System.VELO_LSRK)
         {
            // FIXME assert coord: vel_min <= vel_max
            // FIXME assert qArgs: vel_min <= vel_max
            // FIXME assert cube:  v_min   <= v_max

            boolean dbInInp = (band.getMin() <= v_min) && (v_min <= band.getMax())
@@ -460,7 +460,7 @@ public class DbPSearch
            break;

         default:
            throw new IllegalArgumentException("Coord::shape was: " + pos.shape.toString()
            throw new IllegalArgumentException("Pos::shape was: " + pos.shape.toString()
                  + " but valid is CIRCLE or RANGE or POLYGON");
      }

+1 −1
Original line number Diff line number Diff line

import vo.parameter.*;

class Coord
class QueryArgs
{
   Pos  pos;
   Band band;
+24 −24
Original line number Diff line number Diff line
@@ -44,37 +44,37 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
      {
         Map<String, String[]> params = request.getParameterMap();

         Coord coord = new Coord();
         coord.pos  = Pos.parsePos(params, DEFAULT_SKY_SYSTEM);
         coord.band = Band.parseBand(params, DEFAULT_SPEC_SYSTEM);
         coord.time = Time.parseTime(params, DEFAULT_TIME_SYSTEM);
         coord.pol  = Pol.parsePol(params);
         QueryArgs qArgs = new QueryArgs();
         qArgs.pos  = Pos.parsePos(params, DEFAULT_SKY_SYSTEM);
         qArgs.band = Band.parseBand(params, DEFAULT_SPEC_SYSTEM);
         qArgs.time = Time.parseTime(params, DEFAULT_TIME_SYSTEM);
         qArgs.pol  = Pol.parsePol(params);

         coord.fov     = Interval.parseInterval(params, "FOV");
         coord.spatres = Interval.parseInterval(params, "SPATRES");
         coord.specrp  = Interval.parseInterval(params, "SPECRP");
         coord.exptime = Interval.parseInterval(params, "EXPTIME");
         coord.timeres = Interval.parseInterval(params, "TIMERES");
         qArgs.fov     = Interval.parseInterval(params, "FOV");
         qArgs.spatres = Interval.parseInterval(params, "SPATRES");
         qArgs.specrp  = Interval.parseInterval(params, "SPECRP");
         qArgs.exptime = Interval.parseInterval(params, "EXPTIME");
         qArgs.timeres = Interval.parseInterval(params, "TIMERES");

         coord.id = SingleStringParam.parseSingleStringParam(params, "ID");
         qArgs.id = SingleStringParam.parseSingleStringParam(params, "ID");

         coord.collection = SingleStringParam.parseSingleStringParam(params, "COLLECTION");
         coord.facility   = SingleStringParam.parseSingleStringParam(params, "FACILITY");
         coord.instrument = SingleStringParam.parseSingleStringParam(params, "INSTRUMENT");
         coord.dptype     = SingleStringParam.parseSingleStringParam(params, "DPTYPE");
         qArgs.collection = SingleStringParam.parseSingleStringParam(params, "COLLECTION");
         qArgs.facility   = SingleStringParam.parseSingleStringParam(params, "FACILITY");
         qArgs.instrument = SingleStringParam.parseSingleStringParam(params, "INSTRUMENT");
         qArgs.dptype     = SingleStringParam.parseSingleStringParam(params, "DPTYPE");

         coord.target = SingleStringParam.parseSingleStringParam(params, "TARGET");
         coord.format = SingleStringParam.parseSingleStringParam(params, "FORMAT");
         qArgs.target = SingleStringParam.parseSingleStringParam(params, "TARGET");
         qArgs.format = SingleStringParam.parseSingleStringParam(params, "FORMAT");

         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");
         qArgs.calib  = (str == null) ? null : Integer.parseInt(str);
         if((qArgs.calib != null) && ((qArgs.calib < 0) || (qArgs.calib > 4)))
            throw new IllegalArgumentException("CALIB out of range: " + qArgs.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);
         qArgs.maxrec  = (str == null) ? null : Integer.parseInt(str);
         if((qArgs.maxrec != null) && (qArgs.maxrec < 0))
            throw new IllegalArgumentException("MAXREC must not be negative: " + qArgs.maxrec);

         /* query Obscore table */

@@ -83,7 +83,7 @@ public class SearchServlet extends javax.servlet.http.HttpServlet
         {
            dbps = new DbPSearch(settings.dbConn);
         }
         String[] pubdidArr = dbps.queryOverlapingPubdid(coord);
         String[] pubdidArr = dbps.queryOverlapingPubdid(qArgs);

         LOGGER.info("Found " + pubdidArr.length + " records");