package fr.openwide.core.imports.table.opencsv.model; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkPositionIndex; import java.io.Serializable; import java.util.Iterator; import java.util.List; import com.google.common.collect.AbstractSequentialIterator; public class CsvRow implements Serializable, Iterable<CsvCell> { private static final long serialVersionUID = -6092290249182587998L; private final CsvTable sheet; private final int index; public CsvRow(CsvTable sheet, int index) { super(); checkNotNull(sheet); checkPositionIndex(index, sheet.getContent().size()); this.sheet = sheet; this.index = index; } @Override public Iterator<CsvCell> iterator() { return new AbstractSequentialIterator<CsvCell>(getCell(0)) { @Override protected CsvCell computeNext(CsvCell previous) { return getCell(previous.getIndex() + 1); } }; } public CsvTable getSheet() { return sheet; } public int getIndex() { return index; } public List<String> getContent() { return sheet.getContent().get(index); } public CsvCell getCell(int index) { List<String> content = getContent(); if (0 <= index && index < content.size()) { return new CsvCell(this, index); } else { return null; } } }