diff options
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils/blocks')
| -rw-r--r-- | base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java | 12 | ||||
| -rw-r--r-- | base/src/main/java/bjc/utils/ioutils/blocks/IteratorBlockReader.java | 52 |
2 files changed, 64 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java b/base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java index 16d50c0..2342c22 100644 --- a/base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java +++ b/base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java @@ -1,6 +1,7 @@ package bjc.utils.ioutils.blocks; import java.io.*; +import java.util.Iterator; /** Utility methods for constructing instances of {@link BlockReader} * @@ -59,4 +60,15 @@ public class BlockReaders { public static BlockReader serial(final BlockReader... readers) { return new SerialBlockReader(readers); } + + /** + * Create a block reader from an iterator of blocks. + * + * @param iter The iterator of blocks. + * + * @return A block reader which returns blocks from the given iterator. + */ + public static BlockReader fromIterator(final Iterator<Block> iter) { + return new IteratorBlockReader(iter); + } } diff --git a/base/src/main/java/bjc/utils/ioutils/blocks/IteratorBlockReader.java b/base/src/main/java/bjc/utils/ioutils/blocks/IteratorBlockReader.java new file mode 100644 index 0000000..de4a083 --- /dev/null +++ b/base/src/main/java/bjc/utils/ioutils/blocks/IteratorBlockReader.java @@ -0,0 +1,52 @@ +package bjc.utils.ioutils.blocks; + +import java.io.IOException; +import java.util.Iterator; + +/** + * BlockReader which produces blocks from an iterator + * + * @author bjcul + */ +public final class IteratorBlockReader implements BlockReader { + private final Iterator<Block> iter; + private Block currBlock; + private int blockCount = 0; + + /** + * Create a new block reader from an iterator. + * + * @param iter The iterator to get blocks from. + */ + public IteratorBlockReader(Iterator<Block> iter) { + this.iter = iter; + } + + @Override + public boolean nextBlock() { + if (!iter.hasNext()) return false; + currBlock = iter.next(); + blockCount++; + return true; + } + + @Override + public boolean hasNextBlock() { + return iter.hasNext(); + } + + @Override + public int getBlockCount() { + return blockCount; + } + + @Override + public Block getBlock() { + return currBlock; + } + + @Override + public void close() throws IOException { + // Nothing for us to really do + } +}
\ No newline at end of file |
