JAL-1720 JAL-2002 improvement for 'uniprot coverage' filter using facet pivot query
[jalview.git] / src / jalview / ws / dbsources / PDBRestClient.java
index c6251a6..2c05acd 100644 (file)
@@ -79,19 +79,39 @@ public class PDBRestClient
               .getFieldToSortBy().trim().isEmpty()) ? "" : (pdbRestRequest
               .getFieldToSortBy() + (pdbRestRequest.isAscending() ? " asc"
               : " desc"));
+      String facetPivot = (pdbRestRequest.getFacetPivot() == null || pdbRestRequest
+              .getFacetPivot().isEmpty()) ? "" : pdbRestRequest
+              .getFacetPivot();
+      String facetPivotMinCount = String.valueOf(pdbRestRequest
+              .getFacetPivotMinCount());
+      
       // Build request parameters for the REST Request
-      WebResource webResource = client.resource(PDB_SEARCH_ENDPOINT)
-              .queryParam("wt", "json").queryParam("fl", wantedFields)
-              .queryParam("rows", String.valueOf(responseSize))
-              .queryParam("q", pdbRestRequest.getQuery())
-              .queryParam("sort", sortParam);
-
+      WebResource webResource = null;
+      if (pdbRestRequest.isFacet())
+      {
+        webResource = client.resource(PDB_SEARCH_ENDPOINT)
+                .queryParam("wt", "json").queryParam("fl", wantedFields)
+                .queryParam("rows", String.valueOf(responseSize))
+                .queryParam("q", pdbRestRequest.getQuery())
+                .queryParam("sort", sortParam).queryParam("facet", "true")
+                .queryParam("facet.pivot", facetPivot)
+                .queryParam("facet.pivot.mincount", facetPivotMinCount);
+      }
+      else
+      {
+        webResource = client.resource(PDB_SEARCH_ENDPOINT)
+                .queryParam("wt", "json").queryParam("fl", wantedFields)
+                .queryParam("rows", String.valueOf(responseSize))
+                .queryParam("q", pdbRestRequest.getQuery())
+                .queryParam("sort", sortParam);
+      }
       // Execute the REST request
       ClientResponse clientResponse = webResource.accept(
               MediaType.APPLICATION_JSON).get(ClientResponse.class);
 
       // Get the JSON string from the response object
       String responseString = clientResponse.getEntity(String.class);
+      System.out.println("query >>>>>>> " + pdbRestRequest.toString());
 
       // Check the response status and report exception if one occurs
       if (clientResponse.getStatus() != 200)
@@ -414,6 +434,7 @@ public class PDBRestClient
       return code;
     }
 
+    @Override
     public String toString()
     {
       return name;