JAL-3851 quick hack of highlighting position in an Ensembl ID
authorJim Procter <j.procter@dundee.ac.uk>
Fri, 20 Aug 2021 15:42:13 +0000 (16:42 +0100)
committerJim Procter <j.procter@dundee.ac.uk>
Fri, 20 Aug 2021 15:42:13 +0000 (16:42 +0100)
src/jalview/gbtest/TestListener.java

index 8321fb9..a1f47b0 100644 (file)
@@ -9,7 +9,9 @@ import java.util.HashMap;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import jalview.analysis.SeqsetUtils;
 import jalview.bin.Cache;
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SearchResults;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
@@ -18,10 +20,11 @@ import jalview.gui.SeqPanel;
 import jalview.gui.SequenceFetcher;
 import jalview.httpserver.AbstractRequestHandler;
 import jalview.structure.SelectionSource;
+import jalview.structure.VamsasSource;
 import jalview.util.DBRefUtils;
 
 public class TestListener extends AbstractRequestHandler
-        implements SelectionSource
+        implements SelectionSource, VamsasSource
 {
 
   private String MY_PATH = "TEST";
@@ -159,6 +162,64 @@ public class TestListener extends AbstractRequestHandler
         sr.addResult(seq, start, end);
         seqPanel.highlightSequence(sr);
       }
+      else if (pathInfo.startsWith("/ensembl/"))
+      {
+        String temp = pathInfo.substring("/ensembl/".length());
+        String id = temp.indexOf("/") > -1
+                ? temp.substring(0, temp.indexOf("/"))
+                : temp;
+        // id is an ensembl gene ID - we look through our alignFrames to find a sequence
+        SequenceI ensDatasetSeq = null;
+        AlignFrame af=null;
+        // ideally Desktop.getDataSets() to find all datasets with this one..
+        for (AlignFrame _af: alignFrames.values())
+        {
+          AlignmentI ds = _af.getCurrentView().getAlignment().getDataset();
+          if ((ensDatasetSeq = ds.findName(id)) !=null) {
+            af = _af;
+            break;
+          }
+        }
+        if (ensDatasetSeq!=null)
+        {
+        Cache.warn("*** temp=" + temp);
+        Cache.warn("*** id=" + id);
+        PrintWriter pw = response.getWriter();
+        pw.println("id=" + id);
+        pw.println("alignframe=" + (af == null ? null : af.getTitle()));
+        if (af == null)
+        {
+          pw.println("error=alignframe not ready");
+          return;
+        }
+        String startS = request.getParameter("start");
+        String endS = request.getParameter("end");
+        int start = 0;
+        int end = -1;
+        if (startS != null || endS != null)
+        {
+          try
+          {
+            if (startS!=null) {
+              start = Integer.parseInt(startS);
+            }
+            if (endS!=null)
+            {
+              end = Integer.parseInt(endS);
+            }
+          } catch (NumberFormatException e)
+          {
+            Cache.warn(Cache.getStackTraceString(e));
+            pw.println("error=couldn't parse start and end");
+            return;
+          }
+        }
+        pw.println("start=" + start);
+        pw.println("end=" + end);
+        // highlight start for now
+        af.getCurrentView().getStructureSelectionManager().mouseOverVamsasSequence(ensDatasetSeq, start, this);
+        }
+      }
     } catch (Exception e)
     {
       Cache.warn(Cache.getStackTraceString(e));