JAL-1517 source formatting
[jalview.git] / src / jalview / ws / jws2 / JabaParamStore.java
index bdea5be..65f939a 100644 (file)
@@ -1,14 +1,33 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ws.jws2;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.StringTokenizer;
 
+import org.jmol.util.ArrayUtil;
 import compbio.metadata.Argument;
 import compbio.metadata.Option;
 import compbio.metadata.Parameter;
@@ -16,10 +35,10 @@ import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 import compbio.metadata.RunnerConfig;
 
-import jalview.ws.jws2.Jws2Discoverer.Jws2Instance;
 import jalview.ws.jws2.dm.JabaOption;
 import jalview.ws.jws2.dm.JabaParameter;
 import jalview.ws.jws2.dm.JabaWsParamSet;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.ParamManager;
@@ -123,12 +142,28 @@ public class JabaParamStore implements ParamDatastoreI
 
   public static List<ArgumentI> getJwsArgsfromJaba(List jabargs)
   {
+    return getJwsArgsfromJaba(jabargs, true);
+  }
+
+  public static List<ArgumentI> getJwsArgsfromJaba(List jabargs,
+          boolean sortByOpt)
+  {
     List<ArgumentI> rgs = new ArrayList<ArgumentI>();
+    List<String> rgnames = new ArrayList<String>();
     for (Object rg : jabargs)
     {
-      ArgumentI narg = (rg instanceof Parameter) ? new JabaParameter(
-              (Parameter) rg) : (rg instanceof Option) ? new JabaOption(
-              (Option) rg) : null;
+      ArgumentI narg = null;
+      String nargstring = null;
+      if (rg instanceof Parameter)
+      {
+        narg = new JabaParameter((Parameter) rg);
+        nargstring = narg.getName(); // just sort by name for this
+      }
+      else if (rg instanceof Option)
+      {
+        narg = new JabaOption((Option) rg);
+        nargstring = (String) ((Option) rg).getOptionNames().get(0);
+      }
       if (narg == null)
       {
         throw new Error(
@@ -138,9 +173,25 @@ public class JabaParamStore implements ParamDatastoreI
       else
       {
         rgs.add(narg);
+        rgnames.add(nargstring);
       }
     }
-    return rgs;
+    if (!sortByOpt)
+    {
+      return rgs;
+    }
+    ArgumentI[] rgssort = rgs.toArray(new ArgumentI[rgs.size()]);
+    String[] rgssorton = rgnames.toArray(new String[rgs.size()]);
+    jalview.util.QuickSort.sort(rgssorton, rgssort);
+    ArgumentI tmp1;
+    int i = 0;
+    while (rgssort.length - i > i)
+    {
+      tmp1 = rgssort[rgssort.length - i - 1];
+      rgssort[rgssort.length - i - 1] = rgssort[i];
+      rgssort[i++] = tmp1;
+    }
+    return Arrays.asList(rgssort);
   }
 
   public static List getJabafromJwsArgs(List<ArgumentI> jwsargs)
@@ -255,7 +306,8 @@ public class JabaParamStore implements ParamDatastoreI
     boolean found = false;
     for (String url : urls)
     {
-      if (service.getUri().equalsIgnoreCase(url))
+      if (service.getServiceTypeURI().equals(url)
+              || service.getUri().equalsIgnoreCase(url))
       {
         found = true;
         break;