JAL-2099 belated unit test
[jalview.git] / src / jalview / fts / service / pdb / PDBFTSRestClient.java
index 8e63463..06bf55b 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,8 +139,8 @@ public class PDBFTSRestClient extends FTSRestClient
         webResource = client.resource(PDB_SEARCH_ENDPOINT)
                 .queryParam("wt", "json").queryParam("fl", wantedFields)
                 .queryParam("rows", String.valueOf(responseSize))
-                .queryParam("q", query)
-                .queryParam("sort", sortParam);
+                .queryParam("start", String.valueOf(offSet))
+                .queryParam("q", query).queryParam("sort", sortParam);
       }
       // Execute the REST request
       ClientResponse clientResponse = webResource.accept(
@@ -159,8 +161,8 @@ public class PDBFTSRestClient extends FTSRestClient
         }
         else
         {
-          errorMessage = getMessageByHTTPStatusCode(clientResponse
-                  .getStatus());
+          errorMessage = getMessageByHTTPStatusCode(
+                  clientResponse.getStatus(), "PDB");
           throw new Exception(errorMessage);
         }
       }
@@ -185,9 +187,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,36 +197,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,15 +324,15 @@ public class PDBFTSRestClient extends FTSRestClient
       {
         try
         {
-          summaryRowData[colCounter++] = (field.getDataColumnClass() == Integer.class) ? Integer
-                  .valueOf(fieldData)
-                  : (field.getDataColumnClass() == Double.class) ? Double
-                          .valueOf(fieldData)
-                          : fieldData;
+          summaryRowData[colCounter++] = (field.getDataType()
+                  .getDataTypeClass() == Integer.class) ? Integer
+                  .valueOf(fieldData) : (field.getDataType()
+                  .getDataTypeClass() == Double.class) ? Double
+                  .valueOf(fieldData) : sanitiseData(fieldData);
         } catch (Exception e)
         {
           e.printStackTrace();
-            System.out.println("offending value:" + fieldData);
+          System.out.println("offending value:" + fieldData);
         }
       }
     }
@@ -407,16 +378,29 @@ 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()
   {
-    return getResourceFile("/fts/pdb_data_columns.conf");
+    return "/fts/pdb_data_columns.txt";
   }
 
-
   public static FTSRestClientI getInstance()
   {
     if (instance == null)
@@ -425,4 +409,18 @@ public class PDBFTSRestClient extends FTSRestClient
     }
     return instance;
   }
+
+  private Collection<FTSDataColumnI> allDefaultDisplayedStructureDataColumns;
+
+  public Collection<FTSDataColumnI> getAllDefaultDisplayedStructureDataColumns()
+  {
+    if (allDefaultDisplayedStructureDataColumns == null
+            || allDefaultDisplayedStructureDataColumns.isEmpty())
+    {
+      allDefaultDisplayedStructureDataColumns = new ArrayList<FTSDataColumnI>();
+      allDefaultDisplayedStructureDataColumns.addAll(super
+              .getAllDefaultDisplayedFTSDataColumns());
+    }
+    return allDefaultDisplayedStructureDataColumns;
+  }
 }