package fr.openwide.core.imports.table.opencsv.model; import java.io.Serializable; import java.util.Arrays; import java.util.Iterator; import java.util.List; import com.google.common.collect.AbstractSequentialIterator; import com.google.common.collect.Lists; import fr.openwide.core.commons.util.functional.SerializableFunction; public class CsvTable implements Serializable, Iterable<CsvRow> { private static final long serialVersionUID = -4479121548776416896L; private final List<List<String>> rows; public CsvTable(List<String[]> rows) { super(); this.rows = Lists.transform(rows, new SerializableFunction<String[], List<String>>() { private static final long serialVersionUID = 4706021485040817605L; @Override public List<String> apply(String[] input) { return Arrays.asList(input); } }); } @Override public Iterator<CsvRow> iterator() { return new AbstractSequentialIterator<CsvRow>(getRow(0)) { @Override protected CsvRow computeNext(CsvRow previous) { return getRow(previous.getIndex() + 1); } }; } public List<List<String>> getContent() { return rows; } public CsvRow getRow(int index) { if (0 <= index && index < rows.size()) { return new CsvRow(this, index); } else { return null; } } // equals and hashcode defined as identity (==) }