JAL-1601 Implement sec str pred for single sequences
[jalview.git] / src / jalview / ws2 / actions / secstructpred / SecStructPredAction.java
1 package jalview.ws2.actions.secstructpred;
2
3 import java.util.List;
4 import java.util.Objects;
5
6 import jalview.api.AlignViewportI;
7 import jalview.datamodel.AlignmentI;
8 import jalview.viewmodel.AlignmentViewport;
9 import jalview.ws.params.ArgumentI;
10 import jalview.ws2.actions.BaseAction;
11 import jalview.ws2.actions.BaseTask;
12 import jalview.ws2.api.Credentials;
13 import jalview.ws2.client.api.SecStructPredWebServiceClientI;
14 import jalview.ws2.client.api.WebServiceClientI;
15
16 public class SecStructPredAction extends BaseAction<AlignmentI>
17 {
18   public static class Builder extends BaseAction.Builder<SecStructPredAction>
19   {
20     protected SecStructPredWebServiceClientI client;
21     
22     protected boolean msaMode;
23     
24     private Builder(SecStructPredWebServiceClientI client)
25     {
26       super();
27       Objects.requireNonNull(client);
28       this.client = client;
29     }
30     
31     public void msaMode(boolean msa)
32     {
33       this.msaMode = msa;
34     }
35     
36     public SecStructPredAction build()
37     {
38       return new SecStructPredAction(this);
39     }
40   }
41   
42   public static Builder newBuilder(SecStructPredWebServiceClientI client)
43   {
44     return new Builder(client);
45   }
46   
47   protected final SecStructPredWebServiceClientI client;
48   
49   protected boolean msaMode;
50   
51   public SecStructPredAction(Builder builder)
52   {
53     super(builder);
54     client = builder.client;
55     msaMode = builder.msaMode;
56   }
57   
58   public BaseTask<?, AlignmentI> createTask(AlignViewportI viewport,
59       List<ArgumentI> args, Credentials credentials)
60   {
61     if (msaMode)
62       return new SecStructPredMsaTask(client, args, credentials, viewport);
63     else
64       return new SecStructPredPDBSearchTask(client, args, credentials, viewport);
65   }
66
67   @Override
68   public boolean isActive(AlignmentViewport viewport)
69   {
70     return false;
71   }
72 }