package jalview.io;
-import jalview.api.AlignExportSettingI;
+import jalview.api.AlignExportSettingsI;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.api.ComplexAlignFile;
import jalview.api.FeatureSettingsModelI;
import jalview.api.FeaturesDisplayedI;
import jalview.bin.BuildDetails;
+import jalview.datamodel.AlignExportSettingsAdapter;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
import jalview.schemes.ResidueColourScheme;
import jalview.util.ColorUtils;
import jalview.util.Format;
+import jalview.util.JSONUtils;
import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
import java.awt.Color;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
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 static String version = new BuildDetails().getVersion();
- private String webstartUrl = "http://www.jalview.org/services/launchApp";
+ private String webstartUrl = "https://www.jalview.org/services/launchApp";
private String application = "Jalview";
try
{
AlignmentPojo jsonAlignmentPojo = new AlignmentPojo();
- AlignExportSettingI exportSettings = getExportSettings();
+ AlignExportSettingsI exportSettings = getExportSettings();
- // if no export settings were supplied use the following with all values
- // defaulting to true
+ /*
+ * if no export settings were supplied, provide an 'export all' setting
+ */
if (exportSettings == null)
{
- exportSettings = new AlignExportSettingI()
- {
- @Override
- public boolean isExportHiddenSequences()
- {
- return true;
- }
-
- @Override
- public boolean isExportHiddenColumns()
- {
- return true;
- }
-
- @Override
- public boolean isExportGroups()
- {
- return true;
- }
-
- @Override
- public boolean isExportFeatures()
- {
- return true;
- }
-
- @Override
- public boolean isExportAnnotations()
- {
- return true;
- }
-
- @Override
- public boolean isCancelled()
- {
- return false;
- }
- };
+ exportSettings = new AlignExportSettingsAdapter(true);
}
int count = 0;
jsonAlignmentPojo.getSeqGroups().add(seqGrpPojo);
}
}
- org.json.JSONObject generatedJSon = new org.json.JSONObject(
- jsonAlignmentPojo);
- jsonOutput = generatedJSon.toString();
+
+ jsonOutput = JSONUtils.stringify(jsonAlignmentPojo);
return jsonOutput.replaceAll("xstart", "xStart").replaceAll("xend",
"xEnd");
} catch (Exception e)
/*
* get all features currently visible (and any non-positional features)
*/
- List<SequenceFeature> seqFeatures = seq.getFeatures().getAllFeatures(
- visibleFeatureTypes);
+ List<SequenceFeature> seqFeatures = seq.getFeatures()
+ .getAllFeatures(visibleFeatureTypes);
for (SequenceFeature sf : seqFeatures)
{
SequenceFeaturesPojo jsonFeature = new SequenceFeaturesPojo(
String.valueOf(seq.hashCode()));
- String featureColour = (fr == null) ? null : Format
- .getHexString(finder.findFeatureColour(Color.white, seq,
- seq.findIndex(sf.getBegin())));
+ String featureColour = (fr == null) ? null
+ : Format.getHexString(finder.findFeatureColour(Color.white,
+ seq, seq.findIndex(sf.getBegin())));
int xStart = sf.getBegin() == 0 ? 0
: seq.findIndex(sf.getBegin()) - 1;
int xEnd = sf.getEnd() == 0 ? 0 : seq.findIndex(sf.getEnd());
.setSecondaryStructure(annotation.secondaryStructure);
String displayChar = annotation.displayCharacter == null ? null
: annotation.displayCharacter;
- // System.out.println("--------------------->[" + displayChar + "]");
+ // jalview.bin.Console.outPrintln("--------------------->[" + displayChar + "]");
annotationPojo.setDisplayCharacter(displayChar);
if (annotation.colour != null)
{
{
try
{
- JSONParser jsonParser = new JSONParser();
- JSONObject alignmentJsonObj = (JSONObject) jsonParser
+ Map<String, Object> alignmentJsonObj = (Map<String, Object>) JSONUtils
.parse(jsonAlignmentString);
- JSONArray seqJsonArray = (JSONArray) alignmentJsonObj.get("seqs");
- JSONArray alAnnotJsonArray = (JSONArray) alignmentJsonObj
+ List<Object> seqJsonArray = (List<Object>) alignmentJsonObj
+ .get("seqs");
+ List<Object> alAnnotJsonArray = (List<Object>) alignmentJsonObj
.get("alignAnnotation");
- JSONArray jsonSeqArray = (JSONArray) alignmentJsonObj
+ List<Object> jsonSeqArray = (List<Object>) alignmentJsonObj
.get("seqFeatures");
- JSONArray seqGrpJsonArray = (JSONArray) alignmentJsonObj
+ List<Object> seqGrpJsonArray = (List<Object>) alignmentJsonObj
.get("seqGroups");
- JSONObject jvSettingsJsonObj = (JSONObject) alignmentJsonObj
+ Map<String, Object> jvSettingsJsonObj = (Map<String, Object>) alignmentJsonObj
.get("appSettings");
if (jvSettingsJsonObj != null)
hiddenSequences = new ArrayList<>();
seqMap = new Hashtable<>();
- for (Iterator<JSONObject> sequenceIter = seqJsonArray
+ for (Iterator<Object> sequenceIter = seqJsonArray
.iterator(); sequenceIter.hasNext();)
{
- JSONObject sequence = sequenceIter.next();
+ Map<String, Object> sequence = (Map<String, Object>) sequenceIter
+ .next();
String sequcenceString = sequence.get("seq").toString();
String sequenceName = sequence.get("name").toString();
String seqUniqueId = sequence.get("id").toString();
parseFeatures(jsonSeqArray);
- for (Iterator<JSONObject> seqGrpIter = seqGrpJsonArray
+ for (Iterator<Object> seqGrpIter = seqGrpJsonArray
.iterator(); seqGrpIter.hasNext();)
{
- JSONObject seqGrpObj = seqGrpIter.next();
+ Map<String, Object> seqGrpObj = (Map<String, Object>) seqGrpIter
+ .next();
String grpName = seqGrpObj.get("groupName").toString();
String colourScheme = seqGrpObj.get("colourScheme").toString();
String description = (seqGrpObj.get("description") == null) ? null
int startRes = Integer
.valueOf(seqGrpObj.get("startRes").toString());
int endRes = Integer.valueOf(seqGrpObj.get("endRes").toString());
- JSONArray sequenceRefs = (JSONArray) seqGrpObj.get("sequenceRefs");
+ List<Object> sequenceRefs = (List<Object>) seqGrpObj
+ .get("sequenceRefs");
ArrayList<SequenceI> grpSeqs = new ArrayList<>();
if (sequenceRefs.size() > 0)
{
- Iterator<String> seqHashIter = sequenceRefs.iterator();
+ Iterator<Object> seqHashIter = sequenceRefs.iterator();
while (seqHashIter.hasNext())
{
- String seqHash = seqHashIter.next();
- Sequence sequence = seqMap.get(seqHash);
+ Sequence sequence = seqMap.get(seqHashIter.next());
if (sequence != null)
{
grpSeqs.add(sequence);
}
- for (Iterator<JSONObject> alAnnotIter = alAnnotJsonArray
+ for (Iterator<Object> alAnnotIter = alAnnotJsonArray
.iterator(); alAnnotIter.hasNext();)
{
- JSONObject alAnnot = alAnnotIter.next();
- JSONArray annotJsonArray = (JSONArray) alAnnot.get("annotations");
+ Map<String, Object> alAnnot = (Map<String, Object>) alAnnotIter
+ .next();
+ List<Object> annotJsonArray = (List<Object>) alAnnot
+ .get("annotations");
Annotation[] annotations = new Annotation[annotJsonArray.size()];
int count = 0;
- for (Iterator<JSONObject> annotIter = annotJsonArray
+ for (Iterator<Object> annotIter = annotJsonArray
.iterator(); annotIter.hasNext();)
{
- JSONObject annot = annotIter.next();
+ Map<String, Object> annot = (Map<String, Object>) annotIter
+ .next();
if (annot == null)
{
annotations[count] = null;
alignAnnot.graph = (alAnnot.get("graphType") == null) ? 0
: Integer.valueOf(alAnnot.get("graphType").toString());
- JSONObject diplaySettings = (JSONObject) alAnnot
+ Map<String, Object> diplaySettings = (Map<String, Object>) alAnnot
.get("annotationSettings");
if (diplaySettings != null)
{
return this;
}
- public void parseHiddenSeqRefsAsList(JSONObject jvSettingsJson)
+ public void parseHiddenSeqRefsAsList(Map<String, Object> jvSettingsJson)
{
hiddenSeqRefs = new ArrayList<>();
String hiddenSeqs = (String) jvSettingsJson.get("hiddenSeqs");
if (hiddenSeqs != null && !hiddenSeqs.isEmpty())
{
String[] seqRefs = hiddenSeqs.split(";");
- for (String seqRef : seqRefs)
+ for (int i = 0, n = seqRefs.length; i < n; i++)
{
- hiddenSeqRefs.add(seqRef);
+ hiddenSeqRefs.add(seqRefs[i]);
}
}
}
- public void parseHiddenCols(JSONObject jvSettingsJson)
+ public void parseHiddenCols(Map<String, Object> jvSettingsJson)
{
String hiddenCols = (String) jvSettingsJson.get("hiddenCols");
if (hiddenCols != null && !hiddenCols.isEmpty())
{
hiddenColumns = new HiddenColumns();
String[] rangeStrings = hiddenCols.split(";");
- for (String rangeString : rangeStrings)
+ for (int i = 0, n = rangeStrings.length; i < n; i++)
{
- String[] range = rangeString.split("-");
+ String[] range = rangeStrings[i].split("-");
hiddenColumns.hideColumns(Integer.valueOf(range[0]),
Integer.valueOf(range[1]));
}
}
@SuppressWarnings("unchecked")
- private void parseFeatures(JSONArray jsonSeqFeatures)
+ private void parseFeatures(List<Object> jsonSeqFeatures)
{
if (jsonSeqFeatures != null)
{
displayedFeatures = new FeaturesDisplayed();
- for (Iterator<JSONObject> seqFeatureItr = jsonSeqFeatures
- .iterator(); seqFeatureItr.hasNext();)
+ for (Object o : jsonSeqFeatures)
{
- JSONObject jsonFeature = seqFeatureItr.next();
+ Map<String, Object> jsonFeature = (Map<String, Object>) o;
Long begin = (Long) jsonFeature.get("xStart");
Long end = (Long) jsonFeature.get("xEnd");
String type = (String) jsonFeature.get("type");
/*
* begin/end of 0 is for a non-positional feature
*/
- int featureBegin = begin.intValue() == 0 ? 0 : seq
- .findPosition(begin.intValue());
- int featureEnd = end.intValue() == 0 ? 0 : seq.findPosition(end
- .intValue()) - 1;
+ int featureBegin = begin.intValue() == 0 ? 0
+ : seq.findPosition(begin.intValue());
+ int featureEnd = end.intValue() == 0 ? 0
+ : seq.findPosition(end.intValue()) - 1;
SequenceFeature sequenceFeature = new SequenceFeature(type,
description, featureBegin, featureEnd, score, featureGrp);
- JSONArray linksJsonArray = (JSONArray) jsonFeature.get("links");
+ List<Object> linksJsonArray = (List<Object>) jsonFeature
+ .get("links");
if (linksJsonArray != null && linksJsonArray.size() > 0)
{
- Iterator<String> linkList = linksJsonArray.iterator();
+ Iterator<Object> linkList = linksJsonArray.iterator();
while (linkList.hasNext())
{
- String link = linkList.next();
- sequenceFeature.addLink(link);
+ sequenceFeature.addLink((String) linkList.next());
}
}