import jalview.fts.core.FTSRestResponse;
import jalview.util.MessageManager;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+//import jalview.javascript.web.Client;
+//import jalview.javascript.web.ClientResponse;
+//import jalview.javascript.web.WebResource;
+
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
+
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
/**
* A rest client for querying the Search endpoint of the PDB API
*
+ * BH 2018: just a tiny tweak here - for SwingJS, we coerce the classes to be
+ * from jalview.javascript.web instead of com.sun.jersey.api.client
+ *
+ *
* @author tcnofoegbu
*
*/
private static FTSRestClientI instance = null;
- public static final String PDB_SEARCH_ENDPOINT = "http://www.ebi.ac.uk/pdbe/search/pdb/select?";
+ public static final String PDB_SEARCH_ENDPOINT = "https://www.ebi.ac.uk/pdbe/search/pdb/select?";
protected PDBFTSRestClient()
{
* @return the pdbResponse object for the given request
* @throws Exception
*/
+ @SuppressWarnings({ "unused", "unchecked" })
@Override
public FTSRestResponse executeRequest(FTSRestRequest pdbRestRequest)
throws Exception
{
try
{
- ClientConfig clientConfig = new DefaultClientConfig();
- Client client = Client.create(clientConfig);
+ Client client;
+ WebResource webResource;
- String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(pdbRestRequest
- .getWantedFields());
- int responseSize = (pdbRestRequest.getResponseSize() == 0) ? getDefaultResponsePageSize()
+ String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
+ pdbRestRequest.getWantedFields());
+ int responseSize = (pdbRestRequest.getResponseSize() == 0)
+ ? getDefaultResponsePageSize()
: pdbRestRequest.getResponseSize();
int offSet = pdbRestRequest.getOffSet();
String sortParam = null;
}
}
- String facetPivot = (pdbRestRequest.getFacetPivot() == null || pdbRestRequest
- .getFacetPivot().isEmpty()) ? "" : pdbRestRequest
- .getFacetPivot();
- String facetPivotMinCount = String.valueOf(pdbRestRequest
- .getFacetPivotMinCount());
+ String facetPivot = (pdbRestRequest.getFacetPivot() == null
+ || pdbRestRequest.getFacetPivot().isEmpty()) ? ""
+ : pdbRestRequest.getFacetPivot();
+ String facetPivotMinCount = String
+ .valueOf(pdbRestRequest.getFacetPivotMinCount());
String query = pdbRestRequest.getFieldToSearchBy()
+ pdbRestRequest.getSearchTerm()
: " AND status:REL");
// Build request parameters for the REST Request
- WebResource webResource = null;
+
+ // BH 2018 the trick here is to coerce the classes in Javascript to be
+ // different from the ones in Java yet still allow this to be correct for Java
+ Class<ClientResponse> clientResponseClass;
+ if (/** @j2sNative true || */
+ false)
+ {
+ // JavaScript only -- coerce types to Java types for Java
+ client = (Client) (Object) new jalview.javascript.web.Client();
+ clientResponseClass = (Class<ClientResponse>) (Object) jalview.javascript.web.ClientResponse.class;
+ }
+ else
+ {
+ // Java only
+ client = Client.create(new DefaultClientConfig());
+ clientResponseClass = ClientResponse.class;
+ }
+
if (pdbRestRequest.isFacet())
{
webResource = client.resource(PDB_SEARCH_ENDPOINT)
.queryParam("start", String.valueOf(offSet))
.queryParam("q", query).queryParam("sort", sortParam);
}
+
+ URI uri = webResource.getURI();
+
// Execute the REST request
- ClientResponse clientResponse = webResource.accept(
- MediaType.APPLICATION_JSON).get(ClientResponse.class);
+ ClientResponse clientResponse = webResource
+ .accept(MediaType.APPLICATION_JSON).get(clientResponseClass );
// Get the JSON string from the response object
String responseString = clientResponse.getEntity(String.class);
if (exceptionMsg.contains("SocketException"))
{
// No internet connection
- throw new Exception(
- MessageManager
- .getString("exception.unable_to_detect_internet_connection"));
+ throw new Exception(MessageManager.getString(
+ "exception.unable_to_detect_internet_connection"));
}
else if (exceptionMsg.contains("UnknownHostException"))
{
StringBuilder errorMessage = new StringBuilder(
"\n============= PDB Rest Client RunTime error =============\n");
+
+// {
+// "responseHeader":{
+// "status":0,
+// "QTime":0,
+// "params":{
+// "q":"(text:q93xj9_soltu) AND molecule_sequence:['' TO *] AND status:REL",
+// "fl":"pdb_id,title,experimental_method,resolution",
+// "start":"0",
+// "sort":"overall_quality desc",
+// "rows":"500",
+// "wt":"json"}},
+// "response":{"numFound":1,"start":0,"docs":[
+// {
+// "experimental_method":["X-ray diffraction"],
+// "pdb_id":"4zhp",
+// "resolution":2.46,
+// "title":"The crystal structure of Potato ferredoxin I with 2Fe-2S cluster"}]
+// }}
+//
try
{
JSONParser jsonParser = new JSONParser();
.parse(pdbJsonResponseString);
JSONObject pdbResponse = (JSONObject) jsonObj.get("response");
- String queryTime = ((JSONObject) jsonObj.get("responseHeader")).get(
- "QTime").toString();
+ String queryTime = ((JSONObject) jsonObj.get("responseHeader"))
+ .get("QTime").toString();
int numFound = Integer
.valueOf(pdbResponse.get("numFound").toString());
if (numFound > 0)
Collection<FTSDataColumnI> diplayFields = request.getWantedFields();
SequenceI associatedSeq = request.getAssociatedSequence();
int colCounter = 0;
- summaryRowData = new Object[(associatedSeq != null) ? diplayFields
- .size() + 1 : diplayFields.size()];
+ summaryRowData = new Object[(associatedSeq != null)
+ ? diplayFields.size() + 1
+ : diplayFields.size()];
if (associatedSeq != null)
{
associatedSequence = associatedSeq;
try
{
summaryRowData[colCounter++] = (field.getDataType()
- .getDataTypeClass() == Integer.class) ? Integer
- .valueOf(fieldData) : (field.getDataType()
- .getDataTypeClass() == Double.class) ? Double
- .valueOf(fieldData) : sanitiseData(fieldData);
+ .getDataTypeClass() == Integer.class)
+ ? Integer.valueOf(fieldData)
+ : (field.getDataType()
+ .getDataTypeClass() == Double.class)
+ ? Double.valueOf(fieldData)
+ : sanitiseData(fieldData);
} catch (Exception e)
{
e.printStackTrace();
|| allDefaultDisplayedStructureDataColumns.isEmpty())
{
allDefaultDisplayedStructureDataColumns = new ArrayList<FTSDataColumnI>();
- allDefaultDisplayedStructureDataColumns.addAll(super
- .getAllDefaultDisplayedFTSDataColumns());
+ allDefaultDisplayedStructureDataColumns
+ .addAll(super.getAllDefaultDisplayedFTSDataColumns());
}
return allDefaultDisplayedStructureDataColumns;
}
+
+ public static void main(String[] args) {
+
+
+ // check for transpiler fix associated with JSONParser yylex.java use of charAt()
+ // instead of codePointAt()
+
+ String s = "e";
+ char c = 'c';
+ char f = 'f';
+ s += c | f;
+ int x = c&f;
+ int y = 2 & c;
+ int z = c ^ 5;
+ String result = s +x + y + z;
+ assert (result == "e103982102");
+ JSONParser jsonParser = new JSONParser();
+ try
+ {
+ JSONObject jsonObj = (JSONObject) jsonParser.parse("{\"a\":3}");
+ System.out.println(jsonObj);
+ } catch (ParseException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+
+
}