package jalview.ws2.client.jpred4;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
{
final JPredClient client;
- JPred4WSClient(JPredClient client)
+ private final JPredRequest.Mode mode;
+
+ private final JPredRequest.Format format;
+
+ JPred4WSClient(JPredClient client, boolean msaMode)
{
+ this.mode = msaMode ? JPredRequest.Mode.MSA : JPredRequest.Mode.SINGLE;
+ this.format = msaMode ? JPredRequest.Format.FASTA : JPredRequest.Format.SEQ;
this.client = client;
}
public WebServiceJobHandle submit(List<SequenceI> sequences,
List<ArgumentI> args, Credentials credentials) throws IOException
{
- var input = FileFormat.Fasta
- .getWriter(null)
- .print(sequences.toArray(SequenceI[]::new), false);
+ var input = mode == JPredRequest.Mode.MSA
+ ? FileFormat.Fasta
+ .getWriter(null)
+ .print(sequences.toArray(new SequenceI[sequences.size()]), false)
+ : sequences.get(0).getSequenceAsString();
+
JPredRequest request = JPredRequest
.newBuilder()
- .mode(JPredRequest.Mode.MSA)
- .format(JPredRequest.Format.FASTA)
+ .mode(mode)
+ .format(format)
.input(input)
.build();
var jobId = client.submit(request);
var status = client.getStatus(job.getJobId());
switch (status)
{
+ case PENDING:
+ return JobStatus.QUEUED;
case RUNNING:
return JobStatus.RUNNING;
case FINISHED:
public void cancel(WebServiceJobHandle job)
throws IOException, UnsupportedOperationException
{
-
+
}
-
+
@Override
public AlignFile getAlignmentFile(WebServiceJobHandle job) throws IOException
{
- var url = client.getResultURL(job.getJobId(), ResultTypes.PSIBLAST_ALIGN);
- return new FastaFile(url.toString(), DataSourceType.URL);
+ var stream = client.getResultStream(job.getJobId(), ResultTypes.PSIBLAST_ALIGN);
+ var buffer = new byte[2048];
+ var file = new ByteArrayOutputStream();
+ var len = 0;
+ while ((len= stream.read(buffer)) >= 0)
+ file.write(buffer, 0, len);
+ return new FastaFile(file.toString("UTF-8"), DataSourceType.PASTE);
}
-
+
@Override
public JPredFile getPredictionFile(WebServiceJobHandle job) throws IOException
{
- var url = client.getResultURL(job.getJobId(), ResultTypes.CONCISE);
- return new JPredFile(url.toString(), DataSourceType.URL);
+ var stream = client.getResultStream(job.getJobId(), ResultTypes.CONCISE);
+ var buffer = new byte[2048];
+ var file = new ByteArrayOutputStream();
+ var len = 0;
+ while ((len= stream.read(buffer)) >= 0)
+ file.write(buffer, 0, len);
+ return new JPredFile(file.toString("UTF-8"), DataSourceType.PASTE);
}
}