package jalview.ws2.actions.hmmer; import java.util.List; import java.util.Objects; import jalview.datamodel.AlignmentI; import jalview.viewmodel.AlignmentViewport; import jalview.ws.params.ArgumentI; import jalview.ws2.actions.BaseAction; import jalview.ws2.actions.api.TaskEventListener; import jalview.ws2.actions.api.TaskI; import jalview.ws2.api.Credentials; import jalview.ws2.client.api.AlignmentWebServiceClientI; import jalview.ws2.client.api.WebServiceClientI; /** * Implementation of the {@link BaseAction} for the phmmer client. This is NOT * how you should implement it. The action should be more generic and cover * range of similar services. * * @author mmwarowny * */ // FIXME: Not an alignment action (temporary hack) public class PhmmerAction extends BaseAction { public static class Builder extends BaseAction.Builder { protected AlignmentWebServiceClientI client; private Builder(AlignmentWebServiceClientI client) { super(); Objects.requireNonNull(client); this.client = client; } public PhmmerAction build() { return new PhmmerAction(this); } } public static Builder newBuilder(AlignmentWebServiceClientI client) { return new Builder(client); } protected final AlignmentWebServiceClientI client; public PhmmerAction(Builder builder) { super(builder); client = builder.client; } @Override public TaskI perform(AlignmentViewport viewport, List args, Credentials credentials, TaskEventListener handler) { var task = new PhmmerTask(client, args, credentials, viewport.getAlignmentView(true), handler); task.start(viewport.getServiceExecutor()); return task; } @Override public boolean isActive(AlignmentViewport viewport) { return false; } }