JAL-2071 further refactoring, optimisation, and house keeping for the generic Free...
[jalview.git] / src / jalview / fts / service / uniprot / UniProtFTSRestClient.java
diff --git a/src/jalview/fts/service/uniprot/UniProtFTSRestClient.java b/src/jalview/fts/service/uniprot/UniProtFTSRestClient.java
new file mode 100644 (file)
index 0000000..2930468
--- /dev/null
@@ -0,0 +1,91 @@
+package jalview.fts.service.uniprot;
+
+import jalview.fts.api.FTSRestClientI;
+import jalview.fts.core.FTSRestClient;
+import jalview.fts.core.FTSRestRequest;
+import jalview.fts.core.FTSRestResponse;
+
+import javax.ws.rs.core.MediaType;
+
+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;
+
+public class UniProtRestClient extends FTSRestClient
+{
+  private static FTSRestClientI instance = null;
+
+  public static final String UNIPROT_SEARCH_ENDPOINT = "http://www.uniprot.org/uniprot/?";
+
+  private static int DEFAULT_RESPONSE_SIZE = 200;
+
+  @Override
+  public FTSRestResponse executeRequest(FTSRestRequest uniportRestRequest)
+  {
+    ClientConfig clientConfig = new DefaultClientConfig();
+    Client client = Client.create(clientConfig);
+
+    @SuppressWarnings("unchecked")
+    // String wantedFields =
+    // getUniProtDocFieldsAsCommaDelimitedString((Collection<UniProtDocField>)
+    // uniportRestRequest
+    // .getWantedFields());
+    int responseSize = (uniportRestRequest.getResponseSize() == 0) ? DEFAULT_RESPONSE_SIZE
+            : uniportRestRequest.getResponseSize();
+
+    WebResource webResource = null;
+
+    webResource = client.resource(UNIPROT_SEARCH_ENDPOINT)
+            .queryParam("format", "tab")
+            // .queryParam("columns", wantedFields)
+            .queryParam("limit", String.valueOf(responseSize))
+            .queryParam("query", "name:filaggrin");
+    // Execute the REST request
+    ClientResponse clientResponse = webResource
+            .accept(MediaType.TEXT_PLAIN).get(ClientResponse.class);
+    String responseString = clientResponse.getEntity(String.class);
+    String[] results = responseString.split("\n");
+    for (String result : results)
+    {
+      String[] columns = result.split("\t");
+      System.out.println("Entry : " + columns[0]);
+      System.out.println("Entry name : " + columns[1]);
+      System.out.println("Status : " + columns[2]);
+      System.out.println("Protein names : " + columns[3]);
+      System.out.println("Gene name : " + columns[4]);
+      System.out.println("Organism : " + columns[5]);
+      System.out.println("Lenght : " + columns[6]);
+      System.out.println("");
+    }
+
+    // Make redundant objects eligible for garbage collection to conserve
+    // memory
+    clientResponse = null;
+    client = null;
+    return null;
+
+    // Process the response and return the result to the caller.
+    // return parsePDBJsonResponse(responseString, pdbRestRequest);
+    // System.out.println(">>>>> " + responseString);
+
+  }
+
+
+  public static FTSRestClientI getInstance()
+  {
+    if (instance == null)
+    {
+      instance = new UniProtRestClient();
+    }
+    return instance;
+  }
+
+  @Override
+  public String getColumnDataConfigFile()
+  {
+    return "fts/uniprot_data_columns.conf";
+  }
+
+}