X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fservice%2Funiprot%2FUniprotFTSPanel.java;h=f04e4fa91ddaf52e7644c385d15fa1b0e4c6412f;hb=2a1dbdc270539ca23fb27f6998f48d9ecc84a144;hp=c40e1e8291d6cf653de3c23e023698cc04f6d586;hpb=e1976b4025f648431974e7ddcb2be93115688abd;p=jalview.git diff --git a/src/jalview/fts/service/uniprot/UniprotFTSPanel.java b/src/jalview/fts/service/uniprot/UniprotFTSPanel.java index c40e1e8..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,31 +42,27 @@ public class UniprotFTSPanel extends GFTSPanel private String ftsFrameTitle = defaultFTSFrameTitle; - private int resultSetCount; - - private int offSet; - - private static int pageLimit = UniProtFTSRestClient.getInstance() - .getDefaultResponsePageSize(); + 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() - { - offSet = 0; - executeSearch(); - } - - public void executeSearch() + public void searchAction(boolean isFreshSearch) { + if (isFreshSearch) + { + offSet = 0; + } new Thread() - { + { @Override public void run() { @@ -79,8 +77,9 @@ public class UniprotFTSPanel extends GFTSPanel .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); @@ -108,20 +107,31 @@ public class UniprotFTSPanel extends GFTSPanel FTSRestResponse.getTableModel(request, resultList.getSearchSummary())); FTSRestResponse.configureTableColumn(getResultTable(), - wantedFields); + wantedFields, tempUserPrefs); getResultTable().setVisible(true); } long endTime = System.currentTimeMillis(); - 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"); - if (isPaginationEnabled() && resultSetCount > 1) + if (isPaginationEnabled() && resultSetCount > 0) { - updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result - + " " + offSet + " to " + (offSet + resultSetCount) - + " " + " (" + (endTime - startTime) + " milli secs)"); + updateSearchFrameTitle(defaultFTSFrameTitle + + " - " + + result + + " " + + totalNumberformatter.format((Number) (offSet + 1)) + + " to " + + totalNumberformatter + .format((Number) (offSet + resultSetCount)) + + " of " + + totalNumberformatter + .format((Number) totalResultSetCount) + " " + + " (" + (endTime - startTime) + " milli secs)"); } else { @@ -131,49 +141,38 @@ public class UniprotFTSPanel extends GFTSPanel } setSearchInProgress(false); refreshPaginatorState(); + updateSummaryTableSelections(); } } }.start(); } - - - public void refreshPaginatorState() + public String decodeSearchTerm(String enteredText, String targetField) { - // System.out.println("resultSet count : " + resultSetCount); - // System.out.println("offSet : " + offSet); - // System.out.println("page limit : " + pageLimit); - btn_prev_page.setEnabled(false); - btn_next_page.setEnabled(false); - if (resultSetCount >= pageLimit) - { - btn_next_page.setEnabled(true); - } - 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(";")) { - btn_prev_page.setEnabled(true); - } - } - - @Override - public void prevPageAction() - { - if (offSet >= pageLimit) - { - 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 @@ -204,7 +203,7 @@ public class UniprotFTSPanel extends GFTSPanel primaryKeyColIndex).toString(); selectedIdsSet.add(idStr); } - + selectedIdsSet.addAll(paginatorCart); for (String selectedId : selectedIdsSet) { selectedIds.append(selectedId).append(";"); @@ -230,4 +229,10 @@ public class UniprotFTSPanel extends GFTSPanel return ftsFrameTitle; } + @Override + public Map getTempUserPrefs() + { + return tempUserPrefs; + } + }