import com.sun.jersey.api.client.config.DefaultClientConfig;
/**
- * A rest client for querying the Search endpoint of the PDB REST API
+ * A rest client for querying the Search endpoint of the PDB API
*
* @author tcnofoegbu
*
public static final String PDB_SEARCH_ENDPOINT = "http://www.ebi.ac.uk/pdbe/search/pdb/select?";
- private static int DEFAULT_RESPONSE_SIZE = 200;
-
protected PDBFTSRestClient()
{
}
String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(pdbRestRequest
.getWantedFields());
- int responseSize = (pdbRestRequest.getResponseSize() == 0) ? DEFAULT_RESPONSE_SIZE
+ int responseSize = (pdbRestRequest.getResponseSize() == 0) ? getDefaultResponsePageSize()
: pdbRestRequest.getResponseSize();
+ int offSet = pdbRestRequest.getOffSet();
String sortParam = null;
if (pdbRestRequest.getFieldToSortBy() == null
|| pdbRestRequest.getFieldToSortBy().trim().isEmpty())
.queryParam("wt", "json").queryParam("fl", wantedFields)
.queryParam("rows", String.valueOf(responseSize))
.queryParam("q", query)
+ .queryParam("start", String.valueOf(offSet))
.queryParam("sort", sortParam).queryParam("facet", "true")
.queryParam("facet.pivot", facetPivot)
.queryParam("facet.pivot.mincount", facetPivotMinCount);
webResource = client.resource(PDB_SEARCH_ENDPOINT)
.queryParam("wt", "json").queryParam("fl", wantedFields)
.queryParam("rows", String.valueOf(responseSize))
+ .queryParam("start", String.valueOf(offSet))
.queryParam("q", query)
.queryParam("sort", sortParam);
}
else
{
errorMessage = getMessageByHTTPStatusCode(clientResponse
- .getStatus());
+.getStatus(), "PDB");
throw new Exception(errorMessage);
}
}
else if (exceptionMsg.contains("UnknownHostException"))
{
// The server 'www.ebi.ac.uk' is unreachable
- throw new Exception(
- MessageManager
- .getString("exception.pdb_server_unreachable"));
+ throw new Exception(MessageManager.formatMessage(
+ "exception.fts_server_unreachable", "PDB Solr"));
}
else
{
}
}
- public String getMessageByHTTPStatusCode(int code)
- {
- String message = "";
- switch (code)
- {
- case 410:
- message = MessageManager
- .getString("exception.pdb_rest_service_no_longer_available");
- break;
- case 403:
- case 404:
- message = MessageManager.getString("exception.resource_not_be_found");
- break;
- case 408:
- case 409:
- case 500:
- case 501:
- case 502:
- case 503:
- case 504:
- case 505:
- message = MessageManager.getString("exception.pdb_server_error");
- break;
-
- default:
- break;
- }
- return message;
- }
/**
* Process error response from PDB server if/when one occurs.
primaryKey = fieldData;
summaryRowData[colCounter++] = primaryKey;
}
+ else if (fieldData == null || fieldData.isEmpty())
+ {
+ summaryRowData[colCounter++] = null;
+ }
else
{
- if (field.getGroup().getName().equals("Quality Measures"))
+ try
{
- try
- {
- if (fieldData == null || fieldData.isEmpty())
- {
- summaryRowData[colCounter++] = null;
- }
- else
- {
- Double value = Double.valueOf(fieldData);
- summaryRowData[colCounter++] = value;
- }
- } catch (Exception e)
- {
- e.printStackTrace();
- System.out.println("offending value:" + fieldData);
- summaryRowData[colCounter++] = 0.0;
- }
- }
- else
+ summaryRowData[colCounter++] = (field.getDataType()
+ .getDataTypeClass() == Integer.class) ? Integer
+ .valueOf(fieldData)
+ : (field.getDataType()
+ .getDataTypeClass() == Double.class) ? Double
+ .valueOf(fieldData)
+ : sanitiseData(fieldData);
+ } catch (Exception e)
{
- summaryRowData[colCounter++] = (fieldData == null || fieldData
- .isEmpty()) ? null : fieldData;
+ e.printStackTrace();
+ System.out.println("offending value:" + fieldData);
}
}
}
{
return Objects.hash(primaryKey1, this.toString());
}
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this.toString().equals(that.toString());
+ }
};
}
+ private static String sanitiseData(String data)
+ {
+ String cleanData = data.replaceAll("\\[\"", "").replaceAll("\\]\"", "")
+ .replaceAll("\\[", "").replaceAll("\\]", "")
+ .replaceAll("\",\"", ", ").replaceAll("\"", "");
+ return cleanData;
+ }
+
@Override
- public String getColumnDataConfigFile()
+ public String getColumnDataConfigFileName()
{
- return getFile("fts/pdb_data_columns.conf");
+ return "/fts/pdb_data_columns.txt";
}