JAL-3829 JAL-3865 test structure chooser queries to mocked 3D Beacons FTS
[jalview.git] / src / jalview / gui / structurechooser / ThreeDBStructureChooserQuerySource.java
index 6c2123b..0bf9fdb 100644 (file)
@@ -1,32 +1,30 @@
 package jalview.gui.structurechooser;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.Objects;
 import java.util.Set;
 
 import javax.swing.JTable;
-import javax.swing.table.TableModel;
 
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.DBRefSource;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
-import jalview.fts.api.FTSData;
 import jalview.fts.api.FTSDataColumnI;
 import jalview.fts.api.FTSRestClientI;
 import jalview.fts.core.FTSDataColumnPreferences;
 import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
 import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
-import jalview.fts.service.pdb.PDBFTSRestClient;
 import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
-import jalview.jbgui.GStructureChooser.FilterOption;
+import jalview.jbgui.FilterOption;
+import jalview.util.MessageManager;
 
 /**
- * logic for querying the PDBe API for structures of sequences
+ * logic for querying the 3DBeacons API for structures of sequences
  * 
  * @author jprocter
  */
@@ -36,9 +34,13 @@ public class ThreeDBStructureChooserQuerySource
 
   private static int MAX_QLENGTH = 7820;
 
+  protected FTSRestRequest lastTdbRequest;
+
+  protected FTSRestClientI tdbRestClient;
+
   public ThreeDBStructureChooserQuerySource()
   {
-    pdbRestClient = TDBeaconsFTSRestClient.getInstance();
+    tdbRestClient = TDBeaconsFTSRestClient.getInstance();
     docFieldPrefs = new FTSDataColumnPreferences(
             PreferenceSource.STRUCTURE_CHOOSER,
             TDBeaconsFTSRestClient.getInstance());
@@ -146,10 +148,10 @@ public class ThreeDBStructureChooserQuerySource
           FilterOption selectedFilterOpt, boolean b) throws Exception
   {
     FTSRestResponse resultList;
-    FTSRestRequest pdbRequest = getTDBeaconsRequest(seq, wantedFields);
-    resultList = pdbRestClient.executeRequest(pdbRequest);
+    FTSRestRequest tdbRequest = getTDBeaconsRequest(seq, wantedFields);
+    resultList = tdbRestClient.executeRequest(tdbRequest);
 
-    lastPdbRequest = pdbRequest;
+    lastTdbRequest = tdbRequest;
     return resultList;
   }
   
@@ -169,7 +171,28 @@ public class ThreeDBStructureChooserQuerySource
     return pdbRequest;
   }
 
-
+@Override
+  public List<FilterOption> getAvailableFilterOptions(String VIEWS_FILTER)
+  {
+    List<FilterOption> filters = new ArrayList<FilterOption>();
+    filters.add(new FilterOption(
+            MessageManager.getString("label.best_quality"),
+            "overall_quality", VIEWS_FILTER, false));
+    filters.add(new FilterOption(
+            MessageManager.getString("label.best_resolution"),
+            "resolution", VIEWS_FILTER, false));
+    filters.add(new FilterOption(
+            MessageManager.getString("label.most_protein_chain"),
+            "number_of_protein_chains", VIEWS_FILTER, false));
+    filters.add(new FilterOption(
+            MessageManager.getString("label.most_bound_molecules"),
+            "number_of_bound_molecules", VIEWS_FILTER, false));
+    filters.add(new FilterOption(
+            MessageManager.getString("label.most_polymer_residues"),
+            "number_of_polymer_residues", VIEWS_FILTER, true));
+  
+    return filters;
+  }
   /**
    * FTSRestClient specific query builder to pick top ranked entry from a
    * fetchStructuresMetaData query
@@ -196,11 +219,11 @@ public class ThreeDBStructureChooserQuerySource
       return null;
     }
     pdbRequest.setResponseSize(1);
-    resultList = pdbRestClient.executeRequest(pdbRequest);
+    resultList = tdbRestClient.executeRequest(pdbRequest);
     
     // TODO: client side filtering - sort results and pick top one (or N)
 
-    lastPdbRequest = pdbRequest;
+    lastTdbRequest = pdbRequest;
     return resultList;
   }
 
@@ -253,4 +276,11 @@ public class ThreeDBStructureChooserQuerySource
     }
     return pdbEntriesToView;
   }
+
+
+  @Override
+  protected FTSRestRequest getLastFTSRequest()
+  {
+    return lastTdbRequest;
+  }
 }
\ No newline at end of file