JAL-1563 JAL-2091 Added generic pagination for FTS Service, pagination for PDB FTS...
[jalview.git] / src / jalview / fts / service / uniprot / UniprotFTSPanel.java
index 32f359e..acf2fb0 100644 (file)
@@ -40,29 +40,24 @@ public class UniprotFTSPanel extends GFTSPanel
 
   private String ftsFrameTitle = defaultFTSFrameTitle;
 
-  private int resultSetCount;
 
-  private int offSet;
-
-  private static int pageLimit = UniProtFTSRestClient.getInstance()
-          .getDefaultResponsePageSize();
 
   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
@@ -80,7 +75,8 @@ public class UniprotFTSPanel extends GFTSPanel
 
           wantedFields = UniProtFTSRestClient.getInstance()
                   .getAllDefaulDisplayedDataColumns();
-          String searchTerm = txt_search.getText();
+          String searchTerm = decodeSearchTerm(txt_search.getText(),
+                  searchTarget);
 
           FTSRestRequest request = new FTSRestRequest();
           request.setFieldToSearchBy(searchTarget);
@@ -138,44 +134,33 @@ public class UniprotFTSPanel extends GFTSPanel
 
   }
 
-
-
-  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()