From: jprocter Date: Fri, 21 May 2010 10:07:55 +0000 (+0000) Subject: preset and argument support X-Git-Tag: Release_2_6~217 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=fee7b75bff69e58669a3b42f31e1c7a4c3607518;p=jalview.git preset and argument support --- diff --git a/src/jalview/ws/jws2/MsaWSClient.java b/src/jalview/ws/jws2/MsaWSClient.java index a557cf7..b65242f 100644 --- a/src/jalview/ws/jws2/MsaWSClient.java +++ b/src/jalview/ws/jws2/MsaWSClient.java @@ -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 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 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) 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); + } } diff --git a/src/jalview/ws/jws2/MsaWSThread.java b/src/jalview/ws/jws2/MsaWSThread.java index 9063b1f..3ecce57 100644 --- a/src/jalview/ws/jws2/MsaWSThread.java +++ b/src/jalview/ws/jws2/MsaWSThread.java @@ -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 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 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);