diff --git a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java index eea0ac48514f7f84c1d318e4a2e48276a234688f..ee3c2cde5ba5c28f7ec69bf39bef700dcc1f15fc 100644 --- a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java +++ b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java @@ -172,25 +172,25 @@ final class XmlSerializer xml.append("<SkySystem>"+coord.pos.system+"</SkySystem>"); switch(coord.pos.shape) { - case "CIRCLE" : - xml.append("<l>"+coord.pos.circle.lon+"</l>"); - xml.append("<b>"+coord.pos.circle.lat+"</b>"); - xml.append("<r>"+String.valueOf(coord.pos.circle.radius)+"</r>"); break; - case "RECT" : - xml.append("<l>"+(coord.pos.range.lon1+ coord.pos.range.lon2)/2.0 + "</l>"); - xml.append("<b>"+(coord.pos.range.lat1+ coord.pos.range.lat2)/2.0 + "</b>"); - xml.append("<dl>"+String.valueOf(coord.pos.range.lon2 - coord.pos.range.lon1)+"</dl>"); - xml.append("<db>"+String.valueOf(coord.pos.range.lat2 - coord.pos.range.lat1)+"</db>"); + case CIRCLE: + xml.append("<l>" + String.valueOf(coord.pos.circle.lon) + "</l>"); + xml.append("<b>" + String.valueOf(coord.pos.circle.lat) + "</b>"); + xml.append("<r>" + String.valueOf(coord.pos.circle.radius)+"</r>"); break; + case RANGE: + xml.append("<l>" + String.valueOf((coord.pos.range.lon1 + coord.pos.range.lon2)/2.0) + "</l>"); + xml.append("<b>" + String.valueOf((coord.pos.range.lat1 + coord.pos.range.lat2)/2.0) + "</b>"); + xml.append("<dl>" + String.valueOf(coord.pos.range.lon2 - coord.pos.range.lon1) + "</dl>"); + xml.append("<db>" + String.valueOf(coord.pos.range.lat2 - coord.pos.range.lat1) + "</db>"); break; - default: - xml.append("<shape> unknown shape: "+ coord.pos.shape +" </shape>"); + default: // POLYGON was not used in VLKB-legacy -> let it fail with error + xml.append("<shape> unknown shape: " + coord.pos.shape + " </shape>"); } } if(coord.band != null) { - xml.append("<vl>" + String.valueOf(coord.band.wavelength[0]) +"</vl>"); - xml.append("<vu>" + String.valueOf(coord.band.wavelength[1]) +"</vu>"); + xml.append("<vl>" + String.valueOf(coord.band.getMin()) +"</vl>"); + xml.append("<vu>" + String.valueOf(coord.band.getMax()) +"</vu>"); xml.append("<vtype>"+ coord.band.system +"</vtype>"); } diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java index 3aaab5ef577c9cac401d208ba6c3ee1df2f96552..8c72fb9cb5f424e31ec1b8b0fe7ddf8c4bdf0044 100644 --- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java +++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java @@ -48,8 +48,8 @@ public class DbPSearch if(vel_valid) { String vel_no_overlap - = "((em_min > " + Double.toString(coord.band.wavelength[1]) - + ") OR (em_max < " + Double.toString(coord.band.wavelength[0]) + "))"; + = "((em_min > " + Double.toString(coord.band.getMax()) + + ") OR (em_max < " + Double.toString(coord.band.getMin()) + "))"; theQuery += " AND ( (NOT " + vel_no_overlap + ") OR (em_min is null) OR (em_max is null))"; /* NOTE '... OR (em_min is null)' statement causes to include 2D datasets if they overlap in sky @@ -217,48 +217,49 @@ public class DbPSearch String inputRegion = null; - String shape = pos.shape; - - if(shape.equals("CIRCLE")) - { - lon = pos.circle.lon; - lat = pos.circle.lat; - radius = pos.circle.radius; - inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d)," - + Double.toString(radius) + "d>'"; - } - else if (shape.equals("RECT")) - { - lon = (pos.range.lon1 + pos.range.lon2)/2.0; - lat = (pos.range.lat1 + pos.range.lat2)/2.0; - dlon = (pos.range.lon2 - pos.range.lon1)/2.0; - dlat = (pos.range.lat2 - pos.range.lat1)/2.0; - - /* South-West and North-East corners of a box */ - String sw_lon = Double.toString(lon - dlon/2.0); - String sw_lat = Double.toString(lat - dlat/2.0); - String ne_lon = Double.toString(lon + dlon/2.0); - String ne_lat = Double.toString(lat + dlat/2.0); - - inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'"; - } - else if (shape.equals("POLYGON")) + switch(pos.shape) { - // FIXME redefine Polygon as point-array: - assert(pos.polygon.lon.length == pos.polygon.lat.length); + case CIRCLE: + lon = pos.circle.lon; + lat = pos.circle.lat; + radius = pos.circle.radius; + inputRegion = "scircle '<(" + Double.toString(lon) + "d," + Double.toString(lat) + "d)," + + Double.toString(radius) + "d>'"; + break; - // Polygon has at least 3 points - inputRegion = "spoly '( (" + pos.polygon.lon[0] + "d, " + pos.polygon.lat[0] + "d),"; - for(int ii=1; ii < pos.polygon.lon.length; ii++) - { - inputRegion += ", (" + pos.polygon.lon[ii] + "d, " + pos.polygon.lat[ii] + "d)"; - } - inputRegion += " )'"; - } - else - { - throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT"); + case RANGE: + lon = (pos.range.lon1 + pos.range.lon2)/2.0; + lat = (pos.range.lat1 + pos.range.lat2)/2.0; + dlon = (pos.range.lon2 - pos.range.lon1)/2.0; + dlat = (pos.range.lat2 - pos.range.lat1)/2.0; + + /* South-West and North-East corners of a box */ + String sw_lon = Double.toString(lon - dlon/2.0); + String sw_lat = Double.toString(lat - dlat/2.0); + String ne_lon = Double.toString(lon + dlon/2.0); + String ne_lat = Double.toString(lat + dlat/2.0); + + inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'"; + break; + + case POLYGON: + // FIXME redefine Polygon as point-array: + assert(pos.polygon.lon.length == pos.polygon.lat.length); + + // Polygon has at least 3 points + inputRegion = "spoly '( (" + pos.polygon.lon[0] + "d, " + pos.polygon.lat[0] + "d),"; + for(int ii=1; ii < pos.polygon.lon.length; ii++) + { + inputRegion += ", (" + pos.polygon.lon[ii] + "d, " + pos.polygon.lat[ii] + "d)"; + } + inputRegion += " )'"; + break; + + default: + throw new IllegalArgumentException("Coord::shape was: " + pos.shape.toString() + + " but valid is CIRCLE or RANGE or POLYGON"); } + return inputRegion; } diff --git a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java index 53eee4a3e4a5679b2d8c46a45fdc4afad1190a76..4294cc02f9097381d186c5bc645850737b8b1b90 100644 --- a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java +++ b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java @@ -303,11 +303,11 @@ public class FormatResponseFilter implements Filter // FIXME assert coord: vel_min <= vel_max // FIXME assert cube: v_min <= v_max - boolean dbInInp = (coord.band.wavelength[0] <= v_min) && (v_min <= coord.band.wavelength[1]) - && (coord.band.wavelength[0] <= v_max) && (v_max <= coord.band.wavelength[1]); + boolean dbInInp = (coord.band.getMin() <= v_min) && (v_min <= coord.band.getMax()) + && (coord.band.getMin() <= v_max) && (v_max <= coord.band.getMax()); - boolean inpInDb = (v_min <= coord.band.wavelength[0]) && (coord.band.wavelength[0] <= v_max) - && (v_min <= coord.band.wavelength[1] ) && (coord.band.wavelength[1] <= v_max); + boolean inpInDb = (v_min <= coord.band.getMin()) && (coord.band.getMin() <= v_max) + && (v_min <= coord.band.getMax() ) && (coord.band.getMax() <= v_max); return convertToOverlapCodeSky(inpInDb, dbInInp); @@ -362,35 +362,29 @@ public class FormatResponseFilter implements Filter StringBuilder sb = new StringBuilder(); - sb.append("skysystem=" + coord.pos.system); - + sb.append("POSSYS=" + coord.pos.system.toString()); switch(coord.pos.shape) { - case "CIRCLE" : - sb.append("&POS=CIRCLE " + coord.pos.circle.lon - + " " + coord.pos.circle.lat + " " + coord.pos.circle.radius); + case CIRCLE: + sb.append("&POS=" + coord.pos.circle.toString()); break; - case "RECT" : - if(coord.band != null) - sb.append("&POS=RANGE=" - + " " + coord.pos.range.lon1 + " " + coord.pos.range.lon2 - + " " + coord.pos.range.lat1 + " " + coord.pos.range.lat2 - + " " + coord.band.wavelength[0] + " " + coord.band.wavelength[1]); - else - sb.append("&POS=RANGE=" - + " " + coord.pos.range.lon1 + " " + coord.pos.range.lon2 - + " " + coord.pos.range.lat1 + " " + coord.pos.range.lat2); + case RANGE: + sb.append("&POS=" + coord.pos.range.toString()); + break; + + case POLYGON: + sb.append("&POS=" + coord.pos.polygon.toString()); break; default: - LOGGER.info("Coord::toVoQueryString: unknown shape: " + coord.pos.shape); + LOGGER.info("Coord::toQueryString: unknown shape: " + coord.pos.shape.toString()); } if(coord.band != null) { - sb.append("&BAND= " + coord.band.wavelength[0] + " " + coord.band.wavelength[1]); - sb.append("&specsystem=" + coord.band.system ); + sb.append("&" + coord.band.toString()); + sb.append("&BANDSYS=" + coord.band.system.toString() ); } sb.append("&ID="); // FIXME id-value will be added in FormatResponseFilter diff --git a/java-libs/lib/vlkb-volib-0.9-SNAPSHOT.jar b/java-libs/lib/vlkb-volib-0.9-SNAPSHOT.jar index 9ba5160584a847c38f4cae9a2732f69845e30032..edd31c5773f5ab0d4a04df802e5dbbf951bc0218 100644 Binary files a/java-libs/lib/vlkb-volib-0.9-SNAPSHOT.jar and b/java-libs/lib/vlkb-volib-0.9-SNAPSHOT.jar differ