diff --git a/data-discovery/src/main/java/vlkb/output/Dataset.java b/data-discovery/src/main/java/vlkb/output/Dataset.java index 92f34de86ffdf6ec6a1270f8777484d65a2cf9f0..03d29d26332b37f43c23b64c405e7239344119a3 100644 --- a/data-discovery/src/main/java/vlkb/output/Dataset.java +++ b/data-discovery/src/main/java/vlkb/output/Dataset.java @@ -8,6 +8,9 @@ import java.util.Iterator; class Dataset { + + FormatResponseFilter.ObsDataset obsDataset; + class Access { String accessFileUrl; diff --git a/data-discovery/src/main/java/vlkb/output/SearchOutputData.java b/data-discovery/src/main/java/vlkb/output/SearchOutputData.java index 1b6d9c04cc0a09549699d5663870fec83f2b29b3..5e1b52e9e557918db2c519b6b500bfd6f21d400f 100644 --- a/data-discovery/src/main/java/vlkb/output/SearchOutputData.java +++ b/data-discovery/src/main/java/vlkb/output/SearchOutputData.java @@ -59,7 +59,8 @@ class SearchOutputData prevSubsurveyId = dataset.subsurvey_id; } - if( Dataset.areDatasetsMergeable(datasetList) ) + if( false ) + //if( Dataset.areDatasetsMergeable(datasetList) ) { Dataset mergedDataset = new Dataset(datasetList, inputs, mergeUrlRoot); datasetList.add(mergedDataset); diff --git a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java index e92bd9bc60ca29a15108c8b8c2f030ea9ca1299f..853980c2573dc19cf76f094f46902528491e9fcb 100644 --- a/data-discovery/src/main/java/vlkb/output/XmlSerializer.java +++ b/data-discovery/src/main/java/vlkb/output/XmlSerializer.java @@ -47,28 +47,66 @@ public final class XmlSerializer out.flush(); } + private static StarTable makeSearchResultsTable(Subsurvey[] ssurv) { - ColumnInfo[] colInfos = new ColumnInfo[ 6 + 2*4 ]; - - int ix=0; - - colInfos[ ix++ ] = new ColumnInfo( "overlap", Integer.class, "Overlap Code" ); - colInfos[ ix++ ] = new ColumnInfo( "overlapSky", Integer.class, "Overlap Code for Sky axes" ); - colInfos[ ix++ ] = new ColumnInfo( "overlapSpec", Integer.class, "Overlap Code for Spectral axis" ); - - colInfos[ ix++ ] = new ColumnInfo( "dataType", String.class, "Data Type (image|cube)" ); - colInfos[ ix++ ] = new ColumnInfo( "pubdid", String.class, "PublisherDid" ); - colInfos[ ix++ ] = new ColumnInfo( "access_url", String.class, "Access URL" ); - - colInfos[ ix++ ] = new ColumnInfo( "P1lon", Double.class, "longitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P1lat", Double.class, "latitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P2lon", Double.class, "longitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P2lat", Double.class, "latitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P3lon", Double.class, "longitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P3lat", Double.class, "latitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P4lon", Double.class, "longitude" ); - colInfos[ ix++ ] = new ColumnInfo( "P4lat", Double.class, "latitude" ); + // FIXME make static final + ColumnInfo[] colInfos = + { + new ColumnInfo( "dataproduct_type", String.class, "Dataproduct Type (image|cube)" ), + new ColumnInfo( "calib_level", Integer.class, "Calibration level" ), + new ColumnInfo( "obs_collection", String.class, "Collection" ), + new ColumnInfo( "obs_id", String.class, "Observation Id" ), + new ColumnInfo( "obs_publisher_did", String.class, "Publisher Did" ), + + new ColumnInfo( "access_url", String.class, "Access URL" ), + new ColumnInfo( "access_format", String.class, "Format (MIME type)" ), + new ColumnInfo( "access_estsize", Long.class, "Extimated size (KB)" ), + + new ColumnInfo( "target_name", String.class, "Target" ), + + new ColumnInfo( "s_ra", Double.class, "Right Ascention" ), + new ColumnInfo( "s_dec", Double.class, "Declination" ), + new ColumnInfo( "s_fov", Double.class, "Field of view" ), + new ColumnInfo( "s_region", String.class, "Region" ), + new ColumnInfo( "s_xel1", Long.class, "Pixels axis1" ), + new ColumnInfo( "s_xel2", Long.class, "Pixels axis2" ), + new ColumnInfo( "s_resolution", Double.class, "Spatial resolution" ), + + new ColumnInfo( "t_min", Double.class, "Time min" ), + new ColumnInfo( "t_max", Double.class, "Time max" ), + new ColumnInfo( "t_exptime", Double.class, "Exposure time" ), + new ColumnInfo( "t_resolution", Double.class, "Time resolution" ), + new ColumnInfo( "t_xel", Long.class, "Time pixels" ), + + new ColumnInfo( "em_min", Double.class, "Spectrum min" ), + new ColumnInfo( "em_max", Double.class, "Spectrum max" ), + new ColumnInfo( "em_res_power", Double.class, "Spectrum resolution power" ), + new ColumnInfo( "em_xel", Long.class, "Spectrum pixels" ), + + new ColumnInfo( "o_ucd", String.class, "Observable UCD" ), + + new ColumnInfo( "pol_states", String.class, "Polarization states" ), + new ColumnInfo( "pol_xel", Long.class, "Polarization pixels" ), + + new ColumnInfo( "facility_name", String.class, "Facility" ), + new ColumnInfo( "instrument_name", String.class, "Instrument" ), + + + // VLKB extensions + new ColumnInfo( "overlap", Integer.class, "Overlap Code" ), + new ColumnInfo( "overlapSky", Integer.class, "Overlap Code for Sky axes" ), + new ColumnInfo( "overlapSpec", Integer.class, "Overlap Code for Spectral axis" ), + + new ColumnInfo( "P1lon", Double.class, "P1 longitude" ), + new ColumnInfo( "P1lat", Double.class, "P1 latitude" ), + new ColumnInfo( "P2lon", Double.class, "P2 longitude" ), + new ColumnInfo( "P2lat", Double.class, "P2 latitude" ), + new ColumnInfo( "P3lon", Double.class, "P3 longitude" ), + new ColumnInfo( "P3lat", Double.class, "P3 latitude" ), + new ColumnInfo( "P4lon", Double.class, "P4 longitude" ), + new ColumnInfo( "P4lat", Double.class, "P4 latitude" ) + }; RowListStarTable astro = new RowListStarTable( colInfos ); @@ -76,20 +114,54 @@ public final class XmlSerializer { for(Dataset dataset : subsurvey.datasetArr) { + if(dataset.obsDataset == null) continue; // skip mergeable datasets + astro.addRow( new Object[] { - new Integer( dataset.overlapCode ), - new Integer( dataset.overlapCodeSky ), - new Integer( dataset.overlapCodeVel ), - - dataset.dataType, - dataset.publisherDid, - dataset.access.accessCutoutUrl, - - new Double(dataset.vertices_deg.lon[0]), new Double(dataset.vertices_deg.lat[0]), - new Double(dataset.vertices_deg.lon[1]), new Double(dataset.vertices_deg.lat[1]), - new Double(dataset.vertices_deg.lon[2]), new Double(dataset.vertices_deg.lat[2]), - new Double(dataset.vertices_deg.lon[3]), new Double(dataset.vertices_deg.lat[3]), + // ObsCore + dataset.obsDataset.dataproduct_type,//dataset.dataType, + new Integer( dataset.obsDataset.calib_level ), + dataset.obsDataset.obs_collection, + dataset.obsDataset.obs_id, + dataset.obsDataset.obs_publisher_did, + + dataset.obsDataset.access_url,//dataset.access.accessCutoutUrl, + dataset.obsDataset.access_format, + new Long( dataset.obsDataset.access_estsize ), + + dataset.obsDataset.target_name, + + new Double(dataset.obsDataset.s_ra),new Double(dataset.obsDataset.s_dec),new Double(dataset.obsDataset.s_fov), + dataset.obsDataset.s_region, + new Long( dataset.obsDataset.s_xel1 ), new Long( dataset.obsDataset.s_xel2 ), + new Double(dataset.obsDataset.s_resolution), + + new Double(dataset.obsDataset.t_min), new Double(dataset.obsDataset.t_max), + new Double(dataset.obsDataset.t_exptime), new Double(dataset.obsDataset.t_resolution), + new Long( dataset.obsDataset.t_xel ), + + new Double(dataset.obsDataset.em_min), new Double(dataset.obsDataset.em_max), + new Double(dataset.obsDataset.em_res_power), + new Long( dataset.obsDataset.em_xel ), + + dataset.obsDataset.o_ucd, + + dataset.obsDataset.pol_states, + new Long( dataset.obsDataset.pol_xel ), + + dataset.obsDataset.facility_name, + dataset.obsDataset.instrument_name, + + + // VLKB extensions + new Integer( dataset.overlapCode ), + new Integer( dataset.overlapCodeSky ), + new Integer( dataset.overlapCodeVel ), + + new Double(dataset.vertices_deg.lon[0]), new Double(dataset.vertices_deg.lat[0]), + new Double(dataset.vertices_deg.lon[1]), new Double(dataset.vertices_deg.lat[1]), + new Double(dataset.vertices_deg.lon[2]), new Double(dataset.vertices_deg.lat[2]), + new Double(dataset.vertices_deg.lon[3]), new Double(dataset.vertices_deg.lat[3]), }); } } diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java index eb00fb7b8b4d14e247eccdef2e4729cd5d2b53fa..315c6a868088f93d8fd2177bba2e772b4d3d9d77 100644 --- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java +++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java @@ -225,15 +225,44 @@ public class DbPSearch FormatResponseFilter.ObsDataset obsDataset = new FormatResponseFilter.ObsDataset(); obsDataset.dataproduct_type = res.getString("dataproduct_type"); - obsDataset.obs_publisher_did = res.getString("obs_publisher_did"); + obsDataset.calib_level = res.getInt("calib_level"); obsDataset.obs_collection = res.getString("obs_collection"); - obsDataset.access_url = res.getString("access_url"); + obsDataset.obs_id = res.getString("obs_id"); + obsDataset.obs_publisher_did = res.getString("obs_publisher_did"); - obsDataset.em_min = res.getDouble("em_min"); - boolean em_min_valid = !res.wasNull(); - obsDataset.em_max = res.getDouble("em_max"); - boolean em_max_valid = !res.wasNull(); - obsDataset.em_valid = em_min_valid && em_max_valid;; + obsDataset.access_url = res.getString("access_url"); + obsDataset.access_format = res.getString("access_format"); + obsDataset.access_estsize = res.getLong("access_estsize"); + + obsDataset.target_name = res.getString("target_name"); + + obsDataset.s_ra = res.getDouble("s_ra"); + obsDataset.s_dec = res.getDouble("s_dec"); + obsDataset.s_fov = res.getDouble("s_fov"); + obsDataset.s_region = res.getString("s_region"); + obsDataset.s_xel1 = res.getLong("s_xel1"); + obsDataset.s_xel2 = res.getLong("s_xel2"); + obsDataset.s_resolution = res.getDouble("s_resolution"); + + obsDataset.t_min = res.getDouble("t_min"); + obsDataset.t_max = res.getDouble("t_max"); + obsDataset.t_exptime = res.getDouble("t_exptime"); + obsDataset.t_resolution = res.getDouble("t_resolution"); + obsDataset.t_xel = res.getLong("t_xel"); + + obsDataset.em_min = res.getDouble("em_min"); boolean em_min_valid = !res.wasNull(); + obsDataset.em_max = res.getDouble("em_max"); boolean em_max_valid = !res.wasNull(); + obsDataset.em_valid = em_min_valid && em_max_valid;; + obsDataset.em_res_power = res.getDouble("em_res_power"); + obsDataset.em_xel = res.getLong("em_xel"); + + obsDataset.o_ucd = res.getString("o_ucd"); + + obsDataset.pol_states = res.getString("pol_states"); + obsDataset.pol_xel = res.getLong("pol_xel"); + + obsDataset.facility_name = res.getString("facility_name"); + obsDataset.instrument_name = res.getString("instrument_name"); obsDataset.vertices_str = res.getString("polygon_region_galactic"); obsDataset.inputInsideDb = res.getBoolean("inputInsideDb"); diff --git a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java index 0d6d265e1324a3ef536c68b7d43dc0434d5e6354..bcc22869769d8d089cd8b1f5ff2b3809eb28a553 100644 --- a/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java +++ b/data-discovery/src/main/java/vlkb/webapi/FormatResponseFilter.java @@ -155,14 +155,37 @@ public class FormatResponseFilter implements Filter static class ObsDataset { String dataproduct_type; - String obs_publisher_did; + Integer calib_level; String obs_collection; + String obs_id; + String obs_publisher_did; + String access_url; + String access_format; + Long access_estsize; + + String target_name; + + Double s_ra, s_dec, s_fov; + String s_region; + Long s_xel1, s_xel2; + Double s_resolution; + + Double t_min, t_max, t_exptime, t_resolution; + Long t_xel; - double em_min; - double em_max; + Double em_min, em_max, em_res_power; + Long em_xel; boolean em_valid; + String o_ucd; + + String pol_states; + Long pol_xel; + + String facility_name; + String instrument_name; + String vertices_str; boolean inputInsideDb; boolean dbInsideInput; @@ -193,10 +216,13 @@ public class FormatResponseFilter implements Filter private Dataset[] convert(FormatResponseFilter.ObsDataset[] obsDatasetArr, Coord coord, String queryString, String fitsRemotePath) { List<Dataset> datasetList = new ArrayList<Dataset>(); + for(FormatResponseFilter.ObsDataset obsDataset : obsDatasetArr) { Dataset dataset = new Dataset(); + dataset.obsDataset = obsDataset; + dataset.subsurvey_id = obsDataset.obs_collection; dataset.overlapCodeSky = convertToOverlapCodeSky(obsDataset.inputInsideDb, obsDataset.dbInsideInput); dataset.overlapCodeVel = convertToOverlapCodeVel(coord, obsDataset.em_valid, obsDataset.em_min, obsDataset.em_max); @@ -213,6 +239,7 @@ public class FormatResponseFilter implements Filter datasetList.add(dataset); } + return datasetList.toArray(new Dataset[0]); }