Commit c1eaa91c authored by Robert Butora's avatar Robert Butora
Browse files

updates new vlkb-volib: shape changed to enum

parent ee77a823
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -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>");
            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 "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>");
            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:
            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>");
      }

+42 −41
Original line number Diff line number Diff line
@@ -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,18 +217,17 @@ public class DbPSearch

      String inputRegion = null;

      String shape = pos.shape;

      if(shape.equals("CIRCLE"))
      switch(pos.shape)
      {
         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>'";
      }
      else if (shape.equals("RECT"))
      {
            break;

         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;
@@ -241,9 +240,9 @@ public class DbPSearch
            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"))
      {
            break;

         case POLYGON:
            // FIXME redefine Polygon as point-array:
            assert(pos.polygon.lon.length == pos.polygon.lat.length);

@@ -254,11 +253,13 @@ public class DbPSearch
               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");
      }
      else
      {
         throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT");
      }

      return inputRegion;
   }

+16 −22
Original line number Diff line number Diff line
@@ -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
−1.88 KiB (20.7 KiB)

File changed.

No diff preview for this file type.