diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-10 21:28:40 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-10 21:28:40 -0300 |
| commit | 4c624c06bae3080a5dc8d92a78c75cf1f84a3970 (patch) | |
| tree | 004f74165a6f4e9caea377864e16e936bdf121d2 /BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java | |
| parent | 034ba698cc03f2c831b9e4603f55f4a55f955c80 (diff) | |
Add more BlockReaders
Adds a new type of block reader, the ToggleBlockReader. This switches
between two different sources every block.
Also, make sure all of the BlockReaders keep their own block count.
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java new file mode 100644 index 0000000..0be90f6 --- /dev/null +++ b/BJC-Utils2/src/main/java/bjc/utils/ioutils/blocks/ToggledBlockReader.java @@ -0,0 +1,57 @@ +package bjc.utils.ioutils.blocks; + +import java.io.IOException; + +import bjc.utils.date.BooleanToggle; + +public class ToggledBlockReader { + private BlockReader leftSource; + private BlockReader rightSource; + + /* + * We choose the left source when this is true. + */ + private BooleanToggle leftToggle; + + private int blockNo; + + public ToggledBlockReader(BlockReader left, BlockReader right) { + leftSource = left; + rightSource = right; + + blockNo = 0; + + leftToggle = new BooleanToggle(); + } + + @Override + public boolean hasNextBlock() { + if(leftToggle.peek()) return left.hasNextBlock(); + else return right.hasNextBlock(); + } + + @Override + public Block getBlock() { + if(leftToggle.peek()) return left.getBlock(); + else return right.getBlock(); + } + + @Override + public boolean nextBlock() { + boolean succ; + + if(leftToggle.get()) { + succ = leftSource.nextBlock(); + } else { + succ = rightSource.nextBlock(); + } + + if(succ) blockNo += 1; + return succ; + } + + @Override + public int getBlockCount() { + return blockNo; + } +} |
