JAL-3829 proof in principle 3d-beacons sequence fetcher - still some TODOs !
[jalview.git] / src / jalview / fts / service / threedbeacons / TDBeaconsFTSRestClient.java
index b6be709..e956461 100644 (file)
@@ -32,7 +32,7 @@ import jalview.util.Platform;
 public class TDBeaconsFTSRestClient extends FTSRestClient
 {
   private static final String DEFAULT_THREEDBEACONS_DOMAIN = 
-          "https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons-hub-api/uniprot/";
+          "https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/";
   
   private static FTSRestClientI instance = null;
   
@@ -47,16 +47,7 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
   {
     try
     {
-      // Removed wantedFields, sortParam & facetPivot from PDBFTSRClient
-      String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
-              tdbRestRequest.getWantedFields());
-      int responseSize = (tdbRestRequest.getResponseSize() == 0)
-              ? getDefaultResponsePageSize()
-              : tdbRestRequest.getResponseSize();
-      //int offSet = pdbRestRequest.getOffSet();
-      
-      String query = tdbRestRequest.getFieldToSearchBy()
-              + tdbRestRequest.getSearchTerm();
+      String query = tdbRestRequest.getSearchTerm();
       Client client;
       Class<ClientResponse> clientResponseClass;
       if (Platform.isJS())
@@ -75,12 +66,9 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
         clientResponseClass = ClientResponse.class;
       }
       WebResource webResource;
-      webResource = client.resource(DEFAULT_THREEDBEACONS_DOMAIN).path(query);
+      webResource = client.resource(DEFAULT_THREEDBEACONS_DOMAIN)
+              .path(query);
       URI uri = webResource.getURI();
-//              .queryParam("P", query);
-//              .queryParam("rows", String.valueOf(responseSize))
-//              .queryParam("P",query);
-//      URI uri = webResource.getURI();
       System.out.println(uri.toString());
         
       // Execute the REST request
@@ -92,13 +80,11 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
       Map<String, Object> jsonObj = null;
       String responseString = null;
   
-      //System.out.println("query >>>>>>> " + tdbRestRequest.toString());
-        
       // Check the response status and report exception if one occurs
       int responseStatus = clientResponse.getStatus();
       switch (responseStatus)
       {
-      // if succesful
+      // if success
       case 200:
         if (Platform.isJS())
         {
@@ -156,7 +142,6 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
           Map<String, Object> jsonObj, FTSRestRequest tdbRestRequest)
   {
     FTSRestResponse searchResult = new FTSRestResponse();
-    //searchResult.setNumberOfItemsFound(1);
     List<FTSData> result = null;
     
     try
@@ -165,24 +150,24 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
       {
         jsonObj = (Map<String, Object>) JSONUtils.parse(tdbJsonResponseString);
       }
-      //Map<String, Object> tdbResponse = (Map<String, Object>) jsonObj.get("structures");
-      //String seqLength = tdbEntry.get("sequence_length").toString();
-      //int seqLength = Integer.valueOf(tdbEntry.get("sequence_length").toString());
       
-      Long seqLength = (Long) ((Map<String, Object>) jsonObj.get("uniprot_entry")).get("sequence_length");
-      result = new ArrayList<>();
+      Object uniprot_entry = jsonObj.get("uniprot_entry"); 
+      // TODO: decide if anything from uniprot_entry needs to be reported via the FTSRestResponse object
+      // Arnaud added seqLength = (Long) ((Map<String, Object>) jsonObj.get("uniprot_entry")).get("sequence_length");
+
       List<Object> structures = (List<Object>) jsonObj.get("structures");
+      result = new ArrayList<>();
+      
       int numFound = 0;
-      for (Iterator<Object> strucIter = structures.iterator(); strucIter
-              .hasNext();)
+      for (Iterator<Object> strucIter = structures.iterator(); strucIter.hasNext();)
       {
         Map<String, Object> structure = (Map<String, Object>) strucIter.next();
         result.add(getFTSData(structure, tdbRestRequest));
         numFound++;
       }
-        searchResult.setNumberOfItemsFound(numFound); 
-        searchResult.setSearchSummary(result);
-        searchResult.setSequenceLength(seqLength);
+      
+      searchResult.setNumberOfItemsFound(numFound); 
+      searchResult.setSearchSummary(result);
         
     } catch (ParseException e)
     {
@@ -200,15 +185,17 @@ private static FTSData getFTSData(Map<String, Object> tdbJsonStructure,
     Collection<FTSDataColumnI> displayFields = tdbRequest.getWantedFields();
     int colCounter = 0;
     summaryRowData = new Object[displayFields.size()];
+    
     for (FTSDataColumnI field : displayFields) {
       String fieldData = (tdbJsonStructure.get(field.getCode()) == null) ? " " 
               : tdbJsonStructure.get(field.getCode()).toString();
+      // System.out.println("Field : " + field + "  Data : " + fieldData);
       if (field.isPrimaryKeyColumn())
       {
         primaryKey = fieldData;
         summaryRowData[colCounter++] = primaryKey;
       }
-      else if (fieldData == null || fieldData.isEmpty())
+      else if (fieldData == null || fieldData.trim().isEmpty())
       {
         summaryRowData[colCounter++] = null;
       }
@@ -225,8 +212,8 @@ private static FTSData getFTSData(Map<String, Object> tdbJsonStructure,
                                           : fieldData;
         } catch (Exception e)
         {
-          e.printStackTrace();
-          System.out.println("offending value:" + fieldData);
+          //e.printStackTrace();
+          System.out.println("offending value:" + fieldData + fieldData);
         }
       }
     }