Skip to content
Snippets Groups Projects
Select Git revision
  • ff59ca498df0487e34ead7ef168ef1a2fdcf686a
  • master default protected
2 results

admin.py

Blame
  • JsonEncoderMerge.java 6.49 KiB
    
    import java.util.Iterator;
    /* 'JSON-Simple' library */
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;
    import org.json.simple.parser.ParseException;
    
    import vo.parameter.*;
    
    public class JsonEncoderMerge
    {
    
    
       @SuppressWarnings("unchecked")
       private static JSONObject coordinatesToJsonObj(Coord coord)
       {
          JSONObject obj = new JSONObject();
    
          obj.put("skysystem",  coord.skySystem);
          obj.put("shape",      coord.pos.shape);
          obj.put("specsystem", coord.specSystem);
    
          /* SODA */
    
          if(coord.pos != null)
          {
             obj.put("pos", objJPos(coord.pos));
          }
    
          if(coord.band != null)
          {
             obj.put("band", arrJBand(coord.band));
          }
    
          if(coord.time != null)
          {
             obj.put("time", genTimeJsonArr(coord.time) );
          }
    
          if(coord.pol != null)
          {
             obj.put("pol", genPolJsonArr(coord.pol) );
          }
    
          return obj;
       }
    
    
       private static JSONObject objJCircle(Circle circle)
       {
          JSONObject obj = new JSONObject();
          obj.put("lon", circle.lon);
          obj.put("lat", circle.lat);
          obj.put("radius", circle.radius);
          return obj;
       }
    
       private static JSONObject objJRange(Range range)
       {
          JSONObject obj = new JSONObject();
          obj.put("lon1", range.lon1);
          obj.put("lon2", range.lon2);
          obj.put("lat1", range.lat1);
          obj.put("lat2", range.lat2);
          return obj;
       }
    
       private static JSONObject objJPolygon(Polygon poly)
       {
          JSONObject obj = new JSONObject();
          obj.put("lon", genPolyLonJsonArr(poly));
          obj.put("lat", genPolyLatJsonArr(poly));
          return obj;
       }
    
       private static JSONObject objJPos(Pos pos)
       {
          JSONObject obj = new JSONObject();
          if(pos.circle  != null) obj.put("circle",  objJCircle(pos.circle));
          if(pos.range   != null) obj.put("range",   objJRange(pos.range));
          if(pos.polygon != null) obj.put("polygon", objJPolygon(pos.polygon));
          return obj;
       }
    
       private static JSONArray arrJBand(Band band)
       {
          JSONArray arr = new JSONArray();
          arr.add(band.getMin());
          arr.add(band.getMax());
          return arr;
       }
    
       private static JSONArray genTimeJsonArr(Time time)
       {
          JSONArray arr = new JSONArray();
          arr.add(time.getMin());
          arr.add(time.getMax());
          return arr;
       }
    
       private static JSONArray genPolyLonJsonArr(Polygon polygon)
       {
          JSONArray jarr = new JSONArray();
          for(double dbl : polygon.lon) jarr.add(dbl);
          return jarr;
       }
       private static JSONArray genPolyLatJsonArr(Polygon polygon)
       {
          JSONArray jarr = new JSONArray();
          for(double dbl : polygon.lat) jarr.add(dbl);
          return jarr;
       }
    
    
    
       private static JSONArray genPolJsonArr(Pol pol)
       {
          JSONArray jarr = new JSONArray();
          for(String str : pol.states) jarr.add(str);
          return jarr;
       }
    
    
       private static JSONArray extraCardsToJson(FitsCard[] extraCards)
       {
          JSONArray jcards = new JSONArray();
          for(FitsCard card : extraCards)
          {
             //jcards.add(card); FIXME check what would this add; compiler did not complain
    
             JSONObject jcard = new JSONObject();
             jcard.put("key", card.key);
             jcard.put("value", card.value);
             jcard.put("comment", card.comment);
    
             jcards.add(jcard);
          }
          return jcards;
       }
    
    
    
    
    
       @SuppressWarnings("unchecked")
       public static String subimgToJson(
             String imgPathname,
             int imgHdunum,
             Coord coord,
             String subimgFilename,
             FitsCard[] extraCards,
             boolean countNullValues)
       {
          JSONObject obj = new JSONObject();
    
          obj.put("service",  "SUBIMG");
    
          obj.put("img_pathname",    imgPathname);
          obj.put("img_hdunum",      imgHdunum);
          obj.put("coordinates",     coordinatesToJsonObj(coord));
          obj.put("subimg_filename", subimgFilename);
    
          if((extraCards != null) && (extraCards.length > 0))
          {
             obj.put("extra_cards", extraCardsToJson(extraCards));
          }
    
          obj.put("count_null_values", countNullValues);
    
          return obj.toJSONString();
       }
    
    
    
       @SuppressWarnings("unchecked")
       public static String mergefilesToJson(
             String dimensionality, 
             String[] filestomerge )
       {
          JSONObject objParameters = new JSONObject();
          objParameters.put("dimensionality", dimensionality);
    
          JSONArray fnames = new JSONArray();
          for(String fn : filestomerge){
             fnames.add(fn);
          }
          objParameters.put("files_to_merge", fnames);
    
          JSONObject obj = new JSONObject();
          obj.put("service",  "MERGEF");
          obj.put("parameters",  objParameters);
    
          return obj.toJSONString();
       }
    
    
    
       // BEGIN merge-parallel
    
       @SuppressWarnings("unchecked")
       public static String mergefilesCommonHeaderToJson(
             String jobId,
             String dimensionality, 
             String[] filestomerge )
       {
          JSONObject objParameters = new JSONObject();
          objParameters.put("merge_id", jobId);
          objParameters.put("dimensionality", dimensionality);
    
          JSONArray fnames = new JSONArray();
          for(String fn : filestomerge){
             fnames.add(fn);
          }
          objParameters.put("files_to_merge", fnames);
    
          JSONObject obj = new JSONObject();
          obj.put("service",  "MERGE1"); // MERGE phase 1: create common header
          obj.put("parameters",  objParameters);
    
    
          return obj.toJSONString();
       }
    
       @SuppressWarnings("unchecked")
       public static String mergefilesReprojectToJson(
             String jobId,
             String dimensionality, 
             String fitsFileName)
       {
          JSONObject objParameters = new JSONObject();
          objParameters.put("merge_id", jobId);
          objParameters.put("dimensionality", dimensionality);
          objParameters.put("fits_filename", fitsFileName);
    
          JSONObject obj = new JSONObject();
          obj.put("service",  "MERGE2"); // MERGE phase 2: reproject one fitsfile
          obj.put("parameters",  objParameters);
    
          return obj.toJSONString();
       }
    
       @SuppressWarnings("unchecked")
       public static String mergefilesAddReprojectedToJson(
             String jobId,
             String dimensionality )
       {
          JSONObject objParameters = new JSONObject();
          objParameters.put("merge_id", jobId);
          objParameters.put("dimensionality", dimensionality);
    
          JSONObject obj = new JSONObject();
          obj.put("service",  "MERGE3"); // MERGE phase 3: add all reprojected files
          obj.put("parameters",  objParameters);
    
          return obj.toJSONString();
       }
    
       // END merge-parallel
    
    
    }