package ldbc.snb.datagen.test.csv; import org.apache.commons.collections.iterators.CollatingIterator; import java.io.File; import java.util.Iterator; /** * Created by aprat on 22/12/15. */ public class ColumnStream<T> extends Column<T>{ protected File file = null; protected int index = 0; public ColumnStream(Parser<T> parser, File file, int index, int startIndex) { super(parser, file, index, startIndex); } public static class ColumnStreamIterator<T> implements Iterator<T> { protected CsvFileReader reader = null; protected int index = 0; protected ColumnStream<T> columnStream = null; public ColumnStreamIterator( ColumnStream<T> columnStream, CsvFileReader reader, int index){ this.reader = reader; this.index = index; this.columnStream = columnStream; } public void advance(int startIndex) { for(int i = 0; i < startIndex; ++i) { next(); } } public boolean hasNext() { return reader.hasNext(); } public T next() { String [] line = reader.next(); return columnStream.parser.parse(line[index]); } public void remove() { } } public Iterator<T> iterator( ) { try { CsvFileReader reader = new CsvFileReader(file); ColumnStreamIterator<T> iter = new ColumnStreamIterator<T>(this,reader,index); iter.advance(startIndex); return iter; } catch(Exception e) { System.err.println("Error opening csv reader"); } return null; } }