*/
public class AlignmentUtils
{
-
private static final int CODON_LENGTH = 3;
private static final String SEQUENCE_VARIANT = "sequence_variant:";
- private static final String ID = "ID";
+ /*
+ * the 'id' attribute is provided for variant features fetched from
+ * Ensembl using its REST service with JSON format
+ */
+ public static final String VARIANT_ID = "id";
/**
* A data model to hold the 'normal' base value at a position, and an optional
peptidePos, var.getSource());
StringBuilder attributes = new StringBuilder(32);
- String id = (String) var.variant.getValue(ID);
+ String id = (String) var.variant.getValue(VARIANT_ID);
if (id != null)
{
if (id.startsWith(SEQUENCE_VARIANT))
{
id = id.substring(SEQUENCE_VARIANT.length());
}
- sf.setValue(ID, id);
- attributes.append(ID).append("=").append(id);
+ sf.setValue(VARIANT_ID, id);
+ attributes.append(VARIANT_ID).append("=").append(id);
// TODO handle other species variants JAL-2064
StringBuilder link = new StringBuilder(32);
try
* @return
*/
@SuppressWarnings("unchecked")
-private SequenceI parseFeaturesJson(List<String> queries)
+ private SequenceI parseFeaturesJson(List<String> queries)
{
-
-
SequenceI seq = new Sequence("Dummy", "");
-
try
{
-
Iterator<Object> rvals = (Iterator<Object>) getJSON(null, queries, -1, MODE_ITERATOR, null);
if (rvals == null)
+ {
return null;
+ }
while (rvals.hasNext())
{
try
return seq;
}
-
-/**
- * Returns the first non-null attribute found (if any) as a string
+ /**
+ * Returns the first non-null attribute found (if any) as a string, formatted
+ * suitably for display as feature description or tooltip. Answers null if
+ * none of the attribute keys is present.
*
* @param obj
* @param keys
* @return
*/
+ @SuppressWarnings("unchecked")
protected String getFirstNotNull(Map<String, Object> obj, String... keys)
{
- String desc = null;
-
for (String key : keys)
{
Object val = obj.get(key);
if (val != null)
{
- String s = val.toString();
+ String s = val instanceof List<?>
+ ? JSONUtils.arrayToStringList((List<Object>) val)
+ : val.toString();
if (!s.isEmpty())
{
return s;
}
}
}
- return desc;
+ return null;
}
/**
*/
package jalview.ext.ensembl;
+import jalview.analysis.AlignmentUtils;
import jalview.bin.Cache;
import jalview.datamodel.DBRefSource;
import jalview.ws.seqfetcher.DbSourceProxyImpl;
protected static final String PARENT = "Parent";
- protected static final String JSON_ID = "id";
+ protected static final String JSON_ID = AlignmentUtils.VARIANT_ID; // "id";
protected static final String OBJECT_TYPE = "object_type";