diff --git a/data-discovery/src/main/java/search/DbPSearch.java b/data-discovery/src/main/java/search/DbPSearch.java index bf9148d80e855bba1e86f14921ba2edd4ca19aeb..429e833ed3e7fe55917bd8e499879c5783393ce4 100644 --- a/data-discovery/src/main/java/search/DbPSearch.java +++ b/data-discovery/src/main/java/search/DbPSearch.java @@ -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"); } diff --git a/data-discovery/src/main/java/common/Coord.java b/data-discovery/src/main/java/search/QueryArgs.java similarity index 96% rename from data-discovery/src/main/java/common/Coord.java rename to data-discovery/src/main/java/search/QueryArgs.java index 0bc1f89c907e922d9c6a8bec7da942ec7f976ac3..d00113cfd193f163f0e494ac5628fa8044e4c8c0 100644 --- a/data-discovery/src/main/java/common/Coord.java +++ b/data-discovery/src/main/java/search/QueryArgs.java @@ -1,7 +1,7 @@ import vo.parameter.*; -class Coord +class QueryArgs { Pos pos; Band band; diff --git a/data-discovery/src/main/java/webapi/SearchServlet.java b/data-discovery/src/main/java/webapi/SearchServlet.java index 4920f6b9778b38d7c1783f84817aedc83b85e00c..e4e83c516bf586d1b23acfcb41bba2afc4dfa1f0 100644 --- a/data-discovery/src/main/java/webapi/SearchServlet.java +++ b/data-discovery/src/main/java/webapi/SearchServlet.java @@ -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");