71734c64819dcda0fae9ede16d57996e6bf8410e
[jalview.git] / src / jalview / rest / FetchSequencesEndpoint.java
1 package jalview.rest;
2
3 import java.util.Map;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import jalview.bin.Cache;
9 import jalview.gui.Desktop;
10 import jalview.gui.SequenceFetcher;
11 import jalview.util.DBRefUtils;
12
13 public class FetchSequencesEndpoint extends AbstractEndpointAsync
14 {
15   public FetchSequencesEndpoint(API api)
16   {
17     super(api, path, name, parameters, description);
18   }
19
20   private static final String path = "fetchsequences";
21
22   private static final String name = "Fetch Sequences";
23
24   private static final String parameters = "<resource name>,<sequence ids>";
25
26   private static final String description = "Fetch sequences from online resource";
27
28   private SequenceFetcher sf;
29
30   @Override
31   protected void initialise(HttpServletRequest request,
32           HttpServletResponse response)
33   {
34     if (!checkParameters(request, response, 2))
35     {
36       return;
37     }
38     String[] parameters = getEndpointPathParameters(request);
39
40     String dbName = parameters[0];
41     String dbId = parameters[1];
42
43     setId(request, dbName + "::" + dbId);
44     if (checkStatus(request, response))
45       return;
46
47     String db = DBRefUtils.getCanonicalName(dbName);
48     Desktop desktop = Desktop.instance;
49     sf = new SequenceFetcher(desktop, db, dbId);
50     setCompletableFuture(sf.ok_actionPerformed(true));
51   }
52
53   protected void processAsync(HttpServletRequest request,
54           HttpServletResponse response, Map<String, String> map)
55   {
56     // all the work being done by the SequenceFetcher!
57     Cache.warn("THIS SHOULD NOT BE RUN");
58   }
59
60   protected void atEnd()
61   {
62     sf.close_actionPerformed(null);
63   }
64 }