import jalview.gui.SequenceFetcher;
import jalview.util.MessageManager;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
@SuppressWarnings("serial")
public class UniprotFTSPanel extends GFTSPanel
private static String defaultFTSFrameTitle = MessageManager
.getString("label.uniprot_sequence_fetcher");
- private String ftsFrameTitle = defaultFTSFrameTitle;
+ private static Map<String, Integer> tempUserPrefs = new HashMap<>();
- private int resultSetCount;
+ private static final String UNIPROT_FTS_CACHE_KEY = "CACHE.UNIPROT_FTS";
- private int offSet;
-
- private static int pageLimit = UniProtFTSRestClient.getInstance()
- .getDefaultResponsePageSize();
-
- public UniprotFTSPanel(SequenceFetcher seqFetcher)
+ public UniprotFTSPanel(SequenceFetcher fetcher)
{
- this.seqFetcher = seqFetcher;
- this.progressIdicator = (seqFetcher == null) ? null : seqFetcher
- .getProgressIndicator();
+ super(fetcher);
+ pageLimit = UniProtFTSRestClient.getInstance()
+ .getDefaultResponsePageSize();
+ this.seqFetcher = fetcher;
+ this.progressIndicator = (fetcher == null) ? null
+ : fetcher.getProgressIndicator();
}
@Override
- public void searchAction()
- {
- offSet = 0;
- executeSearch();
- }
-
- public void executeSearch()
+ public void searchAction(boolean isFreshSearch)
{
+ mainFrame.requestFocusInWindow();
+ if (isFreshSearch)
+ {
+ offSet = 0;
+ }
new Thread()
- {
+ {
@Override
public void run()
{
- ftsFrameTitle = defaultFTSFrameTitle;
reset();
- if (getTypedText().length() > 0)
+ String searchInput = getTypedText();
+ if (searchInput.length() > 0)
{
setSearchInProgress(true);
long startTime = System.currentTimeMillis();
-
+ searchInput = getTypedText();
String searchTarget = ((FTSDataColumnI) cmb_searchTarget
.getSelectedItem()).getAltCode();
-
wantedFields = UniProtFTSRestClient.getInstance()
- .getAllDefaulDisplayedDataColumns();
- String searchTerm = txt_search.getText();
+ .getAllDefaultDisplayedFTSDataColumns();
+ String searchTerm = decodeSearchTerm(searchInput, searchTarget);
FTSRestRequest request = new FTSRestRequest();
request.setFieldToSearchBy(searchTarget);
request.setSearchTerm(searchTerm);
request.setOffSet(offSet);
request.setWantedFields(wantedFields);
- FTSRestClientI uniProtRestCleint = UniProtFTSRestClient
+ FTSRestClientI uniProtRestClient = UniProtFTSRestClient
.getInstance();
FTSRestResponse resultList;
try
{
- resultList = uniProtRestCleint.executeRequest(request);
+ resultList = uniProtRestClient.executeRequest(request);
} catch (Exception e)
{
- e.printStackTrace();
setErrorMessage(e.getMessage());
checkForErrors();
+ setSearchInProgress(false);
return;
}
if (resultList.getSearchSummary() != null
&& resultList.getSearchSummary().size() > 0)
{
- getResultTable().setModel(
- FTSRestResponse.getTableModel(request,
- resultList.getSearchSummary()));
+ getResultTable().setModel(FTSRestResponse.getTableModel(request,
+ resultList.getSearchSummary()));
FTSRestResponse.configureTableColumn(getResultTable(),
- wantedFields);
+ wantedFields, tempUserPrefs);
getResultTable().setVisible(true);
}
long endTime = System.currentTimeMillis();
- resultSetCount = resultList.getNumberOfItemsFound();
- String result = (resultSetCount > 0) ? MessageManager
- .getString("label.results") : MessageManager
- .getString("label.result");
+ 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)
{
updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
- + " " + (offSet + 1) + " to "
- + (offSet + resultSetCount)
+ + " "
+ + totalNumberformatter.format((Number) (offSet + 1))
+ + " to "
+ + totalNumberformatter
+ .format((Number) (offSet + resultSetCount))
+ + " of "
+ + totalNumberformatter
+ .format((Number) totalResultSetCount)
+ " " + " (" + (endTime - startTime) + " milli secs)");
}
else
}
setSearchInProgress(false);
refreshPaginatorState();
+ updateSummaryTableSelections();
}
+ txt_search.updateCache();
}
}.start();
}
-
-
- public void refreshPaginatorState()
- {
- // System.out.println("resultSet count : " + resultSetCount);
- // System.out.println("offSet : " + offSet);
- // System.out.println("page limit : " + pageLimit);
- setPrevPageButtonEnabled(false);
- setNextPageButtonEnabled(false);
- if (resultSetCount >= pageLimit)
- {
- setNextPageButtonEnabled(true);
- }
- if (offSet >= pageLimit)
- {
- setPrevPageButtonEnabled(true);
- }
- }
-
- @Override
- public void prevPageAction()
+ public String decodeSearchTerm(String enteredText, String targetField)
{
- if (offSet >= pageLimit)
+ int searchTargetLength = targetField.equalsIgnoreCase("Search All") ? 0
+ : targetField.length() + 1;
+ String searchTarget = targetField.equalsIgnoreCase("Search All") ? ""
+ : targetField + ":";
+ String foundSearchTerms = enteredText;
+ StringBuilder foundSearchTermsBuilder = new StringBuilder();
+ if (enteredText.contains(";"))
{
- offSet = offSet - pageLimit;
- executeSearch();
- }else{
- refreshPaginatorState();
+ String[] searchTerms = enteredText.split(";");
+ for (String searchTerm : searchTerms)
+ {
+ foundSearchTermsBuilder.append(searchTarget).append(searchTerm)
+ .append(" OR ");
+ }
+ int endIndex = foundSearchTermsBuilder.lastIndexOf(" OR ");
+ foundSearchTerms = foundSearchTermsBuilder.toString();
+ if (foundSearchTerms.contains(" OR "))
+ {
+ foundSearchTerms = foundSearchTerms.substring(searchTargetLength,
+ endIndex);
+ }
}
- }
-
- @Override
- public void nextPageAction()
- {
- offSet = offSet + pageLimit;
- executeSearch();
-
+ return foundSearchTerms;
}
@Override
{
disableActionButtons();
StringBuilder selectedIds = new StringBuilder();
- HashSet<String> selectedIdsSet = new HashSet<String>();
+ HashSet<String> selectedIdsSet = new HashSet<>();
int primaryKeyColIndex = 0;
try
{
- primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex(
- wantedFields, false);
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
} catch (Exception e)
{
e.printStackTrace();
int[] selectedRows = getResultTable().getSelectedRows();
for (int summaryRow : selectedRows)
{
- String idStr = getResultTable().getValueAt(summaryRow,
- primaryKeyColIndex).toString();
+ String idStr = getResultTable()
+ .getValueAt(summaryRow, primaryKeyColIndex).toString();
selectedIdsSet.add(idStr);
}
-
+ selectedIdsSet.addAll(paginatorCart);
for (String selectedId : selectedIdsSet)
{
selectedIds.append(selectedId).append(";");
@Override
public String getFTSFrameTitle()
{
- return ftsFrameTitle;
+ return defaultFTSFrameTitle;
}
+ @Override
+ public Map<String, Integer> getTempUserPrefs()
+ {
+ return tempUserPrefs;
+ }
+
+ @Override
+ public String getCacheKey()
+ {
+ return UNIPROT_FTS_CACHE_KEY;
+ }
}