X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJSONFile.java;h=ce70ea5f94d27ab6b91b63b4bcf40c17c2928e7e;hb=4ed384b1f2f74dd70636f7a97f73cbc96600ae5c;hp=d2b8412803a06628d06a73331b6a4b7a315a74f9;hpb=1152ad2009cfc7bf521b6bcb556f6031bbe5b86a;p=jalview.git diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index d2b8412..ce70ea5 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -21,19 +21,7 @@ package jalview.io; -import java.awt.Color; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - -import jalview.api.AlignViewportI; +import jalview.api.AlignmentViewPanel; import jalview.api.ComplexAlignFile; import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; @@ -55,6 +43,19 @@ import jalview.json.binding.v1.SequencePojo; import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemeProperty; +import java.awt.Color; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + public class JSONFile extends AlignFile implements ComplexAlignFile { private ColourSchemeI colourScheme; @@ -79,8 +80,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile private FeatureRenderer fr; - private JSONExportSettings jsonExportSettings; - private List hiddenColumns; private ColumnSelection columnSelection; @@ -107,41 +106,16 @@ public class JSONFile extends AlignFile implements ComplexAlignFile @Override public void parse() throws IOException { - StringBuilder jsonStringBuilder = new StringBuilder(); - String currentLine; - while ((currentLine = nextLine()) != null) - { - jsonStringBuilder.append(currentLine); - } - parse(jsonStringBuilder.toString()); + parse(getReader()); } - @Override public String print() { String jsonOutput = null; try { - if (getJsonExportSettings() == null) - { - jsonExportSettings = new JSONExportSettings(); - jsonExportSettings.setExportAnnotations(true); - jsonExportSettings.setExportGroups(true); - jsonExportSettings.setExportJalviewSettings(true); - jsonExportSettings.setExportSequenceFeatures(true); - } - AlignmentPojo jsonAlignmentPojo = new AlignmentPojo(); - if (getViewport() != null) - { - globalColorScheme = ColourSchemeProperty - .getColourName(getViewport() - .getGlobalColourScheme()); - setDisplayedFeatures(getViewport().getFeaturesDisplayed()); - showSeqFeatures = getViewport().isShowSequenceFeatures(); - fr = getViewport().getFeatureRenderer(); - } int count = 0; for (SequenceI seq : seqs) @@ -159,44 +133,46 @@ public class JSONFile extends AlignFile implements ComplexAlignFile jsonAlignmentPojo.getSeqs().add(jsonSeqPojo); } - if (jsonExportSettings.isExportJalviewSettings()) + jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme); + jsonAlignmentPojo.getAppSettings().put("application", application); + jsonAlignmentPojo.getAppSettings().put("version", version); + jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl); + jsonAlignmentPojo.getAppSettings().put("showSeqFeatures", + String.valueOf(showSeqFeatures)); + + String[] hiddenSections = getHiddenSections(); + if (hiddenSections != null) { - jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme); - jsonAlignmentPojo.getAppSettings().put("application", application); - jsonAlignmentPojo.getAppSettings().put("version", version); - jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl); - jsonAlignmentPojo.getAppSettings().put("showSeqFeatures", - String.valueOf(showSeqFeatures)); - - String[] hiddenSections = exportHiddenSections(); - if (hiddenSections != null && getViewport().isIncludeHiddenRegion()) + if (hiddenSections[0] != null + && getExportSettings() + .isExportHiddenColumns()) { - if (hiddenSections[0] != null) - { - jsonAlignmentPojo.getAppSettings().put("hiddenCols", - String.valueOf(hiddenSections[0])); - } - if (hiddenSections[1] != null) - { - jsonAlignmentPojo.getAppSettings().put("hiddenSeqs", - String.valueOf(hiddenSections[1])); - } + jsonAlignmentPojo.getAppSettings().put("hiddenCols", + String.valueOf(hiddenSections[0])); + } + if (hiddenSections[1] != null + && getExportSettings() + .isExportHiddenSequences()) + { + jsonAlignmentPojo.getAppSettings().put("hiddenSeqs", + String.valueOf(hiddenSections[1])); } } - if (jsonExportSettings.isExportAnnotations()) + if (getExportSettings().isExportAnnotations()) { jsonAlignmentPojo .setAlignAnnotation(annotationToJsonPojo(annotations)); } - if (jsonExportSettings.isExportSequenceFeatures()) + if (getExportSettings().isExportFeatures()) { jsonAlignmentPojo .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr)); } - if (jsonExportSettings.isExportGroups() && seqGroups != null + if (getExportSettings().isExportGroups() + && seqGroups != null && seqGroups.size() > 0) { for (SequenceGroup seqGrp : seqGroups) @@ -231,7 +207,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile return jsonOutput; } - public String[] exportHiddenSections() + public String[] getHiddenSections() { String[] hiddenSections = new String[2]; if (getViewport() == null) @@ -363,7 +339,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } @SuppressWarnings("unchecked") - public JSONFile parse(String jsonAlignmentString) + public JSONFile parse(Reader jsonAlignmentString) { try { @@ -614,42 +590,48 @@ public class JSONFile extends AlignFile implements ComplexAlignFile this.displayedFeatures = displayedFeatures; } - public JSONExportSettings getJsonExportSettings() - { - return jsonExportSettings; - } - - public void setJsonExportSettings(JSONExportSettings jsonExportSettings) + @Override + public void configureForView(AlignmentViewPanel avpanel) { - this.jsonExportSettings = jsonExportSettings; - } - + super.configureForView(avpanel); + if (isExporting()) + { + setViewport(avpanel.getAlignViewport()); + seqGroups = avpanel.getAlignment().getGroups(); + setDisplayedFeatures(getViewport().getFeaturesDisplayed()); + fr = avpanel.cloneFeatureRenderer(); - public static String getJSONData(AlignViewportI av) - { - JSONFile jsonFile = new JSONFile(); - jsonFile.setViewport(av); - jsonFile.seqGroups = av.getAlignment().getGroups(); - jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed()); + for (SequenceI seq : getViewport().getAlignment().getSequences()) + { + seqs.add(seq); + } - for (SequenceI seq : av.getAlignment().getSequences()) - { - jsonFile.seqs.add(seq); - } - - // Add non auto calculated annotation to AlignFile - for (AlignmentAnnotation annot : av.getAlignment() - .getAlignmentAnnotation()) - { - if (annot != null && !annot.autoCalculated) + // Add non auto calculated annotation to AlignFile + for (AlignmentAnnotation annot : getViewport().getAlignment() + .getAlignmentAnnotation()) { - if (annot.label.equals("PDB.CATempFactor")) + if (annot != null && !annot.autoCalculated) { - continue; + if (annot.label.equals("PDB.CATempFactor")) + { + continue; + } + annotations.add(annot); } - jsonFile.annotations.add(annot); } + + globalColorScheme = ColourSchemeProperty.getColourName(getViewport() + .getGlobalColourScheme()); + setDisplayedFeatures(getViewport().getFeaturesDisplayed()); + showSeqFeatures = getViewport().isShowSequenceFeatures(); } + } + + + public static String getJSONData(AlignmentViewPanel av) + { + JSONFile jsonFile = new JSONFile(); + jsonFile.configureForView(av); String jsonString = jsonFile.print(); return jsonString; }