JAL-3851 start highlight
authorBen Soares <b.soares@dundee.ac.uk>
Thu, 2 Sep 2021 19:21:06 +0000 (20:21 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Thu, 2 Sep 2021 19:21:06 +0000 (20:21 +0100)
src/jalview/rest/HighlightSequenceEndpoint.java [new file with mode: 0644]

diff --git a/src/jalview/rest/HighlightSequenceEndpoint.java b/src/jalview/rest/HighlightSequenceEndpoint.java
new file mode 100644 (file)
index 0000000..556d45b
--- /dev/null
@@ -0,0 +1,55 @@
+package jalview.rest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class HighlightSequenceEndpoint extends Endpoint
+{
+  public HighlightSequenceEndpoint(API api)
+  {
+    super(api, name);
+  }
+
+  protected static final String name = "highlight";
+
+  public void processEndpoint(HttpServletRequest request,
+          HttpServletResponse response)
+  {
+    String[] parameters = getEndpointPathParameters(request);
+
+    // check we can run highlight
+    if (parameters.length < 1)
+    {
+      returnError(request, response, "requires 1 path parameters: ranges");
+      return;
+    }
+
+    String rangesString = parameters[0];
+    String[] rangeStrings = rangesString.split(",");
+    int[][] ranges = new int[rangeStrings.length][2];
+    for (int i = 0; i < rangeStrings.length; i++)
+    {
+      String range = rangeStrings[i];
+      try
+      {
+        int hyphenpos = range.indexOf('-');
+        if (hyphenpos < 0)
+        {
+          ranges[i][0] = Integer.parseInt(range);
+          ranges[i][1] = ranges[i][0];
+        }
+        else
+        {
+          ranges[i][0] = Integer.parseInt(range.substring(0, hyphenpos));
+          ranges[i][1] = Integer.parseInt(range.substring(hyphenpos));
+        }
+      } catch (NumberFormatException nfe)
+      {
+        returnError(request, response,
+                "couldn't parse ranges component '" + range + "'");
+        return;
+      }
+    }
+
+  }
+}
\ No newline at end of file