JAL-3851 re-engineering endpoints as separate classes
[jalview.git] / src / jalview / rest / FetchSequenceEndpoint.java
1 package jalview.rest;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import jalview.gui.Desktop;
7 import jalview.gui.SequenceFetcher;
8 import jalview.util.DBRefUtils;
9
10 public class FetchSequenceEndpoint extends EndpointAsync
11 {
12   protected String name = "fetchsequence";
13
14   @Override
15   protected void initialise(HttpServletRequest request,
16           HttpServletResponse response)
17   {
18     // note that endpointName should always be "fetchsequence"
19
20     String[] parameters = getEndpointPathParameters(request);
21
22     // check we can run fetchsequence
23     if (parameters.length < 2)
24     {
25       returnError(request, response,
26               "requires 2 path parameters: dbname, ids");
27       return;
28     }
29
30     String dbName = parameters[0];
31     String dbId = parameters[1];
32
33     setId(request, dbName + "::" + dbId);
34     if (checkStatus(request, response))
35       return;
36
37     String db = DBRefUtils.getCanonicalName(dbName);
38     Desktop desktop = Desktop.instance;
39     SequenceFetcher sf = new SequenceFetcher(desktop, db, dbId);
40     setCompletableFuture(sf.ok_actionPerformed(true));
41   }
42
43   protected void process(HttpServletRequest request,
44           HttpServletResponse response)
45   {
46     // all the work being done by the SequenceFetcher!
47   }
48 }