package com.metservice.kanban.csv; import static com.metservice.kanban.utils.DateUtils.parseIsoDate; import static java.lang.Integer.parseInt; import org.joda.time.LocalDate; public class CsvRow { public static final int INTEGER_DEFAULT = 0; private static final boolean BOOLEAN_DEFAULT = false; private static final String STRING_DEFAULT = ""; private final CsvColumnNames columnNames; private final String[] cells; public CsvRow(CsvColumnNames columnNames, String[] cells) { this.columnNames = columnNames; this.cells = cells; } public LocalDate getDate(String columnName) { if (!columnNames.hasColumn(columnName)) { return null; } String stringValue = getString(columnName); return stringValue == null ? null : parseIsoDate(stringValue); } public int getInt(String columnName) { if (!columnNames.hasColumn(columnName)) { return INTEGER_DEFAULT; } return parseInt(getString(columnName)); } public String getString(String columnName) { if (!columnNames.hasColumn(columnName)) { return STRING_DEFAULT; } int index = columnNames.getColumnIndex(columnName); String unparsedString = cells[index]; return unparsedString.isEmpty() ? null : unparsedString; } public void setString(String columnName, String string) { int index = columnNames.getColumnIndex(columnName); cells[index] = string; } public Boolean getBoolean(String columnName) { if (!columnNames.hasColumn(columnName)) { return BOOLEAN_DEFAULT; } return Boolean.parseBoolean(getString(columnName)); } }