JAL-2071 further refactoring, optimisation, and house keeping for the generic Free...
[jalview.git] / src / jalview / fts / service / uniprot / UniProtFTSRestClient.java
1 package jalview.fts.service.uniprot;
2
3 import jalview.fts.api.FTSRestClientI;
4 import jalview.fts.core.FTSRestClient;
5 import jalview.fts.core.FTSRestRequest;
6 import jalview.fts.core.FTSRestResponse;
7
8 import javax.ws.rs.core.MediaType;
9
10 import com.sun.jersey.api.client.Client;
11 import com.sun.jersey.api.client.ClientResponse;
12 import com.sun.jersey.api.client.WebResource;
13 import com.sun.jersey.api.client.config.ClientConfig;
14 import com.sun.jersey.api.client.config.DefaultClientConfig;
15
16 public class UniProtRestClient extends FTSRestClient
17 {
18   private static FTSRestClientI instance = null;
19
20   public static final String UNIPROT_SEARCH_ENDPOINT = "http://www.uniprot.org/uniprot/?";
21
22   private static int DEFAULT_RESPONSE_SIZE = 200;
23
24   @Override
25   public FTSRestResponse executeRequest(FTSRestRequest uniportRestRequest)
26   {
27     ClientConfig clientConfig = new DefaultClientConfig();
28     Client client = Client.create(clientConfig);
29
30     @SuppressWarnings("unchecked")
31     // String wantedFields =
32     // getUniProtDocFieldsAsCommaDelimitedString((Collection<UniProtDocField>)
33     // uniportRestRequest
34     // .getWantedFields());
35     int responseSize = (uniportRestRequest.getResponseSize() == 0) ? DEFAULT_RESPONSE_SIZE
36             : uniportRestRequest.getResponseSize();
37
38     WebResource webResource = null;
39
40     webResource = client.resource(UNIPROT_SEARCH_ENDPOINT)
41             .queryParam("format", "tab")
42             // .queryParam("columns", wantedFields)
43             .queryParam("limit", String.valueOf(responseSize))
44             .queryParam("query", "name:filaggrin");
45     // Execute the REST request
46     ClientResponse clientResponse = webResource
47             .accept(MediaType.TEXT_PLAIN).get(ClientResponse.class);
48     String responseString = clientResponse.getEntity(String.class);
49     String[] results = responseString.split("\n");
50     for (String result : results)
51     {
52       String[] columns = result.split("\t");
53       System.out.println("Entry : " + columns[0]);
54       System.out.println("Entry name : " + columns[1]);
55       System.out.println("Status : " + columns[2]);
56       System.out.println("Protein names : " + columns[3]);
57       System.out.println("Gene name : " + columns[4]);
58       System.out.println("Organism : " + columns[5]);
59       System.out.println("Lenght : " + columns[6]);
60       System.out.println("");
61     }
62
63     // Make redundant objects eligible for garbage collection to conserve
64     // memory
65     clientResponse = null;
66     client = null;
67     return null;
68
69     // Process the response and return the result to the caller.
70     // return parsePDBJsonResponse(responseString, pdbRestRequest);
71     // System.out.println(">>>>> " + responseString);
72
73   }
74
75
76   public static FTSRestClientI getInstance()
77   {
78     if (instance == null)
79     {
80       instance = new UniProtRestClient();
81     }
82     return instance;
83   }
84
85   @Override
86   public String getColumnDataConfigFile()
87   {
88     return "fts/uniprot_data_columns.conf";
89   }
90
91 }