From e58c9b0c6d453c75810eb08cb2651769fccf7f8a Mon Sep 17 00:00:00 2001 From: tcofoegbu Date: Tue, 18 Aug 2015 13:22:36 +0100 Subject: [PATCH] JAL-1835 made BioJSON embedding to html exports configurable, and trapped import of html files without BioJSON --- src/jalview/io/AppletFormatAdapter.java | 6 ++++- src/jalview/io/HtmlFile.java | 42 ++++++++++++++++++------------- src/jalview/io/HtmlSvgOutput.java | 12 +++++---- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/jalview/io/AppletFormatAdapter.java b/src/jalview/io/AppletFormatAdapter.java index 02de02e..7dc263b 100755 --- a/src/jalview/io/AppletFormatAdapter.java +++ b/src/jalview/io/AppletFormatAdapter.java @@ -29,6 +29,7 @@ import jalview.datamodel.AlignmentView; import jalview.util.MessageManager; import java.io.File; +import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -343,7 +344,10 @@ public class AppletFormatAdapter ex.printStackTrace(); } } - + if (format.equalsIgnoreCase("HTML")) + { + throw new IOException(e.getMessage()); + } // If we get to this stage, the format was not supported throw new java.io.IOException(SUPPORTED_FORMATS); } diff --git a/src/jalview/io/HtmlFile.java b/src/jalview/io/HtmlFile.java index 0f5cd55..4805b8e 100644 --- a/src/jalview/io/HtmlFile.java +++ b/src/jalview/io/HtmlFile.java @@ -68,26 +68,33 @@ 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); } + doc = Jsoup.parse(htmlData.toString()); + } catch (OutOfMemoryError oom) + { + errormessage = "Not enough memory to process HTML document"; + throw new IOException(errormessage); + } + + try + { content = doc.getElementById("seqData"); - - JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val())); + if (content == null) + { + errormessage = "The html document is not embedded with BioJSON data"; + throw new IOException(errormessage); + } + JSONFile jsonFile = new JSONFile().parse(new StringReader(content + .val())); this.seqs = jsonFile.getSeqs(); this.seqGroups = jsonFile.getSeqGroups(); this.annotations = jsonFile.getAnnotations(); @@ -98,8 +105,7 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile 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; } } diff --git a/src/jalview/io/HtmlSvgOutput.java b/src/jalview/io/HtmlSvgOutput.java index 1eb86b7..7fcf629 100644 --- a/src/jalview/io/HtmlSvgOutput.java +++ b/src/jalview/io/HtmlSvgOutput.java @@ -97,22 +97,24 @@ public class HtmlSvgOutput String titleSvgData = g1.getSVGDocument(); String alignSvgData = g2.getSVGDocument(); - + String jsonData = null; + boolean isEmbbedBioJSON = Boolean.valueOf(jalview.bin.Cache + .getDefault("EXPORT_EMBBED_BIOJSON", "true")); + if (isEmbbedBioJSON) + { AlignmentExportData exportData = ap.alignFrame.getAlignmentForExport( JSONFile.FILE_DESC, av); if (exportData.getSettings().isCancelled()) { return; } - String jsonData = new FormatAdapter(ap, exportData.getSettings()) + jsonData = new FormatAdapter(ap, exportData.getSettings()) .formatSequences(JSONFile.FILE_DESC, exportData .getAlignment(), exportData.getOmitHidden(), exportData.getStartEndPostions(), ap .getAlignViewport().getColumnSelection()); - - // String jsonData = JSONFile.getJSONData(ap); + } String htmlData = getHtml(titleSvgData, alignSvgData, jsonData); - FileOutputStream out = new FileOutputStream(file); out.write(htmlData.getBytes()); out.flush(); -- 1.7.10.2