preset and argument support
authorjprocter <Jim Procter>
Fri, 21 May 2010 10:07:55 +0000 (10:07 +0000)
committerjprocter <Jim Procter>
Fri, 21 May 2010 10:07:55 +0000 (10:07 +0000)
src/jalview/ws/jws2/MsaWSClient.java
src/jalview/ws/jws2/MsaWSThread.java

index a557cf7..b65242f 100644 (file)
@@ -19,12 +19,16 @@ package jalview.ws.jws2;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.List;
 
 import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.gui.*;
 import compbio.data.msa.MsaWS;
+import compbio.metadata.Argument;
+import compbio.metadata.Preset;
+import compbio.metadata.PresetManager;
 import jalview.ws.jws2.Jws2Discoverer.Jws2Instance;
 
 /**
@@ -40,7 +44,27 @@ public class MsaWSClient extends Jws2Client
    */
   MsaWS server;
   AlignFrame alignFrame;
+  private Preset preset;
+  private List<Argument> paramset;
 
+
+  public MsaWSClient(Jws2Discoverer.Jws2Instance sh, String altitle,
+          jalview.datamodel.AlignmentView msa, boolean submitGaps,
+          boolean preserveOrder, Alignment seqdataset,
+          AlignFrame _alignFrame)
+  {
+    this(sh, null, null, altitle, msa, submitGaps, preserveOrder, seqdataset, _alignFrame);
+    // TODO Auto-generated constructor stub
+  }
+
+  public MsaWSClient(Jws2Discoverer.Jws2Instance sh, Preset preset, String altitle,
+          jalview.datamodel.AlignmentView msa, boolean submitGaps,
+          boolean preserveOrder, Alignment seqdataset,
+          AlignFrame _alignFrame)
+  {
+    this(sh, preset, null, altitle, msa, submitGaps, preserveOrder, seqdataset, _alignFrame);
+    // TODO Auto-generated constructor stub
+  }
   /**
    * Creates a new MsaWSClient object that uses a service given by an externally
    * retrieved ServiceHandle
@@ -57,11 +81,10 @@ public class MsaWSClient extends Jws2Client
    *          DOCUMENT ME!
    */
 
-  public MsaWSClient(Jws2Discoverer.Jws2Instance sh, String altitle,
+  public MsaWSClient(Jws2Discoverer.Jws2Instance sh, Preset preset, List<Argument> arguments, String altitle,
           jalview.datamodel.AlignmentView msa, boolean submitGaps,
           boolean preserveOrder, Alignment seqdataset,
-          AlignFrame _alignFrame)
-  {
+          AlignFrame _alignFrame)  {
     super();
     alignFrame = _alignFrame;
     if (!(sh.service instanceof MsaWS))
@@ -78,6 +101,8 @@ public class MsaWSClient extends Jws2Client
       return;
     }
     server = sh.service;
+    this.preset = preset;
+    this.paramset = arguments;
     if ((wsInfo = setWebService(sh, false)) == null)
     {
       JOptionPane.showMessageDialog(Desktop.desktop,
@@ -129,7 +154,7 @@ public class MsaWSClient extends Jws2Client
               + "alignment of " + altitle;
     }
 
-    MsaWSThread msathread = new MsaWSThread(server, WsURL, wsInfo,
+    MsaWSThread msathread = new MsaWSThread(server, preset, paramset, WsURL, wsInfo,
             alignFrame, WebServiceName, jobtitle, msa, submitGaps,
             preserveOrder, seqdataset);
     wsInfo.setthisService(msathread);
@@ -199,6 +224,31 @@ public class MsaWSClient extends Jws2Client
       msawsmenu.add(methodR);
 
     }
+    PresetManager presets = service.getPresets();
+    if (presets!=null && presets.getPresets().size()>0)
+    {
+      JMenu presetlist = new JMenu("Presets for "+WebServiceName+"(Without gaps)");
+      
+      for (final Preset preset : (List<Preset>) presets.getPresets())
+      {
+        final JMenuItem methodR = new JMenuItem(preset.getName());
+        methodR.setToolTipText(preset.getDescription());
+        methodR.addActionListener(new ActionListener()
+        {
+          public void actionPerformed(ActionEvent e)
+          {
+            AlignmentView msa = alignFrame.gatherSequencesForAlignment();
+            new MsaWSClient(service, preset, alignFrame.getTitle(),
+                    msa, false, true, alignFrame.getViewport().getAlignment()
+                            .getDataset(), alignFrame);
+
+          }
+
+        });
+        presetlist.add(methodR);
+      }
+      msawsmenu.add(presetlist);
+    }
 
   }
 
index 9063b1f..3ecce57 100644 (file)
@@ -22,8 +22,10 @@ import java.util.*;
 import compbio.data.msa.MsaWS;
 import compbio.data.sequence.AlignmentMetadata;
 import compbio.data.sequence.Program;
+import compbio.metadata.Argument;
 import compbio.metadata.ChunkHolder;
 import compbio.metadata.JobStatus;
+import compbio.metadata.Preset;
 
 import jalview.analysis.*;
 import jalview.bin.*;
@@ -66,7 +68,8 @@ class MsaWSThread extends AWS2Thread implements WSClientI
   class MsaWSJob extends JWs2Job
   {
     long lastChunk=0;
-    
+    Preset preset=null;
+    List<Argument> arguments =  null;
     /**
      * input 
      */
@@ -389,7 +392,7 @@ class MsaWSThread extends AWS2Thread implements WSClientI
    * @param seqset
    *          Alignment
    */
-  MsaWSThread(MsaWS server2, String wsUrl,
+  MsaWSThread(MsaWS server2, Preset preset, List<Argument> paramset, String wsUrl, 
           WebserviceInfo wsinfo, jalview.gui.AlignFrame alFrame,
           String wsname, String title, AlignmentView _msa, boolean subgaps,
           boolean presorder, Alignment seqset)
@@ -414,6 +417,8 @@ class MsaWSThread extends AWS2Thread implements WSClientI
         {
           jobs[j] = new MsaWSJob(0, conmsa[j]);
         }
+        ((MsaWSJob) jobs[j]).preset = preset;
+        ((MsaWSJob) jobs[j]).arguments = paramset;
         if (njobs > 0)
         {
           wsinfo
@@ -539,7 +544,16 @@ class MsaWSThread extends AWS2Thread implements WSClientI
     try
     {
       // TODO: get the parameters (if any) for this job and submit the job
-      j.setJobId(server.align(j.seqs));
+      if (j.arguments!=null && j.arguments.size()>0)
+      {
+        j.setJobId(server.customAlign(j.seqs, j.arguments));
+      } else
+        if (j.preset!=null)
+        {
+          j.setJobId(server.presetAlign(j.seqs, j.preset));
+        } else {
+                j.setJobId(server.align(j.seqs));
+        }
 
       if (j.getJobId()!= null)
       {
@@ -562,8 +576,8 @@ class MsaWSThread extends AWS2Thread implements WSClientI
       System.err
               .println(WebServiceName
                       + "Client: Failed to submit the sequences for alignment (probably a server side problem)\n"
-                      + "When contacting Server:" + WsUrl + "\n"
-                      + e.toString() + "\n");
+                      + "When contacting Server:" + WsUrl + "\n");
+      e.printStackTrace(System.err);
       j.setAllowedServerExceptions(0);
       wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_SERVERERROR);
       wsInfo.setStatus(j.getJobnum(), WebserviceInfo.STATE_STOPPED_SERVERERROR);