in mavibot/src/main/java/org/apache/directory/mavibot/btree/memory/BulkDataSorter.java [167:240]
public boolean hasNext()
{
if ( closed )
{
throw new IllegalStateException( "No elements to read" );
}
Tuple<K, V> available = null;
for ( int i = 0; i < streams.length; i++ )
{
if ( heads[i] == null )
{
heads[i] = readerWriter.readUnsortedTuple( streams[i] );
}
if ( available == null )
{
available = heads[i];
candidatePos = i;
}
else
{
if ( ( available != null ) && ( heads[i] != null ) )
{
int comp = tupleComparator.compare( heads[i], available );
if ( comp <= 0 )
{
available = heads[i];
candidatePos = i;
}
}
}
}
heads[candidatePos] = null;
if ( available == null )
{
for ( int i = 0; i < streams.length; i++ )
{
if ( heads[i] != null )
{
available = heads[i];
heads[i] = readerWriter.readUnsortedTuple( streams[i] );
break;
}
}
}
if ( available != null )
{
candidate = available;
return true;
}
// finally close the streams
for ( DataInputStream in : streams )
{
try
{
in.close();
}
catch ( Exception e )
{
e.printStackTrace();
}
}
closed = true;
return false;
}