X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHtmlFile.java;h=92562785557cc57492dace2cab363cadbc99913f;hb=08c7bee16c16563cc7cec7ea4d336b3e0c4c937a;hp=a4e9bf4bb15b024746f52691ca8d39086f73e811;hpb=263ae64817c7604150961e1c9c76554936ab994b;p=jalview.git diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index a4e9bf4..9256278 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -21,6 +21,12 @@ package jalview.io; +import jalview.api.ComplexAlignFile; +import jalview.api.FeatureSettingsModelI; +import jalview.api.FeaturesDisplayedI; +import jalview.datamodel.HiddenColumns; +import jalview.datamodel.SequenceI; + import java.io.IOException; import java.io.StringReader; @@ -28,25 +34,22 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; -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"; public static final String FILE_DESC = "HTML"; - private ColourSchemeI colourScheme; + private String globalColourScheme; private boolean showSeqFeatures; - private ColumnSelection columnSelection; + private HiddenColumns hiddenColumns; private SequenceI[] hiddenSequences; + private FeaturesDisplayedI displayedFeatures; + public HtmlFile() { super(); @@ -57,56 +60,73 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile super(source); } - public HtmlFile(String inFile, String type) throws IOException + public HtmlFile(String inFile, DataSourceType sourceType) + throws IOException { - super(inFile, type); + super(inFile, sourceType); } @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); + } + 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); } - content = doc.getElementById("seqData"); - - JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val())); + 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.hiddenColumns = jsonFile.getHiddenColumns(); + 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() + public String print(SequenceI[] sqs, boolean jvsuffix) { throw new UnsupportedOperationException( "Print method of HtmlFile is not supported!"); } + @Override public boolean isShowSeqFeatures() { return showSeqFeatures; @@ -117,26 +137,29 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile this.showSeqFeatures = showSeqFeatures; } - public ColourSchemeI getColourScheme() + @Override + 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() + @Override + public HiddenColumns getHiddenColumns() { - return columnSelection; + return hiddenColumns; } - public void setColumnSelection(ColumnSelection columnSelection) + public void setHiddenColumns(HiddenColumns hidden) { - this.columnSelection = columnSelection; + this.hiddenColumns = hidden; } + @Override public SequenceI[] getHiddenSequences() { return hiddenSequences; @@ -147,4 +170,25 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile this.hiddenSequences = hiddenSequences; } + @Override + public FeaturesDisplayedI getDisplayedFeatures() + { + return displayedFeatures; + } + + /** + * Returns a descriptor for suitable feature display settings with + * + */ + @Override + public FeatureSettingsModelI getFeatureColourScheme() + { + return new PDBFeatureSettings(); + } + }