public synchronized boolean consolidate ( ) throws IOException { if ( isTainted ( ) ) { // proceed with consolidation XSequentialEventBuffer nBuffer = new XSequentialEventBuffer ( buffer . getProvider ( ) , this . attributeMapSerializer ) ; int overflowIndex = 0 ; int fileBufferIndex = 0 ; for ( int i = 0 ; i < size ; i ++ ) { if ( overflowIndex < overflowSize && overflowIndices [ overflowIndex ] == i ) { nBuffer . append ( overflowEntries [ overflowIndex ] ) ; overflowIndex ++ ; } else { while ( holeFlags . get ( fileBufferIndex ) == true ) { fileBufferIndex ++ ; } nBuffer . append ( buffer . get ( fileBufferIndex ) ) ; fileBufferIndex ++ ; } } buffer . cleanup ( ) ; buffer = nBuffer ; overflowSize = 0 ; holeFlags . clear ( ) ; return true ; } else { return false ; } }
Consolidates this fast event list . Consolidation implies that all overflow and skipping data structures are freed and the buffered representation is brought completely in - line with the virtual current contents of the list .