+ URI reqUri = URI.create(request.getRequestURI());
+
+ Cache.warn("*** request.getRequestURI()=" + request.getRequestURI());
+ Cache.warn("*** reqUri=" + reqUri.toASCIIString());
+ Cache.warn(
+ "*** request.getContextPath()=" + request.getContextPath());
+ Cache.warn("*** request.getPathInfo()=" + request.getPathInfo());
+
+ String pathInfo = request.getPathInfo();
+ Cache.warn("*** pathInfo=" + pathInfo);
+ if (pathInfo.startsWith("/" + viewgene + "/"))
+ {
+
+ String temp = pathInfo.substring(viewgene.length() + 2);
+ String ensemblId = temp.indexOf("/") > -1
+ ? temp.substring(0, temp.indexOf("/"))
+ : temp;
+ Cache.warn("*** temp=" + temp);
+ Cache.warn("*** ensemblId=" + ensemblId);
+
+ // Check whether this ensembl search has already been started
+ // and hasn't finished.
+ StringBuilder idSB = new StringBuilder();
+ // Commenting out HttpSession -- there's no SessionManager (causes
+ // Exception)
+ // HttpSession session = request.getSession(true);
+ // idSB.append(session == null ? "NOSESSION" : session.getId());
+ idSB.append(MY_PATH);
+ idSB.append("::");
+ // idSB.append(viewgene);
+ // idSB.append("::");
+ idSB.append(ensemblId);
+
+ String id = request.getParameter("id") == null ? idSB.toString()
+ : request.getParameter("id");
+
+ Thread worker = threadMap.get(id);
+ if (worker == null)
+ {
+ String db = DBRefUtils.getCanonicalName("ensembl");
+ Desktop desktop = Desktop.instance;
+ SequenceFetcher sf = new SequenceFetcher(desktop, db, ensemblId);
+ sf.closeDialog(true);
+ sf.saveAlignFrame(id, alignFrames);
+ worker = sf.ok_actionPerformed(true);
+ threadMap.put(id, worker);
+ }
+ AlignFrame af = alignFrames.get(id);
+ PrintWriter pw = response.getWriter();
+ pw.println("id=" + id);
+ pw.println("state=" + worker.getState().toString());
+ pw.println("alignframe=" + (af == null ? null : af.getTitle()));
+ if (af != null)
+ {
+
+ }
+ }
+ else if (pathInfo.startsWith("/" + highlight + "/"))
+ {
+ String temp = pathInfo.substring(highlight.length() + 2);
+ String id = temp.indexOf("/") > -1
+ ? temp.substring(0, temp.indexOf("/"))
+ : temp;
+ AlignFrame af = alignFrames.get(id);
+ Cache.warn("*** temp=" + temp);
+ Cache.warn("*** id=" + id);
+ PrintWriter pw = response.getWriter();
+ pw.println("id=" + id);
+ pw.println("state=" + threadMap.get(id).getState().toString());
+ 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
+ {
+ start = Integer.parseInt(startS);
+ 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);
+
+ SeqPanel seqPanel = af.alignPanel.getSeqPanel();
+ SequenceI[] seqs = af.getViewport().getSequenceSelection();
+ SequenceI seq = seqs.length > 0 ? seqs[0] : null;
+ SearchResults sr = new SearchResults();
+ sr.addResult(seq, start, end);
+ seqPanel.highlightSequence(sr);
+ }
+ } catch (Exception e)
+ {
+ Cache.warn(Cache.getStackTraceString(e));