X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHtmlFile.java;h=0d0fae97077c0fc08fd1c74a480e811000f0d1f2;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=d507362c8cc5188a35eb805977099ee81f3da351;hpb=7ce1382b998c007a78c9b33a3dc331e966eebc4b;p=jalview.git diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index d507362..0d0fae9 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -1,15 +1,40 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ + package jalview.io; -import jalview.gui.AlignFrame; +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; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -public class HtmlFile extends AlignFile +public class HtmlFile extends AlignFile implements ComplexAlignFile { public static final String FILE_EXT = "html"; @@ -19,6 +44,12 @@ public class HtmlFile extends AlignFile private boolean showSeqFeatures; + private ColumnSelection columnSelection; + + private SequenceI[] hiddenSequences; + + private FeaturesDisplayedI displayedFeatures; + public HtmlFile() { super(); @@ -37,6 +68,8 @@ public class HtmlFile extends AlignFile @Override public void parse() throws IOException { + Element content = null; + Document doc = null; try { StringBuilder htmlData = new StringBuilder(); @@ -45,31 +78,46 @@ public class HtmlFile extends AlignFile { 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(); + 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"); + } - JSONFile jsonFile = new JSONFile().parse(alignmentJsonString); - seqs = jsonFile.seqs; - seqGroups = jsonFile.seqGroups; - annotations = jsonFile.annotations; - showSeqFeatures = jsonFile.isShowSeqFeatures(); - colourScheme = jsonFile.getColourScheme(); + 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.hiddenSequences = jsonFile.getHiddenSequences(); + this.columnSelection = jsonFile.getColumnSelection(); + this.displayedFeatures = jsonFile.getDisplayedFeatures(); } catch (Exception e) { - e.printStackTrace(); + throw e; } } - public void applySettingsToAlignFrame(AlignFrame af) - { - af.setShowSeqFeatures(isShowSeqFeatures()); - af.changeColour(getColourScheme()); - af.setMenusForViewport(); - } - - @Override public String print() { @@ -97,4 +145,30 @@ 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; + } + + @Override + public FeaturesDisplayedI getDisplayedFeatures() + { + return displayedFeatures; + } + }