X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Ffts%2Fservice%2Funiprot%2FUniprotFTSPanel.java;h=f04e4fa91ddaf52e7644c385d15fa1b0e4c6412f;hb=2a1dbdc270539ca23fb27f6998f48d9ecc84a144;hp=dcef358906bc90251d7d323cce31bb5046104139;hpb=ce26ffcae5e876cf4127173c92f0eddffc9830da;p=jalview.git diff --git a/src/jalview/fts/service/uniprot/UniprotFTSPanel.java b/src/jalview/fts/service/uniprot/UniprotFTSPanel.java index dcef358..f04e4fa 100644 --- a/src/jalview/fts/service/uniprot/UniprotFTSPanel.java +++ b/src/jalview/fts/service/uniprot/UniprotFTSPanel.java @@ -29,7 +29,9 @@ import jalview.fts.core.GFTSPanel; 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 @@ -40,18 +42,27 @@ public class UniprotFTSPanel extends GFTSPanel private String ftsFrameTitle = defaultFTSFrameTitle; + private static Map tempUserPrefs = new HashMap(); + public UniprotFTSPanel(SequenceFetcher seqFetcher) { + super(); + pageLimit = UniProtFTSRestClient.getInstance() + .getDefaultResponsePageSize(); this.seqFetcher = seqFetcher; - this.progressIdicator = (seqFetcher == null) ? null : seqFetcher + this.progressIndicator = (seqFetcher == null) ? null : seqFetcher .getProgressIndicator(); } @Override - public void searchAction() + public void searchAction(boolean isFreshSearch) { + if (isFreshSearch) + { + offSet = 0; + } new Thread() - { + { @Override public void run() { @@ -63,15 +74,17 @@ public class UniprotFTSPanel extends GFTSPanel long startTime = System.currentTimeMillis(); String searchTarget = ((FTSDataColumnI) cmb_searchTarget - .getSelectedItem()).getCode(); + .getSelectedItem()).getAltCode(); wantedFields = UniProtFTSRestClient.getInstance() - .getAllDefaulDisplayedDataColumns(); - String searchTerm = txt_search.getText(); + .getAllDefaultDisplayedFTSDataColumns(); + String searchTerm = decodeSearchTerm(txt_search.getText(), + searchTarget); FTSRestRequest request = new FTSRestRequest(); request.setFieldToSearchBy(searchTarget); request.setSearchTerm(searchTerm); + request.setOffSet(offSet); request.setWantedFields(wantedFields); FTSRestClientI uniProtRestCleint = UniProtFTSRestClient .getInstance(); @@ -92,27 +105,82 @@ public class UniprotFTSPanel extends GFTSPanel { getResultTable().setModel( FTSRestResponse.getTableModel(request, - resultList.getSearchSummary())); + resultList.getSearchSummary())); FTSRestResponse.configureTableColumn(getResultTable(), - wantedFields); + wantedFields, tempUserPrefs); getResultTable().setVisible(true); } long endTime = System.currentTimeMillis(); - int resultSetCount = resultList.getNumberOfItemsFound(); - String result = (resultSetCount > 1) ? MessageManager + totalResultSetCount = resultList.getNumberOfItemsFound(); + resultSetCount = resultList.getSearchSummary() == null ? 0 + : resultList.getSearchSummary().size(); + String result = (resultSetCount > 0) ? MessageManager .getString("label.results") : MessageManager .getString("label.result"); - updateSearchFrameTitle(defaultFTSFrameTitle + " - " - + resultSetCount + " " + result + " (" - + (endTime - startTime) + " milli secs)"); + if (isPaginationEnabled() && resultSetCount > 0) + { + updateSearchFrameTitle(defaultFTSFrameTitle + + " - " + + result + + " " + + totalNumberformatter.format((Number) (offSet + 1)) + + " to " + + totalNumberformatter + .format((Number) (offSet + resultSetCount)) + + " of " + + totalNumberformatter + .format((Number) totalResultSetCount) + " " + + " (" + (endTime - startTime) + " milli secs)"); + } + else + { + updateSearchFrameTitle(defaultFTSFrameTitle + " - " + + resultSetCount + " " + result + " (" + + (endTime - startTime) + " milli secs)"); + } setSearchInProgress(false); + refreshPaginatorState(); + updateSummaryTableSelections(); } } }.start(); } + public String decodeSearchTerm(String enteredText, String targetField) + { + 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(";")) + { + 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); + } + } + return foundSearchTerms; + } + + @Override + public boolean isPaginationEnabled() + { + return true; + } + @Override public void okAction() { @@ -135,7 +203,7 @@ public class UniprotFTSPanel extends GFTSPanel primaryKeyColIndex).toString(); selectedIdsSet.add(idStr); } - + selectedIdsSet.addAll(paginatorCart); for (String selectedId : selectedIdsSet) { selectedIds.append(selectedId).append(";"); @@ -161,4 +229,10 @@ public class UniprotFTSPanel extends GFTSPanel return ftsFrameTitle; } + @Override + public Map getTempUserPrefs() + { + return tempUserPrefs; + } + }