JAL-1541 upadated BioJs emmitter to store alignment data as json
[jalview.git] / src / jalview / io / BioJsHTMLOutput.java
index 5a236dc..6869292 100644 (file)
@@ -8,11 +8,20 @@ import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.FeatureRenderer;
 import jalview.gui.SequenceRenderer;
+import jalview.json.binding.v1.BioJsAlignmentPojo;
+import jalview.json.binding.v1.BioJsSeqPojo;
 import jalview.util.MessageManager;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+
+import com.json.JSONException;
+import com.json.JSONObject;
+
 public class BioJsHTMLOutput
 {
   private AlignViewport av;
@@ -21,7 +30,6 @@ public class BioJsHTMLOutput
   public BioJsHTMLOutput(AlignmentPanel ap, SequenceRenderer sr,
           FeatureRenderer fr1)
   {
-    System.out.println("BioJs working as expected so far");
     this.av = ap.av;
 
     this.fr = new FeatureRenderer(ap);
@@ -71,21 +79,33 @@ public class BioJsHTMLOutput
   }
 
   private String generateBioJsAlignmentData(AlignmentI alignment)
-          throws IOException
+          throws IOException, JSONException
   {
-    StringBuilder bioJsData = new StringBuilder();
+    BioJsAlignmentPojo bjsAlignment = new BioJsAlignmentPojo();
+
     int count = 0;
     for (SequenceI seq : alignment.getSequences())
     {
-      bioJsData.append("seqOnFly.push({seq:'" + seq.getSequenceAsString()
-              + "', name:'" + seq.getName() + "', id:" + ++count + "});");
+      bjsAlignment.getSeqs().add(
+              new BioJsSeqPojo(String.valueOf(++count), seq.getName(), seq
+                      .getSequenceAsString()));
     }
+
+    String seqs = new JSONObject(bjsAlignment).getString("seqs");
     String bioJSTemplate = new String(
             readAllBytes(get("resources/templates/BioJSTemplate.txt")));
 
-    return bioJSTemplate.replaceAll("#sequenceData#", bioJsData.toString());
+    return bioJSTemplate.replaceAll("#sequenceData#", seqs);
   }
 
+  public static void main(String[] args) throws IOException
+  {
+    Document doc = Jsoup.parse(new String(
+            readAllBytes(get("resources/templates/BioJSTemplate.txt"))));
+
+    Element content = doc.getElementById("seqData");
+    System.out.println(content.val());
+  }
 
 }