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.ComplexAlignFile;
import jalview.api.FeatureRenderer;
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;
private FeatureRenderer fr;
- private JSONExportSettings jsonExportSettings;
-
private List<int[]> hiddenColumns;
private ColumnSelection columnSelection;
@Override
public void parse() throws IOException
{
- StringBuilder jsonStringBuilder = new StringBuilder();
- String currentLine;
- while ((currentLine = nextLine()) != null)
- {
- jsonStringBuilder.append(currentLine);
- }
- parse(jsonStringBuilder.toString());
+ parse(getReader());
}
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)
{
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
+ && getViewport().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
+ && getViewport().getExportSettings()
+ .isExportHiddenSequences())
+ {
+ jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
+ String.valueOf(hiddenSections[1]));
}
}
- if (jsonExportSettings.isExportAnnotations())
+ if (getViewport().getExportSettings().isExportAnnotations())
{
jsonAlignmentPojo
.setAlignAnnotation(annotationToJsonPojo(annotations));
}
- if (jsonExportSettings.isExportSequenceFeatures())
+ if (getViewport().getExportSettings().isExportFeatures())
{
jsonAlignmentPojo
.setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
}
- if (jsonExportSettings.isExportGroups() && seqGroups != null
+ if (getViewport().getExportSettings().isExportGroups()
+ && seqGroups != null
&& seqGroups.size() > 0)
{
for (SequenceGroup seqGrp : seqGroups)
return jsonOutput;
}
- public String[] exportHiddenSections()
+ public String[] getHiddenSections()
{
String[] hiddenSections = new String[2];
if (getViewport() == null)
}
@SuppressWarnings("unchecked")
- public JSONFile parse(String jsonAlignmentString)
+ public JSONFile parse(Reader jsonAlignmentString)
{
try
{
public void parseHiddenCols(JSONObject jvSettingsJson)
{
- // hiddenColumns = new ArrayList<int[]>();
String hiddenCols = (String) jvSettingsJson.get("hiddenCols");
if(hiddenCols != null && !hiddenCols.isEmpty()){
columnSelection = new ColumnSelection();
String[] rangeStrings = hiddenCols.split(";");
for(String rangeString : rangeStrings){
String[] range = rangeString.split("-");
- // hiddenColumns.add(new int[]
- // { Integer.valueOf(range[0]), Integer.valueOf(range[1]) });
columnSelection.hideColumns(Integer.valueOf(range[0]),
Integer.valueOf(range[1]));
}
String descripiton = (String) jsonFeature.get("description");
String seqRef = (String) jsonFeature.get("sequenceRef");
Float score = Float.valueOf(jsonFeature.get("score").toString());
- // Hashtable otherDetails = (Hashtable) jsonFeature
- // .get("otherDetails");
- // sequenceFeature.otherDetails = otherDetails;
Sequence seq = seqMap.get(seqRef);
SequenceFeature sequenceFeature = new SequenceFeature();
this.displayedFeatures = displayedFeatures;
}
- public JSONExportSettings getJsonExportSettings()
- {
- return jsonExportSettings;
- }
-
- public void setJsonExportSettings(JSONExportSettings jsonExportSettings)
- {
- this.jsonExportSettings = jsonExportSettings;
- }
-
public static String getJSONData(AlignViewportI av)
{