JAL-2101 JAL-2071 JAL-1563 Added fix to enable searching for old entry names in Unipr...
[jalview.git] / src / jalview / fts / service / pdb / PDBFTSRestClient.java
index 08803b0..93a7df3 100644 (file)
@@ -86,6 +86,7 @@ public class PDBFTSRestClient extends FTSRestClient
               .getWantedFields());
       int responseSize = (pdbRestRequest.getResponseSize() == 0) ? getDefaultResponsePageSize()
               : pdbRestRequest.getResponseSize();
+      int offSet = pdbRestRequest.getOffSet();
       String sortParam = null;
       if (pdbRestRequest.getFieldToSortBy() == null
               || pdbRestRequest.getFieldToSortBy().trim().isEmpty())
@@ -128,6 +129,7 @@ public class PDBFTSRestClient extends FTSRestClient
                 .queryParam("wt", "json").queryParam("fl", wantedFields)
                 .queryParam("rows", String.valueOf(responseSize))
                 .queryParam("q", query)
+                .queryParam("start", String.valueOf(offSet))
                 .queryParam("sort", sortParam).queryParam("facet", "true")
                 .queryParam("facet.pivot", facetPivot)
                 .queryParam("facet.pivot.mincount", facetPivotMinCount);
@@ -137,6 +139,7 @@ public class PDBFTSRestClient extends FTSRestClient
         webResource = client.resource(PDB_SEARCH_ENDPOINT)
                 .queryParam("wt", "json").queryParam("fl", wantedFields)
                 .queryParam("rows", String.valueOf(responseSize))
+                .queryParam("start", String.valueOf(offSet))
                 .queryParam("q", query)
                 .queryParam("sort", sortParam);
       }
@@ -160,7 +163,7 @@ public class PDBFTSRestClient extends FTSRestClient
         else
         {
           errorMessage = getMessageByHTTPStatusCode(clientResponse
-                  .getStatus());
+.getStatus(), "PDB");
           throw new Exception(errorMessage);
         }
       }
@@ -185,9 +188,8 @@ public class PDBFTSRestClient extends FTSRestClient
       else if (exceptionMsg.contains("UnknownHostException"))
       {
         // The server 'www.ebi.ac.uk' is unreachable
-        throw new Exception(
-                MessageManager
-                        .getString("exception.pdb_server_unreachable"));
+        throw new Exception(MessageManager.formatMessage(
+                "exception.fts_server_unreachable", "PDB Solr"));
       }
       else
       {
@@ -196,35 +198,6 @@ public class PDBFTSRestClient extends FTSRestClient
     }
   }
 
-  public String getMessageByHTTPStatusCode(int code)
-  {
-    String message = "";
-    switch (code)
-    {
-    case 410:
-      message = MessageManager
-              .getString("exception.pdb_rest_service_no_longer_available");
-      break;
-    case 403:
-    case 404:
-      message = MessageManager.getString("exception.resource_not_be_found");
-      break;
-    case 408:
-    case 409:
-    case 500:
-    case 501:
-    case 502:
-    case 503:
-    case 504:
-    case 505:
-      message = MessageManager.getString("exception.pdb_server_error");
-      break;
-
-    default:
-      break;
-    }
-    return message;
-  }
 
   /**
    * Process error response from PDB server if/when one occurs.
@@ -353,11 +326,13 @@ public class PDBFTSRestClient extends FTSRestClient
       {
         try
         {
-          summaryRowData[colCounter++] = (field.getDataColumnClass() == Integer.class) ? Integer
+          summaryRowData[colCounter++] = (field.getDataType()
+                  .getDataTypeClass() == Integer.class) ? Integer
                   .valueOf(fieldData)
-                  : (field.getDataColumnClass() == Double.class) ? Double
+ : (field.getDataType()
+                  .getDataTypeClass() == Double.class) ? Double
                           .valueOf(fieldData)
-                          : fieldData;
+ : sanitiseData(fieldData);
         } catch (Exception e)
         {
           e.printStackTrace();
@@ -407,9 +382,23 @@ public class PDBFTSRestClient extends FTSRestClient
       {
         return Objects.hash(primaryKey1, this.toString());
       }
+
+      @Override
+      public boolean equals(Object that)
+      {
+        return this.toString().equals(that.toString());
+      }
     };
   }
 
+  private static String sanitiseData(String data)
+  {
+    String cleanData = data.replaceAll("\\[\"", "").replaceAll("\\]\"", "")
+            .replaceAll("\\[", "").replaceAll("\\]", "")
+            .replaceAll("\",\"", ", ").replaceAll("\"", "");
+    return cleanData;
+  }
+
   @Override
   public String getColumnDataConfigFileName()
   {