package jalview.io; import jalview.gui.AlignFrame; import jalview.schemes.ColourSchemeI; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class HtmlFile extends AlignFile { // public static final String FILE_EXT = "html"; // // public static final String FILE_DESC = "HTML"; private ColourSchemeI cs; public HtmlFile() { super(); } public HtmlFile(FileParse source) throws IOException { super(source); } public HtmlFile(String inFile, String type) throws IOException { super(inFile, type); } @SuppressWarnings("unchecked") @Override public void parse() throws IOException { try { StringBuilder htmlData = new StringBuilder(); String currentLine; while ((currentLine = nextLine()) != null) { htmlData.append(currentLine); } Document doc = Jsoup.parse(htmlData.toString()); Element content = doc.getElementById("seqData"); String alignmentJsonString = content.val(); new JSONFile().parse(alignmentJsonString); // JSONParser jsonParser = new JSONParser(); // JSONObject alignmentJsonObj = (JSONObject) jsonParser // .parse(alignmentJsonString); // JSONArray seqJsonArray = (JSONArray) alignmentJsonObj.get("seqs"); // String bioJsColourScheme = (String) alignmentJsonObj // .get("globalColorScheme"); // cs = getJalviewColorScheme(bioJsColourScheme); // // for (Iterator sequenceIter = seqJsonArray.iterator(); // sequenceIter // .hasNext();) // { // JSONObject sequence = sequenceIter.next(); // String sequcenceString = sequence.get("seq").toString(); // Sequence seq = new Sequence(sequence.get("name").toString(), // sequcenceString, Integer.valueOf(sequence.get("start") // .toString()), Integer.valueOf(sequence.get("end") // .toString())); // // JSONArray jsonSeqArray = (JSONArray) sequence.get("features"); // SequenceFeature[] retrievedSeqFeatures = getJalviewSequenceFeatures( // jsonSeqArray, seq); // if (retrievedSeqFeatures != null) // { // seq.setSequenceFeatures(retrievedSeqFeatures); // } // seqs.add(seq); // // } } catch (Exception e) { e.printStackTrace(); } } // public SequenceFeature[] getJalviewSequenceFeatures( // JSONArray jsonSeqFeatures, Sequence seq) // { // SequenceFeature[] seqFeatures = null; // int count = 0; // if (jsonSeqFeatures != null) // { // seqFeatures = new SequenceFeature[jsonSeqFeatures.size()]; // for (@SuppressWarnings("unchecked") // Iterator seqFeatureItr = jsonSeqFeatures.iterator(); // seqFeatureItr // .hasNext();) // { // // SequenceFeature sequenceFeature = new SequenceFeature(); // JSONObject jsonFeature = seqFeatureItr.next(); // Long begin = (Long) jsonFeature.get("xStart"); // Long end = (Long) jsonFeature.get("xEnd"); // String type = (String) jsonFeature.get("text"); // // String color = (String) jsonFeature.get("fillColor"); // // sequenceFeature.setBegin(seq.findPosition(begin.intValue())); // sequenceFeature.setEnd(seq.findPosition(end.intValue()) - 1); // sequenceFeature.setType(type); // seqFeatures[count++] = sequenceFeature; // } // } // return seqFeatures; // } public void LoadAlignmentFeatures(AlignFrame af) { af.setShowSeqFeatures(true); af.changeColour(cs); af.setMenusForViewport(); } // private ColourSchemeI getJalviewColorScheme(String bioJsColourSchemeName) // { // ColourSchemeI jalviewColor = null; // for (JalviewBioJsColorSchemeMapper cs : JalviewBioJsColorSchemeMapper // .values()) // { // if (cs.getBioJsName().equals(bioJsColourSchemeName)) // { // jalviewColor = cs.getJvColourScheme(); // break; // } // } // return jalviewColor; // } @Override public String print() { throw new UnsupportedOperationException( "Print method of HtmlFile not yet supported!"); } }