class CSVRow {

    public String parse(T csvColumn) {
        String header = csvColumn.name();
        String value = lineByHeader.get(header);

        if (!csvColumn.allowMissingColumn()) {
            Preconditions.checkNotNull(value, "Missing column " + header);
        }

        if (!csvColumn.isNullable()) {
            Preconditions.checkState(
                    !value.equals(""),
                    header + " should not be null");
        }

        return value;
    }

    public  CSVRow(ImmutableMap<String, String> lineByHeader);

}