X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHtmlFile.java;h=73d30dcbc46d0a5bdbe6f0f11ddc05431555caed;hb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;hp=0f5cd5515d96a7c66387d7598ce8fb0271529113;hpb=3f3c6c3a2b99fee2e726d18302af1b3320331212;p=jalview.git diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index 0f5cd55..73d30dc 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -25,7 +25,6 @@ import jalview.api.ComplexAlignFile; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.ColumnSelection; import jalview.datamodel.SequenceI; -import jalview.schemes.ColourSchemeI; import java.io.IOException; import java.io.StringReader; @@ -40,7 +39,7 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile public static final String FILE_DESC = "HTML"; - private ColourSchemeI colourScheme; + private String globalColourScheme; private boolean showSeqFeatures; @@ -68,42 +67,56 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile @Override public void parse() throws IOException { + Element content = null; + Document doc = null; try { - 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); + StringBuilder htmlData = new StringBuilder(); + String currentLine; + while ((currentLine = nextLine()) != null) + { + htmlData.append(currentLine); } - content = doc.getElementById("seqData"); - - JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val())); + doc = Jsoup.parse(htmlData.toString()); + } catch (OutOfMemoryError oom) + { + errormessage = "Not enough memory to process HTML document"; + throw new IOException(errormessage); + } + + try + { + boolean contentFromDiv = true; + // search for BioJSON data in div element with id seqData + content = doc.select("div[id=seqData]").first(); + if (content == null) + { + contentFromDiv = false; + // search for BioJSON data in input element with id seqData + content = doc.getElementById("seqData"); + } + + if (content == null) + { + errormessage = "The html document is not embedded with BioJSON data"; + throw new IOException(errormessage); + } + JSONFile jsonFile = new JSONFile().parse(new StringReader( + contentFromDiv ? content.text() : content.val())); this.seqs = jsonFile.getSeqs(); this.seqGroups = jsonFile.getSeqGroups(); this.annotations = jsonFile.getAnnotations(); this.showSeqFeatures = jsonFile.isShowSeqFeatures(); - this.colourScheme = jsonFile.getColourScheme(); + this.globalColourScheme = jsonFile.getGlobalColourScheme(); this.hiddenSequences = jsonFile.getHiddenSequences(); this.columnSelection = jsonFile.getColumnSelection(); this.displayedFeatures = jsonFile.getDisplayedFeatures(); } catch (Exception e) { - errormessage = "Failed to extract data from HTML document."; - throw new IOException("Unexpected exception whilst extracting JSon from HTML.",e); + throw e; } } - @Override public String print() { @@ -121,14 +134,14 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile this.showSeqFeatures = showSeqFeatures; } - public ColourSchemeI getColourScheme() + public String getGlobalColourScheme() { - return colourScheme; + return globalColourScheme; } - public void setColourScheme(ColourSchemeI colourScheme) + public void setColourScheme(String globalColourScheme) { - this.colourScheme = colourScheme; + this.globalColourScheme = globalColourScheme; } public ColumnSelection getColumnSelection()