1 package jalview.ws2.operations;
3 import jalview.ws.params.ParamDatastoreI;
4 import jalview.ws2.MenuEntryProviderI;
7 * Operation represents an action which can be performed with a (web)service or
8 * calculator. Examples of operations are multiple sequence alignment or
9 * sequence annotation. There should be one Operation implementation for each
10 * operation that Jalview can perform on sequences or alignments. The concrete
11 * implementations may be further parameterized to alter the functionality (e.g.
12 * making the operation interactive) or restrict input data (e.g. limit to
18 public interface Operation
21 * Get the name of the operation. Typically fetched from the server.
23 * @return operation name
25 public String getName();
28 * Get the description of the operation. Typically fetched from the server.
30 * @return operation description
32 public String getDescription();
35 * Get the name of the category that the operation falls into. Used to group
36 * the operations under the web services menu.
38 * @return category name
40 public String getTypeName();
43 * Get the hostname/url of the server which this operation is delegated to.
44 * Typically fetched from the accompanying web service instance.
48 public String getHostName();
51 * Check if the operation has user-customizable input parameters.
53 * @return if has parameters
55 public boolean hasParameters();
58 * Returns parameter datastore for this operations containing input parameters
59 * and available presets.
61 * @return parameter datastore of the operation
63 public ParamDatastoreI getParamStore();
66 * @return minimum accepted number of sequences
68 public int getMinSequences();
71 * @return maximum accepted number of sequences
73 public int getMaxSequences();
76 * @return whether gaps should be included
78 public boolean canSubmitGaps();
81 * @return whether works with protein sequences
83 public boolean isProteinOperation();
86 * @return whether works with nucleotide sequences
88 public boolean isNucleotideOperation();
91 * @return whether should be run interactively
93 public boolean isInteractive();
96 * Get the menu builder for this operation which will be used to construct the
97 * web services menu. The builder will be given the parent menu entry which it
98 * should attach menu items to and the current align frame.
100 * @return menu entry builder instance
102 public MenuEntryProviderI getMenuBuilder();
105 * @return whether this operation is alignment analysis
107 public boolean isAlignmentAnalysis();
110 * @return whether non-standatds symbols should be filtered out
112 public boolean getFilterNonStandardSymbols();
115 * @return whether it needs aligned sequences
117 public boolean getNeedsAlignedSequences();