JAL-2629 add ability to add and select a DB for hmmsearch
[jalview.git] / src / jalview / hmmer / HMMERParamStore.java
index 1bfc72f..3dad581 100644 (file)
@@ -1,6 +1,8 @@
 package jalview.hmmer;
 
 
+import jalview.bin.Cache;
+import jalview.gui.Preferences;
 import jalview.util.MessageManager;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.ParamDatastoreI;
@@ -8,10 +10,13 @@ import jalview.ws.params.WsParamSetI;
 import jalview.ws.params.simple.BooleanOption;
 import jalview.ws.params.simple.IntegerParameter;
 import jalview.ws.params.simple.LogarithmicParameter;
+import jalview.ws.params.simple.Option;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
+import java.util.Scanner;
 
 
 public class HMMERParamStore implements ParamDatastoreI
@@ -51,6 +56,34 @@ public class HMMERParamStore implements ParamDatastoreI
               MessageManager
                       .getString("label.number_of_results_desc"),
               true, 100, 0, 100000));
+      String names = Cache.getProperty(Preferences.HMMSEARCH_DBS);
+      if (names != null && !names.isEmpty())
+      {
+        Collection<String> databases = new ArrayList<>();
+        databases.add("This Alignment");
+        Scanner nameScanner = new Scanner(names);
+
+        if (nameScanner.hasNext())
+        {
+          while (nameScanner.hasNext())
+          {
+            String next = nameScanner.next();
+            if (next == "null")
+            {
+              Cache.setProperty(Preferences.HMMSEARCH_DBS, "");
+              Cache.setProperty(Preferences.HMMSEARCH_DB_PATHS, "");
+            }
+            else
+            {
+              databases.add(next);
+            }
+          }
+        }
+        nameScanner.close();
+        args.add(new Option(MessageManager.getString("label.database"),
+                MessageManager.getString("label.database_for_hmmsearch"),
+                true, "This Alignment", "This Alignment", databases, null));
+      }
       args.add(new BooleanOption(
               MessageManager.getString("label.auto_align_seqs"),
               MessageManager.getString("label.auto_align_seqs_desc"),