JAL-3954 Do not retrieve alignment for failed jobs
[jalview.git] / src / jalview / ws2 / actions / hmmer / PhmmerAction.java
1 package jalview.ws2.actions.hmmer;
2
3 import java.util.List;
4 import java.util.Objects;
5
6 import jalview.datamodel.AlignmentI;
7 import jalview.viewmodel.AlignmentViewport;
8 import jalview.ws.params.ArgumentI;
9 import jalview.ws2.actions.BaseAction;
10 import jalview.ws2.actions.api.TaskEventListener;
11 import jalview.ws2.actions.api.TaskI;
12 import jalview.ws2.api.Credentials;
13 import jalview.ws2.client.api.AlignmentWebServiceClientI;
14 import jalview.ws2.client.api.WebServiceClientI;
15
16 /**
17  * Implementation of the {@link BaseAction} for the phmmer client. This is NOT
18  * how you should implement it. The action should be more generic and cover
19  * range of similar services.
20  * 
21  * @author mmwarowny
22  *
23  */
24 // FIXME: Not an alignment action (temporary hack)
25 public class PhmmerAction extends BaseAction<AlignmentI>
26 {
27   public static class Builder extends BaseAction.Builder<PhmmerAction>
28   {
29     protected AlignmentWebServiceClientI client;
30
31     private Builder(AlignmentWebServiceClientI client)
32     {
33       super();
34       Objects.requireNonNull(client);
35       this.client = client;
36     }
37
38     public PhmmerAction build()
39     {
40       return new PhmmerAction(this);
41     }
42   }
43
44   public static Builder newBuilder(AlignmentWebServiceClientI client)
45   {
46     return new Builder(client);
47   }
48
49   protected final AlignmentWebServiceClientI client;
50
51   public PhmmerAction(Builder builder)
52   {
53     super(builder);
54     client = builder.client;
55   }
56
57   @Override
58   public TaskI<AlignmentI> perform(AlignmentViewport viewport,
59           List<ArgumentI> args, Credentials credentials,
60           TaskEventListener<AlignmentI> handler)
61   {
62     var task = new PhmmerTask(client, args, credentials,
63             viewport.getAlignmentView(true), handler);
64     task.start(viewport.getServiceExecutor());
65     return task;
66   }
67
68   @Override
69   public boolean isActive(AlignmentViewport viewport)
70   {
71     return false;
72   }
73 }