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;
/**
*/
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
* 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))
return;
}
server = sh.service;
+ this.preset = preset;
+ this.paramset = arguments;
if ((wsInfo = setWebService(sh, false)) == null)
{
JOptionPane.showMessageDialog(Desktop.desktop,
+ "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);
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);
+ }
}
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.*;
class MsaWSJob extends JWs2Job
{
long lastChunk=0;
-
+ Preset preset=null;
+ List<Argument> arguments = null;
/**
* input
*/
* @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)
{
jobs[j] = new MsaWSJob(0, conmsa[j]);
}
+ ((MsaWSJob) jobs[j]).preset = preset;
+ ((MsaWSJob) jobs[j]).arguments = paramset;
if (njobs > 0)
{
wsinfo
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)
{
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);