Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,24 @@ static void parse(final Readable readable, final ParseListener listener)
{
throw new IllegalArgumentException("readable must not be null");
}
FastqParserLineProcessor lineProcessor = new FastqParserLineProcessor(listener);
CharStreams.readLines(readable, lineProcessor);
if (lineProcessor.getState() == State.COMPLETE)
final FastqParserLineProcessor lineProcessor = new FastqParserLineProcessor(listener);
try
{
listener.complete();
lineProcessor.setState(State.DESCRIPTION);
CharStreams.readLines(readable, lineProcessor);

if (lineProcessor.getState() == State.COMPLETE)
{
listener.complete();
lineProcessor.setState(State.DESCRIPTION);
}
}
catch (IOException e)
{
throw new IOException("parse error at line " + lineProcessor.getLineNumber() + ", state " + lineProcessor.getState(), e);
}
if (lineProcessor.getState() != State.DESCRIPTION)
{
throw new IOException("truncated sequence"); // at line " + lineNumber);
throw new IOException("truncated sequence at line " + lineProcessor.getLineNumber());
}
}

Expand All @@ -70,6 +78,9 @@ private static class FastqParserLineProcessor implements LineProcessor<Object>
/** Parser state. */
private State state = State.DESCRIPTION;

/** Line number. */
private long lineNumber = 0;

/** Sequence length. */
private int sequenceLength = 0;

Expand Down Expand Up @@ -115,6 +126,16 @@ private void setState(final State state)
this.state = state;
}

/**
* Return the line number.
*
* @return the line number
*/
private long getLineNumber()
{
return lineNumber;
}

@Override
public Object getResult()
{
Expand All @@ -124,6 +145,8 @@ public Object getResult()
@Override
public boolean processLine(final String line) throws IOException
{
lineNumber++;

String sequence = null;
String quality = null;
switch (state)
Expand Down