JAL-1641 fixed broken functionalities after refactor
[jalview.git] / src / jalview / io / HtmlFile.java
index 75e99a6..a4e9bf4 100644 (file)
 
 package jalview.io;
 
-import jalview.api.AlignViewControllerGuiI;
-import jalview.schemes.ColourSchemeI;
-
 import java.io.IOException;
+import java.io.StringReader;
 
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
-public class HtmlFile extends AlignFile
+import jalview.api.ComplexAlignFile;
+import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.SequenceI;
+import jalview.schemes.ColourSchemeI;
+
+public class HtmlFile extends AlignFile implements ComplexAlignFile
 {
   public static final String FILE_EXT = "html";
 
@@ -40,6 +43,10 @@ public class HtmlFile extends AlignFile
 
   private boolean showSeqFeatures;
 
+  private ColumnSelection columnSelection;
+
+  private SequenceI[] hiddenSequences;
+
   public HtmlFile()
   {
     super();
@@ -60,36 +67,38 @@ public class HtmlFile extends AlignFile
   {
     try
     {
-      StringBuilder htmlData = new StringBuilder();
-      String currentLine;
-      while ((currentLine = nextLine()) != null)
-      {
-        htmlData.append(currentLine);
+      Element content = null;
+      Document doc = null;
+      try {
+         StringBuilder htmlData = new StringBuilder();
+          String currentLine;
+          while ((currentLine = nextLine()) != null)
+          {
+            htmlData.append(currentLine);
+          }
+
+          doc = Jsoup.parse(htmlData.toString());
+      } catch (OutOfMemoryError oom) {
+         errormessage = "Not enough memory to process HTML document";
+         throw new IOException(errormessage);
       }
-
-      Document doc = Jsoup.parse(htmlData.toString());
-      Element content = doc.getElementById("seqData");
-      String alignmentJsonString = content.val();
-
-      JSONFile jsonFile = new JSONFile().parse(alignmentJsonString);
-      seqs = jsonFile.getSeqs();
-      seqGroups = jsonFile.getSeqGroups();
-      annotations = jsonFile.getAnnotations();
-      showSeqFeatures = jsonFile.isShowSeqFeatures();
-      colourScheme = jsonFile.getColourScheme();
+      content = doc.getElementById("seqData");
+      
+      JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val()));
+      this.seqs = jsonFile.getSeqs();
+      this.seqGroups = jsonFile.getSeqGroups();
+      this.annotations = jsonFile.getAnnotations();
+      this.showSeqFeatures = jsonFile.isShowSeqFeatures();
+      this.colourScheme = jsonFile.getColourScheme();
+      this.hiddenSequences = jsonFile.getHiddenSequences();
+      this.columnSelection = jsonFile.getColumnSelection();
     } catch (Exception e)
     {
-      e.printStackTrace();
+      errormessage = "Failed to extract data from HTML document.";
+      throw new IOException("Unexpected exception whilst extracting JSon from HTML.",e);
     }
   }
 
-  public void applySettingsToAlignFrame(AlignViewControllerGuiI af)
-  {
-    af.setShowSeqFeatures(isShowSeqFeatures());
-    af.changeColour(getColourScheme());
-    af.setMenusForViewport();
-  }
-
 
   @Override
   public String print()
@@ -118,4 +127,24 @@ public class HtmlFile extends AlignFile
     this.colourScheme = colourScheme;
   }
 
+  public ColumnSelection getColumnSelection()
+  {
+    return columnSelection;
+  }
+
+  public void setColumnSelection(ColumnSelection columnSelection)
+  {
+    this.columnSelection = columnSelection;
+  }
+
+  public SequenceI[] getHiddenSequences()
+  {
+    return hiddenSequences;
+  }
+
+  public void setHiddenSequences(SequenceI[] hiddenSequences)
+  {
+    this.hiddenSequences = hiddenSequences;
+  }
+
 }