picard.illumina.parser.fakers.BciFileFaker Maven / Gradle / Ivy
package picard.illumina.parser.fakers;
import htsjdk.samtools.util.CloserUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileChannel;
import java.util.List;
/**
* Created by jcarey on 3/14/14.
*/
public class BciFileFaker extends FileFaker {
@Override
protected void fakeFile(final ByteBuffer buffer) {
for (final Integer tile : tiles) {
buffer.putInt(tile);
buffer.putInt(1);
}
}
@Override
protected boolean addLeadingZeros() {
return false;
}
@Override
protected int bufferSize() {
return 8 * tiles.size();
}
public void fakeBciFile(final File bci, final List expectedTiles) throws IOException {
tiles = expectedTiles;
final FileOutputStream fileOutputStream = new FileOutputStream(bci);
final FileChannel channel = fileOutputStream.getChannel();
final ByteBuffer buffer = ByteBuffer.allocate(8 * expectedTiles.size());
buffer.order(ByteOrder.LITTLE_ENDIAN);
fakeFile(buffer);
buffer.flip();
channel.write(buffer);
channel.force(true);
CloserUtil.close(channel);
CloserUtil.close(fileOutputStream);
}
}