extends StructureChooserQuerySource
{
+ private static final String FILTER_TDBEACONS_COVERAGE = "3d_beacons_coverage";
+
private static int MAX_QLENGTH = 7820;
protected FTSRestRequest lastTdbRequest;
PreferenceSource.STRUCTURE_CHOOSER,
TDBeaconsFTSRestClient.getInstance());
- }
+ }
/**
* Builds a query string for a given sequences using its DBRef entries 3d
FilterOption selectedFilterOpt, boolean b) throws Exception
{
FTSRestResponse resultList;
+ if (tdBeaconsFilter(selectedFilterOpt.getValue())) {
FTSRestRequest tdbRequest = getTDBeaconsRequest(seq, wantedFields);
resultList = tdbRestClient.executeRequest(tdbRequest);
FTSRestResponse joinedResp = joinResponses(resultList,
pdbResponse);
return resultList;
+ }
+ // use the PDBFTS directly
+ resultList = getPDBQuerySource().fetchStructuresMetaData(seq, wantedFields, selectedFilterOpt, b);
+ lastTdbRequest = getPDBQuerySource().lastPdbRequest;
+ lastPdbRequest = lastTdbRequest; // both queries the same - indicates we rank using PDBe
+ return resultList;
+
}
PDBStructureChooserQuerySource pdbQuerySource=null;
@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));
-
+ List<FilterOption> filters = getPDBQuerySource().getAvailableFilterOptions(VIEWS_FILTER);
+
+ filters.add(0,
+ new FilterOption("3D-Beacons Coverage",
+ FILTER_TDBEACONS_COVERAGE, VIEWS_FILTER, true, this));
return filters;
}
+ private boolean tdBeaconsFilter(String fieldToFilterBy)
+ {
+ return FILTER_TDBEACONS_COVERAGE.equals(fieldToFilterBy);
+ }
+ @Override
+ public boolean needsRefetch(FilterOption selectedFilterOpt)
+ {
+ return tdBeaconsFilter(selectedFilterOpt.getValue()) && lastPdbRequest!=lastTdbRequest;
+ }
/**
* FTSRestClient specific query builder to pick top ranked entry from a
* fetchStructuresMetaData query
Collection<FTSDataColumnI> wantedFields, String fieldToFilterBy,
boolean b) throws Exception
{
+ if (tdBeaconsFilter(fieldToFilterBy))
+ {
+ TDBResultAnalyser analyser = new TDBResultAnalyser(seq,
+ collectedResults, lastTdbRequest);
- TDBResultAnalyser analyser= new TDBResultAnalyser(seq,collectedResults, lastTdbRequest);
-
-
- FTSRestResponse resultList = new FTSRestResponse();
+ FTSRestResponse resultList = new FTSRestResponse();
- List<FTSData> filteredResponse = analyser.getFilteredResponse();
-
- List<FTSData> selectedStructures = analyser.selectStructures(filteredResponse);
- resultList.setNumberOfItemsFound(selectedStructures.size());
- resultList.setSearchSummary(selectedStructures);
- return resultList;
+ List<FTSData> filteredResponse = analyser.getFilteredResponse();
+
+ List<FTSData> selectedStructures = analyser
+ .selectStructures(filteredResponse);
+ resultList.setNumberOfItemsFound(selectedStructures.size());
+ resultList.setSearchSummary(selectedStructures);
+ return resultList;
+ }
+ // Fall back to PDBe rankings
+ return getPDBQuerySource().selectFirstRankedQuery(seq, collectedResults, wantedFields, fieldToFilterBy, b);
}
+
@Override
public PDBEntry[] collectSelectedRows(JTable restable, int[] selectedRows,
List<SequenceI> selectedSeqsToView)