private Boolean nucleotide;
// set once we have seen one block of interleaved data
- private boolean firstDataBlockRead = false;
+ private boolean seenAllSequences = false;
// this can be True, False or null (meaning we don't know yet)
private Boolean interleaved;
if (upperCased.startsWith(BANG + GENE.toUpperCase())
|| upperCased.startsWith(BANG + DOMAIN.toUpperCase()))
{
+ endDataBlock();
parseGeneOrDomain(dataLine);
}
else if (upperCased.startsWith(BANG + LABEL.toUpperCase()))
{
parseLabel(dataLine);
+ endDataBlock();
}
else
{
/*
* Blank line after processing some data...
*/
- endOfDataBlock();
+ endDataBlock();
}
dataLine = nextNonCommentLine();
}
/**
* Post-processing after reading one block of interleaved data
*/
- protected void endOfDataBlock()
+ protected void endDataBlock()
{
- this.firstDataBlockRead = true;
-
padAnnotations(labelAnnotations);
}
// and a placeholder for any SequenceFeature found
sequenceFeatures.put(currentId, new ArrayList<SequenceFeature>());
}
+ else
+ {
+ /*
+ * we are appending to a previously seen sequence; flag that we have seen
+ * all sequences
+ */
+ this.seenAllSequences = true;
+ }
return sb;
}
/*
* New sequence found in second or later data block - error.
*/
- if (this.firstDataBlockRead && !seqData.containsKey(seqId))
+ if (this.seenAllSequences && !seqData.containsKey(seqId))
{
throw new FileFormatException(
"Parse error: misplaced new sequence starting at " + dataLine);