{
String val = av.getValue();
SubVals subVals = av.getSubVals();
- SequenceI seq = getSpecifiedSequence(af, subVals);
+ SequenceI seq = getSpecifiedSequence(af, avm, av);
if (seq == null)
{
// Could not find sequence from subId, let's assume the first
return true;
}
- private SequenceI getSpecifiedSequence(AlignFrame af, SubVals subId)
+ private SequenceI getSpecifiedSequence(AlignFrame af, ArgValuesMap avm,
+ ArgValue av)
{
- if (subId == null)
+ SubVals subVals = av.getSubVals();
+ ArgValue idAv = avm.getClosestNextArgValueOfArg(av, Arg.SEQID);
+ SequenceI seq = null;
+ if (subVals == null && idAv == null)
return null;
AlignmentI al = af.getCurrentView().getAlignment();
- if (subId.has("seqid"))
+ if (al == null)
+ return null;
+ if (subVals != null)
{
- return al.findName(subId.get("seqid"));
+ if (subVals.has("seqid"))
+ {
+ seq = al.findName(subVals.get("seqid"));
+ }
+ else if (-1 < subVals.getIndex()
+ && subVals.getIndex() < al.getSequences().size())
+ {
+ seq = al.getSequenceAt(subVals.getIndex());
+ }
}
- else if (-1 < subId.getIndex()
- && subId.getIndex() < al.getSequences().size())
+ else if (idAv != null)
{
- return al.getSequenceAt(subId.getIndex());
+ seq = al.findName(idAv.getValue());
}
- return null;
+ return seq;
}
// returns the first Arg value intended for the structure structFilename