Skip to content
Snippets Groups Projects
Commit a8098492 authored by Robert Butora's avatar Robert Butora
Browse files

makes database-access tolerate missing columns (sets VOTable.col NULL rather then stop with error)

parent ca5a9270
Branches
Tags
No related merge requests found
......@@ -182,55 +182,55 @@ public class DbPSearch
{
FormatResponseFilter.ObsCore obsCore = new FormatResponseFilter.ObsCore();
obsCore.dataproduct_type = res.getString("dataproduct_type");
obsCore.calib_level = res.getInt("calib_level");
obsCore.obs_collection = res.getString("obs_collection");
obsCore.obs_title = res.getString("obs_title");
obsCore.obs_id = res.getString("obs_id");
obsCore.obs_publisher_did = res.getString("obs_publisher_did");
obsCore.bib_reference = res.getString("bib_reference");
obsCore.data_rights = res.getString("data_rights");
obsCore.access_url = res.getString("access_url");
obsCore.access_format = res.getString("access_format");
obsCore.access_estsize = res.getLong("access_estsize");
obsCore.target_name = res.getString("target_name");
obsCore.s_ra = res.getDouble("s_ra");
obsCore.s_dec = res.getDouble("s_dec");
obsCore.s_fov = res.getDouble("s_fov");
obsCore.s_region = res.getString("s_region");
obsCore.s_region_galactic = res.getString("s_region_galactic");
obsCore.s_xel1 = res.getLong("s_xel1");
obsCore.s_xel2 = res.getLong("s_xel2");
obsCore.s_resolution = res.getDouble("s_resolution");
obsCore.t_min = res.getDouble("t_min");
obsCore.t_max = res.getDouble("t_max");
obsCore.t_exptime = res.getDouble("t_exptime");
obsCore.t_resolution = res.getDouble("t_resolution");
obsCore.t_xel = res.getLong("t_xel");
obsCore.vel_min = res.getDouble("vel_min"); //boolean em_min_valid = !res.wasNull();
obsCore.vel_max = res.getDouble("vel_max"); //boolean em_max_valid = !res.wasNull();
obsCore.em_min = res.getDouble("em_min"); boolean em_min_valid = !res.wasNull();
obsCore.em_max = res.getDouble("em_max"); boolean em_max_valid = !res.wasNull();
obsCore.dataproduct_type = this.getString(res,"dataproduct_type");
obsCore.calib_level = this.getInt(res,"calib_level");
obsCore.obs_collection = this.getString(res,"obs_collection");
obsCore.obs_title = this.getString(res,"obs_title");
obsCore.obs_id = this.getString(res,"obs_id");
obsCore.obs_publisher_did = this.getString(res,"obs_publisher_did");
obsCore.bib_reference = this.getString(res,"bib_reference");
obsCore.data_rights = this.getString(res,"data_rights");
obsCore.access_url = this.getString(res,"access_url");
obsCore.access_format = this.getString(res,"access_format");
obsCore.access_estsize = this.getLong(res,"access_estsize");
obsCore.target_name = this.getString(res,"target_name");
obsCore.s_ra = this.getDouble(res,"s_ra");
obsCore.s_dec = this.getDouble(res,"s_dec");
obsCore.s_fov = this.getDouble(res,"s_fov");
obsCore.s_region = this.getString(res,"s_region");
obsCore.s_region_galactic = this.getString(res,"s_region_galactic");
obsCore.s_xel1 = this.getLong(res,"s_xel1");
obsCore.s_xel2 = this.getLong(res,"s_xel2");
obsCore.s_resolution = this.getDouble(res,"s_resolution");
obsCore.t_min = this.getDouble(res,"t_min");
obsCore.t_max = this.getDouble(res,"t_max");
obsCore.t_exptime = this.getDouble(res,"t_exptime");
obsCore.t_resolution = this.getDouble(res,"t_resolution");
obsCore.t_xel = this.getLong(res,"t_xel");
obsCore.vel_min = this.getDouble(res,"vel_min"); //boolean em_min_valid = !res.wasNull();
obsCore.vel_max = this.getDouble(res,"vel_max"); //boolean em_max_valid = !res.wasNull();
obsCore.em_min = this.getDouble(res,"em_min"); boolean em_min_valid = !res.wasNull();
obsCore.em_max = this.getDouble(res,"em_max"); boolean em_max_valid = !res.wasNull();
obsCore.em_valid = em_min_valid && em_max_valid;;
obsCore.em_res_power = res.getDouble("em_res_power");
obsCore.em_xel = res.getLong("em_xel");
obsCore.em_res_power = this.getDouble(res,"em_res_power");
obsCore.em_xel = this.getLong(res,"em_xel");
obsCore.o_ucd = res.getString("o_ucd");
obsCore.o_ucd = this.getString(res,"o_ucd");
obsCore.pol_states = res.getString("pol_states");
obsCore.pol_xel = res.getLong("pol_xel");
obsCore.pol_states = this.getString(res,"pol_states");
obsCore.pol_xel = this.getLong(res ,"pol_xel");
obsCore.facility_name = res.getString("facility_name");
obsCore.instrument_name = res.getString("instrument_name");
obsCore.facility_name = this.getString(res,"facility_name");
obsCore.instrument_name = this.getString(res,"instrument_name");
obsCore.vertices_str = res.getString("polygon_region_galactic");
obsCore.vertices_str = this.getString(res,"polygon_region_galactic");
obsCore.inputInsideDb = res.getBoolean("inputInsideDb");
obsCore.dbInsideInput = res.getBoolean("dbInsideInput");
......@@ -250,6 +250,65 @@ public class DbPSearch
return cubes;
}
/* conversions tolerate missing columns */
private Integer getInt(ResultSet res, String colLabel)
{
try
{
Integer value = res.getInt(colLabel);
return (res.wasNull() ? null : value);
}
catch(SQLException se)
{
logSqlExInfo(se);
return null;
}
}
private Long getLong(ResultSet res, String colLabel)
{
try
{
Long value = res.getLong(colLabel);
return (res.wasNull() ? null : value);
}
catch(SQLException se)
{
logSqlExInfo(se);
return null;
}
}
private Double getDouble(ResultSet res, String colLabel)
{
try
{
Double value = res.getDouble(colLabel);
return (res.wasNull() ? null : value);
}
catch(SQLException se)
{
logSqlExInfo(se);
return null;
}
}
private String getString(ResultSet res, String colLabel)
{
try
{
String value = res.getString(colLabel);
return (res.wasNull() ? null : value);
}
catch(SQLException se)
{
logSqlExInfo(se);
return null;
}
}
private String toPgSphereSqlTypeString(Pos pos)
{
......@@ -338,7 +397,7 @@ public class DbPSearch
{
LOGGER.fine("SQLState : " + se.getSQLState());
LOGGER.fine("ErrorCode: " + se.getErrorCode());
LOGGER.fine("Message : " + se.getMessage());
LOGGER.warning("Message : " + se.getMessage());
Throwable t = se.getCause();
while(t != null) {
LOGGER.fine("Cause: " + t);
......
......@@ -63,8 +63,8 @@ class ObscoreExt
{
return new Object[]
{
dataset.obsCore.dataproduct_type,//dataset.dataType,
Integer.valueOf( dataset.obsCore.calib_level ),
dataset.obsCore.dataproduct_type,
dataset.obsCore.calib_level,
dataset.obsCore.obs_collection,
dataset.obsCore.obs_title,
dataset.obsCore.obs_id,
......@@ -72,31 +72,36 @@ class ObscoreExt
dataset.obsCore.bib_reference,
dataset.obsCore.data_rights,
dataset.obsCore.access_url,//dataset.access.accessCutoutUrl,
dataset.obsCore.access_url,
dataset.obsCore.access_format,
Long.valueOf( dataset.obsCore.access_estsize ),
dataset.obsCore.access_estsize,
dataset.obsCore.target_name,
Double.valueOf(dataset.obsCore.s_ra),Double.valueOf(dataset.obsCore.s_dec),
Double.valueOf(dataset.obsCore.s_fov),
dataset.obsCore.s_ra,
dataset.obsCore.s_dec,
dataset.obsCore.s_fov,
dataset.obsCore.s_region,
Long.valueOf( dataset.obsCore.s_xel1 ), Long.valueOf( dataset.obsCore.s_xel2 ),
Double.valueOf(dataset.obsCore.s_resolution),
dataset.obsCore.s_xel1,
dataset.obsCore.s_xel2,
dataset.obsCore.s_resolution,
Double.valueOf(dataset.obsCore.t_min), Double.valueOf(dataset.obsCore.t_max),
Double.valueOf(dataset.obsCore.t_exptime), Double.valueOf(dataset.obsCore.t_resolution),
Long.valueOf( dataset.obsCore.t_xel ),
dataset.obsCore.t_min,
dataset.obsCore.t_max,
dataset.obsCore.t_exptime,
dataset.obsCore.t_resolution,
dataset.obsCore.t_xel,
Double.valueOf(dataset.obsCore.em_min), Double.valueOf(dataset.obsCore.em_max),
Double.valueOf(dataset.obsCore.em_res_power),
Long.valueOf( dataset.obsCore.em_xel ),
dataset.obsCore.em_min,
dataset.obsCore.em_max,
dataset.obsCore.em_res_power,
dataset.obsCore.em_xel,
dataset.obsCore.o_ucd,
dataset.obsCore.pol_states,
Long.valueOf( dataset.obsCore.pol_xel ),
dataset.obsCore.pol_xel,
dataset.obsCore.facility_name,
dataset.obsCore.instrument_name,
......@@ -121,15 +126,14 @@ class ObscoreExt
{
return new Object[]
{
Integer.valueOf( dataset.overlapCode ),
Integer.valueOf( dataset.overlapCodeSky ),
Integer.valueOf( dataset.overlapCodeVel ),
dataset.overlapCode,
dataset.overlapCodeSky,
dataset.overlapCodeVel,
dataset.obsCore.s_region_galactic,
dataset.obsCore.vel_min == null ? null : Double.valueOf(dataset.obsCore.vel_min),
dataset.obsCore.vel_min == null ? null : Double.valueOf(dataset.obsCore.vel_max),
dataset.obsCore.vel_min,
dataset.obsCore.vel_max,
};
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment