package jalview.fts.service.pdb;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import javax.help.HelpSetException;
+
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.api.FTSRestClientI;
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
import jalview.fts.core.GFTSPanel;
+import jalview.gui.Help;
+import jalview.gui.Help.HelpId;
import jalview.gui.SequenceFetcher;
import jalview.util.MessageManager;
-import java.util.HashSet;
-
-import javax.swing.table.DefaultTableModel;
-
@SuppressWarnings("serial")
public class PDBFTSPanel extends GFTSPanel
{
+ private static String defaultFTSFrameTitle = MessageManager
+ .getString("label.pdb_sequence_fetcher");
+
+ private static Map<String, Integer> tempUserPrefs = new HashMap<>();
- public PDBFTSPanel(SequenceFetcher seqFetcher)
+ private static final String PDB_FTS_CACHE_KEY = "CACHE.PDB_FTS";
+
+ private static final String PDB_AUTOSEARCH = "FTS.PDB.AUTOSEARCH";
+
+ public PDBFTSPanel(SequenceFetcher fetcher)
{
- this.seqFetcher = seqFetcher;
- this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
- .getProgressIndicator();
+ super(fetcher);
+ pageLimit = PDBFTSRestClient.getInstance().getDefaultResponsePageSize();
+ this.seqFetcher = fetcher;
+ this.progressIndicator = (fetcher == null) ? null
+ : fetcher.getProgressIndicator();
}
-
- /**
- * Action performed when an input is detected on txt_search field.
- */
@Override
- public void txt_search_ActionPerformed()
+ public void searchAction(boolean isFreshSearch)
{
+ mainFrame.requestFocusInWindow();
+ if (isFreshSearch)
+ {
+ offSet = 0;
+ }
new Thread()
{
@Override
public void run()
{
- lbl_loading.setVisible(false);
- errorWarning.setLength(0);
- lbl_warning.setVisible(false);
- btn_ok.setEnabled(false);
+ reset();
boolean allowEmptySequence = false;
- mainFrame.setTitle(getFTSFrameTitle());
- tbl_summary.setModel(new DefaultTableModel());
- tbl_summary.setVisible(false);
- if (txt_search.getText().trim().length() > 0)
+ if (getTypedText().length() > 0)
{
- lbl_loading.setVisible(true);
+ setSearchInProgress(true);
long startTime = System.currentTimeMillis();
String searchTarget = ((FTSDataColumnI) cmb_searchTarget
.getSelectedItem()).getCode();
-
- // wantedFields = FTSDataColumnPreferences.getSearchSummaryFields();
wantedFields = PDBFTSRestClient.getInstance()
- .getAllDefaulDisplayedDataColumns();
- String searchTerm = decodeSearchTerm(txt_search.getText(),
+ .getAllDefaultDisplayedFTSDataColumns();
+ String searchTerm = decodeSearchTerm(getTypedText(),
searchTarget);
FTSRestRequest request = new FTSRestRequest();
request.setResponseSize(100);
request.setFieldToSearchBy("(" + searchTarget + ":");
request.setSearchTerm(searchTerm + ")");
+ request.setOffSet(offSet);
request.setWantedFields(wantedFields);
- // System.out.println(">>>>>>>>>>>>>> " + request.getQuery());
- FTSRestClientI pdbRestCleint = PDBFTSRestClient.getInstance();
+ FTSRestClientI pdbRestClient = PDBFTSRestClient.getInstance();
FTSRestResponse resultList;
try
{
- resultList = pdbRestCleint.executeRequest(request);
+ resultList = pdbRestClient.executeRequest(request);
} catch (Exception e)
{
- // e.printStackTrace();
- errorWarning.append(e.getMessage());
+ setErrorMessage(e.getMessage());
checkForErrors();
+ setSearchInProgress(false);
return;
}
- if (resultList.getSearchSummary() != null)
+ if (resultList.getSearchSummary() != null
+ && resultList.getSearchSummary().size() > 0)
{
- tbl_summary.setModel(FTSRestResponse.getTableModel(request,
+ getResultTable().setModel(FTSRestResponse.getTableModel(request,
resultList.getSearchSummary()));
- FTSRestResponse.configureTableColumn(tbl_summary, wantedFields);
- tbl_summary.setVisible(true);
+ FTSRestResponse.configureTableColumn(getResultTable(),
+ wantedFields, tempUserPrefs);
+ getResultTable().setVisible(true);
}
-
long endTime = System.currentTimeMillis();
- int resultSetCount = resultList.getNumberOfItemsFound();
- String result = (resultSetCount > 1) ? MessageManager
- .getString("label.results") : MessageManager
- .getString("label.result");
- mainFrame.setTitle(getFTSFrameTitle() + " - " + resultSetCount
- + " "
- + result + " (" + (endTime - startTime) + " milli secs)");
- lbl_loading.setVisible(false);
+ totalResultSetCount = resultList.getNumberOfItemsFound();
+ resultSetCount = resultList.getSearchSummary() == null ? 0
+ : resultList.getSearchSummary().size();
+ String result = (resultSetCount > 0)
+ ? MessageManager.getString("label.results")
+ : MessageManager.getString("label.result");
+
+ if (isPaginationEnabled() && resultSetCount > 0)
+ {
+ String f1 = totalNumberformatter
+ .format(Integer.valueOf(offSet + 1));
+ String f2 = totalNumberformatter
+ .format(Integer.valueOf(offSet + resultSetCount));
+ String f3 = totalNumberformatter
+ .format(Integer.valueOf(totalResultSetCount));
+ updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
+ + " " + f1 + " to " + f2 + " of " + f3 + " " + " ("
+ + (endTime - startTime) + " milli secs)");
+ }
+ else
+ {
+ updateSearchFrameTitle(defaultFTSFrameTitle + " - "
+ + resultSetCount + " " + result + " ("
+ + (endTime - startTime) + " milli secs)");
+ }
+
+ setSearchInProgress(false);
+ refreshPaginatorState();
+ updateSummaryTableSelections();
}
+ txt_search.updateCache();
}
}.start();
}
foundSearchTerms = foundSearchTermsBuilder.toString();
if (foundSearchTerms.contains(" OR "))
{
- foundSearchTerms = foundSearchTerms.substring(
- targetField.length() + 1, endIndex);
+ foundSearchTerms = foundSearchTerms
+ .substring(targetField.length() + 1, endIndex);
}
}
else if (enteredText.contains(":"))
}
@Override
- public void btn_ok_ActionPerformed()
+ public void okAction()
{
// mainFrame.dispose();
disableActionButtons();
StringBuilder selectedIds = new StringBuilder();
- HashSet<String> selectedIdsSet = new HashSet<String>();
- int pdbIdCol = 0;
+ HashSet<String> selectedIdsSet = new HashSet<>();
+ int primaryKeyColIndex = 0;
try
{
- pdbIdCol = getFTSRestClient().getPrimaryKeyColumIndex(wantedFields,
- false);
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
} catch (Exception e)
{
- // TODO Auto-generated catch block
e.printStackTrace();
}
- int[] selectedRows = tbl_summary.getSelectedRows();
+ int[] selectedRows = getResultTable().getSelectedRows();
+ String searchTerm = getTypedText();
for (int summaryRow : selectedRows)
{
- String idStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
- .toString();
- String searchTerm = txt_search.getText();
+ String idStr = getResultTable()
+ .getValueAt(summaryRow, primaryKeyColIndex).toString();
+ selectedIdsSet.add(getPDBIdwithSpecifiedChain(idStr, searchTerm));
+ }
+
+ for (String idStr : paginatorCart)
+ {
selectedIdsSet.add(getPDBIdwithSpecifiedChain(idStr, searchTerm));
}
}
String ids = selectedIds.toString();
- // System.out.println(">>>>>>>>>>>>>>>> selected Ids: " + ids);
- seqFetcher.getTextArea().setText(ids);
+ seqFetcher.setQuery(ids);
Thread worker = new Thread(seqFetcher);
worker.start();
delayAndEnableActionButtons();
}
-
public static String getPDBIdwithSpecifiedChain(String pdbId,
String searchTerm)
{
return pdbIdWithChainCode;
}
-
-
@Override
public FTSRestClientI getFTSRestClient()
{
@Override
public String getFTSFrameTitle()
{
- return MessageManager.getString("label.pdb_sequence_fetcher");
+ return defaultFTSFrameTitle;
}
-}
+ @Override
+ public boolean isPaginationEnabled()
+ {
+ return true;
+ }
+
+ @Override
+ public Map<String, Integer> getTempUserPrefs()
+ {
+ return tempUserPrefs;
+ }
+
+ @Override
+ public String getCacheKey()
+ {
+ return PDB_FTS_CACHE_KEY;
+ }
+
+ @Override
+ public String getAutosearchPreference()
+ {
+ return PDB_AUTOSEARCH;
+ }
+
+ @Override
+ protected void showHelp()
+ {
+ try
+ {
+ Help.showHelpWindow(HelpId.PdbFts);
+ } catch (HelpSetException e1)
+ {
+ e1.printStackTrace();
+ }
+ }
+
+ public String getDbName()
+ {
+ return "PDB";
+ }
+}
\ No newline at end of file