1 package jalview.ws2.actions;
3 import java.util.EnumSet;
4 import java.util.Objects;
6 import jalview.ws2.actions.api.ActionI;
7 import jalview.ws2.api.CredentialType;
8 import jalview.ws2.api.WebService;
11 * An abstract base class storing common data and implementing their getters
12 * defined in {@link ActionI} interface. The concrete action implementations are
13 * encouraged to extend this class and provide their own {@code perform} and
14 * {@code isActive} implementations.
20 public abstract class BaseAction<R> implements ActionI<R>
22 public static abstract class Builder<A extends BaseAction<?>>
24 protected WebService<A> webService;
26 protected String name;
28 protected String tooltip = "";
30 protected String subcategory = null;
32 protected int minSequences = -1;
34 protected int maxSequences = -1;
36 protected boolean allowProtein = true;
38 protected boolean allowNucleotide = true;
40 protected EnumSet<CredentialType> requiredCredentials = EnumSet.noneOf(CredentialType.class);
46 public void name(String val)
51 public void webService(WebService<A> val)
53 this.webService = val;
56 public void tooltip(String val)
61 public void subcategory(String val)
66 public void minSequences(int val)
71 public void maxSequecnes(int val)
76 public void allowProtein(boolean val)
81 public void allowNucleotide(boolean val)
83 allowNucleotide = val;
86 public void addRequiredCredential(CredentialType val)
88 requiredCredentials.add(val);
91 public void requiredCredentials(EnumSet<CredentialType> val)
93 requiredCredentials = val;
97 protected final WebService<? extends ActionI<R>> webService;
99 protected final String name;
101 protected final String tooltip;
103 protected final String subcategory;
105 protected final int minSequences;
107 protected final int maxSequences;
109 protected final boolean allowProtein;
111 protected final boolean allowNucleotide;
113 protected final EnumSet<CredentialType> requiredCredentials;
115 protected BaseAction(Builder<? extends BaseAction<R>> builder)
117 Objects.requireNonNull(builder.webService);
118 this.webService = builder.webService;
119 Objects.requireNonNull(builder.name);
120 this.name = builder.name;
121 this.tooltip = builder.tooltip;
122 this.subcategory = builder.subcategory;
123 this.minSequences = builder.minSequences;
124 this.maxSequences = builder.maxSequences;
125 this.allowProtein = builder.allowProtein;
126 this.allowNucleotide = builder.allowNucleotide;
127 this.requiredCredentials = builder.requiredCredentials;
131 public WebService<? extends ActionI<R>> getWebService()
137 public String getName()
143 public String getTooltip()
149 public String getSubcategory()
155 public int getMinSequences()
161 public int getMaxSequences()
167 public boolean doAllowProtein()
173 public boolean doAllowNucleotide()
175 return allowNucleotide;
179 public EnumSet<CredentialType> getRequiredCredentials()
181 return requiredCredentials;