X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Ffts%2Fservice%2Funiprot%2FUniprotFTSPanel.java;h=9c2c5cec85fa74dcd9a95b081d44b73ea68e41ed;hb=ebca5f7880f838a5564dd419274ad6025b456dab;hp=3681a234b82391548c4f9bf6d22370a39929d598;hpb=a3499f1eaaef8cc03aac19a28f960acd0fd70a04;p=jalview.git diff --git a/src/jalview/fts/service/uniprot/UniprotFTSPanel.java b/src/jalview/fts/service/uniprot/UniprotFTSPanel.java index 3681a23..9c2c5ce 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,29 +42,24 @@ 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) { + pageLimit = UniProtFTSRestClient.getInstance() + .getDefaultResponsePageSize(); this.seqFetcher = seqFetcher; this.progressIdicator = (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 @@ -79,8 +76,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,19 +106,28 @@ 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) + + " " + + totalNumberformatter.format((Number) (offSet + 1)) + + " to " + + totalNumberformatter + .format((Number) (offSet + resultSetCount)) + + " of " + + totalNumberformatter + .format((Number) totalResultSetCount) + " " + " (" + (endTime - startTime) + " milli secs)"); } else @@ -131,50 +138,40 @@ public class UniprotFTSPanel extends GFTSPanel } setSearchInProgress(false); refreshPaginatorState(); + updateSummaryTableSelections(); } } }.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); + } } + return foundSearchTerms; } - @Override - public void nextPageAction() - { - offSet = offSet + pageLimit; - executeSearch(); - - } @Override public boolean isPaginationEnabled() @@ -204,7 +201,7 @@ public class UniprotFTSPanel extends GFTSPanel primaryKeyColIndex).toString(); selectedIdsSet.add(idStr); } - + selectedIdsSet.addAll(paginatorCart); for (String selectedId : selectedIdsSet) { selectedIds.append(selectedId).append(";"); @@ -230,4 +227,10 @@ public class UniprotFTSPanel extends GFTSPanel return ftsFrameTitle; } + @Override + public Map getTempUserPrefs() + { + return tempUserPrefs; + } + }