summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/ioutils
diff options
context:
space:
mode:
authorBen Culkin <scorpress@gmail.com>2022-08-16 23:04:07 -0400
committerBen Culkin <scorpress@gmail.com>2022-08-16 23:04:07 -0400
commit05bb1067b348f43108fd04b968dc53fc338373fb (patch)
tree0abd83efa1b2e2a563cdb162ce1b5303b5ef05e7 /base/src/main/java/bjc/utils/ioutils
parent5c5f049917745f487264948aa5663ca64681f510 (diff)
Update a few things
Diffstat (limited to 'base/src/main/java/bjc/utils/ioutils')
-rw-r--r--base/src/main/java/bjc/utils/ioutils/blocks/BlockReaders.java12
-rw-r--r--base/src/main/java/bjc/utils/ioutils/blocks/IteratorBlockReader.java52
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