JAL-3829 abstract essential TDB metadata from the user configurable data array displa...
[jalview.git] / src / jalview / fts / service / threedbeacons / TDBeaconsFTSRestClient.java
index 9ca42e5..ccdc525 100644 (file)
@@ -34,28 +34,21 @@ import jalview.util.Platform;
 public class TDBeaconsFTSRestClient extends FTSRestClient
         implements StructureFTSRestClientI
 {
-  private static final String DEFAULT_THREEDBEACONS_DOMAIN = "https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/";
+  /**
+   * production server URI
+   */
+  private static String TDB_PROD_API="https://www.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/";
+  /**
+   * dev server URI
+   */
+  private static String TDB_DEV_API="https://wwwdev.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/";
+  private static String DEFAULT_THREEDBEACONS_DOMAIN = TDB_PROD_API; 
 
-  private static FTSRestClientI instance = null;
+  public static FTSRestClientI instance = null;
 
   protected TDBeaconsFTSRestClient()
   {
   }
-  public static void createMockTDBeaconsFSRestClient(String workingQuery, String jsonResponse) {
-    instance = new TDBeaconsFTSRestClient();
-    ((TDBeaconsFTSRestClient) instance).setMock(workingQuery,jsonResponse);
-  }
-  private String mockQuery = null;
-  
-  private String mockResponse = null;
-  protected void setMock(String workingQuery,String jsonResponse) {
-    mockQuery=workingQuery;
-    mockResponse = jsonResponse;
-  }
-  private boolean isMocked()
-  {
-    return mockQuery != null && mockResponse!=null;
-  }
   @SuppressWarnings("unchecked")
   @Override
   public FTSRestResponse executeRequest(FTSRestRequest tdbRestRequest)
@@ -82,9 +75,10 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
         client = Client.create(new DefaultClientConfig());
         clientResponseClass = ClientResponse.class;
       }
+
       WebResource webResource;
-      webResource = client.resource(DEFAULT_THREEDBEACONS_DOMAIN)
-              .path(query);
+      webResource = client.resource(DEFAULT_THREEDBEACONS_DOMAIN+query);
+
       URI uri = webResource.getURI();
       System.out.println(uri.toString());
 
@@ -105,7 +99,7 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
       String responseString = null;
 
       // Check the response status and report exception if one occurs
-      int responseStatus = isMocked() ? (mockQuery.equals(query) ? 200 : 404) : clientResponse.getStatus();
+      int responseStatus = isMocked() ? (mockQueries.containsKey(query) ? 200 : 404) : clientResponse.getStatus();
       switch (responseStatus)
       {
       // if success
@@ -116,7 +110,7 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
         }
         else
         {
-          responseString = isMocked() ? mockResponse: clientResponse.getEntity(String.class);
+          responseString = isMocked() ? mockQueries.get(query): clientResponse.getEntity(String.class);
         }
         break;
       case 400:
@@ -133,22 +127,23 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
     } catch (Exception e)
     {
       String exceptionMsg = e.getMessage();
-      if (exceptionMsg.contains("SocketException"))
+      if (exceptionMsg != null)
       {
-        // No internet connection
-        throw new Exception(MessageManager.getString(
-                "exception.unable_to_detect_internet_connection"));
-      }
-      else if (exceptionMsg.contains("UnknownHostException"))
-      {
-        // The server is unreachable
-        throw new Exception(MessageManager.formatMessage(
-                "exception.fts_server_unreachable", "3DB Hub"));
-      }
-      else
-      {
-        throw e;
+        if (exceptionMsg.contains("SocketException"))
+        {
+          // No internet connection
+          throw new Exception(MessageManager.getString(
+                  "exception.unable_to_detect_internet_connection"));
+        }
+        else if (exceptionMsg.contains("UnknownHostException"))
+        {
+          // The server is unreachable
+          throw new Exception(MessageManager.formatMessage(
+                  "exception.fts_server_unreachable", "3DB Hub"));
+        }
       }
+      throw e;
+      
     }
 
   }
@@ -224,8 +219,6 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
   private static FTSData getFTSData(Map<String, Object> tdbJsonStructure,
           FTSRestRequest tdbRequest)
   {
-    // TODO: consider reusing PDBFTSRestClient.getFTSData ?
-
     String primaryKey = null;
     Object[] summaryRowData;
 
@@ -280,52 +273,7 @@ public class TDBeaconsFTSRestClient extends FTSRestClient
     final String primaryKey1 = primaryKey;
     final Object[] summaryRowData1 = summaryRowData;
 
-    return new FTSData()
-    {
-
-      @Override
-      public Object[] getSummaryData()
-      {
-        return summaryRowData1;
-      }
-
-      @Override
-      public Object getPrimaryKey()
-      {
-        return primaryKey1;
-      }
-
-      /**
-       * Returns a string representation of this object;
-       */
-      @Override
-      public String toString()
-      {
-        StringBuilder summaryFieldValues = new StringBuilder();
-        for (Object summaryField : summaryRowData1)
-        {
-          summaryFieldValues.append(
-                  summaryField == null ? " " : summaryField.toString())
-                  .append("\t");
-        }
-        return summaryFieldValues.toString();
-      }
-
-      /**
-       * Returns hash code value for this object
-       */
-      @Override
-      public int hashCode()
-      {
-        return Objects.hash(primaryKey1, this.toString());
-      }
-
-      @Override
-      public boolean equals(Object that)
-      {
-        return this.toString().equals(that.toString());
-      }
-    };
+    return new TDB_FTSData(primaryKey, tdbJsonStructure, summaryRowData1);
   }
 
   // private static FTSData getFTSData(Map<String, Object> doc,