package org.embulk.spi.util; import java.util.List; import java.util.ArrayList; import java.util.Iterator; import org.embulk.spi.Buffer; import org.embulk.spi.FileInput; public class ListFileInput implements FileInput { private Iterator<? extends Iterable<Buffer>> files; private Iterator<Buffer> currentBuffers; public ListFileInput(Iterable<? extends Iterable<Buffer>> files) { this.files = files.iterator(); } public boolean nextFile() { if (!files.hasNext()) { return false; } currentBuffers = files.next().iterator(); return true; } public Buffer poll() { if (currentBuffers == null) { throw new IllegalStateException("FileInput.nextFile is not called"); } if (!currentBuffers.hasNext()) { return null; } return currentBuffers.next(); } public void close() { do { while (true) { Buffer b = poll(); if (b == null) { break; } b.release(); } } while (nextFile()); } }