/** * Gets a single field value from the row by header pattern. * <p> * This returns the value of the first column where the header matches the specified header pattern. * * @param headerPattern the header pattern to match * @return the trimmed field value, empty if not found */ public Optional<String> findField(Pattern headerPattern) { for (int i = 0; i < headers.size(); i++) { if (headerPattern.matcher(headers.get(i)).matches()) { return Optional.of(field(i)); } } return Optional.empty(); }
public void test_of_quotingWithEquals() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV4B), false); assertEquals(csvFile.rowCount(), 3); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "alpha"); assertEquals(csvFile.row(0).field(1), "be, \"at\", one"); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "alpha\",\"be\""); assertEquals(csvFile.row(1).field(1), "\"at\", one"); assertEquals(csvFile.row(2).fieldCount(), 2); assertEquals(csvFile.row(2).field(0), "r21"); assertEquals(csvFile.row(2).field(1), " r22 "); }
public void test_of_blank_row() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV3), false)) { assertEquals(csvFile.hasNext(), true); CsvRow row0 = csvFile.next(); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r11"); assertEquals(row0.field(1), "r12"); CsvRow row1 = csvFile.next(); assertEquals(row1.fieldCount(), 2); assertEquals(row1.field(0), "r21"); assertEquals(row1.field(1), "r22"); assertEquals(csvFile.hasNext(), false); } }
/** * Gets a single field value from the row by header pattern. * <p> * This returns the value of the first column where the header matches the specified header pattern. * * @param headerPattern the header pattern to match * @return the trimmed field value, empty * @throws IllegalArgumentException if the header is not found */ public String getField(Pattern headerPattern) { for (int i = 0; i < headers.size(); i++) { if (headerPattern.matcher(headers.get(i)).matches()) { return field(i); } } throw new IllegalArgumentException("Header pattern not found: '" + headerPattern + "'"); }
public void test_of_quoting() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV4), false); assertEquals(csvFile.rowCount(), 3); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "alpha"); assertEquals(csvFile.row(0).field(1), "be, \"at\", one"); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "alpha\",\"be\""); assertEquals(csvFile.row(1).field(1), "\"at\", one"); assertEquals(csvFile.row(2).fieldCount(), 2); assertEquals(csvFile.row(2).field(0), "r21"); assertEquals(csvFile.row(2).field(1), " r22 "); }
/** * Gets a single field value from the row by header. * <p> * This returns the value of the first column where the header matches the specified header. * Matching is case insensitive. * * @param header the column header * @return the trimmed field value, empty if not found */ public Optional<String> findField(String header) { Integer index = findIndex(header); return index == null ? Optional.empty() : Optional.of(field(index)); }
public void test_asStream_simple_with_header() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV1), true)) { ImmutableList<String> headers = csvFile.headers(); assertEquals(headers.size(), 2); assertEquals(headers.get(0), "h1"); assertEquals(headers.get(1), "h2"); List<CsvRow> rows = csvFile.asStream().collect(toList()); assertEquals(csvFile.hasNext(), false); assertEquals(rows.size(), 2); CsvRow row0 = rows.get(0); assertEquals(row0.headers(), headers); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r11"); assertEquals(row0.field(1), "r12"); CsvRow row1 = rows.get(1); assertEquals(row1.headers(), headers); assertEquals(row1.fieldCount(), 2); assertEquals(row1.field(0), "r21"); assertEquals(row1.field(1), "r22"); } }
/** * Gets a single field value from the row by header. * <p> * This returns the value of the first column where the header matches the specified header. * Matching is case insensitive. * * @param header the column header * @return the trimmed field value * @throws IllegalArgumentException if the header is not found */ public String getField(String header) { Integer index = findIndex(header); if (index == null) { throw new IllegalArgumentException("Header not found: '" + header + "'"); } return field(index); }
public void test_of_blank_row() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV3), false); assertEquals(csvFile.rowCount(), 2); assertEquals(csvFile.row(0).lineNumber(), 1); assertEquals(csvFile.row(1).lineNumber(), 3); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "r11"); assertEquals(csvFile.row(0).field(1), "r12"); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "r21"); assertEquals(csvFile.row(1).field(1), "r22"); }
public void test_of_short_data_row() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV6), true); assertEquals(csvFile.headers(), ImmutableList.of("a", "b", "c")); assertEquals(csvFile.row(0).getField("a"), "r11"); assertEquals(csvFile.row(0).getField("b"), ""); assertEquals(csvFile.row(0).getField("c"), ""); assertEquals(csvFile.row(0).field(0), "r11"); assertEquals(csvFile.row(0).field(1), ""); assertEquals(csvFile.row(0).field(2), ""); assertThrows(() -> csvFile.row(0).field(4), IndexOutOfBoundsException.class); assertEquals(csvFile.row(1).getField("a"), "r21"); assertEquals(csvFile.row(1).getField("b"), "r22"); assertEquals(csvFile.row(1).getField("c"), ""); }
public void test_of_headerComment() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV4), true)) { assertEquals(csvFile.hasNext(), true); CsvRow row0 = csvFile.next(); assertEquals(row0.lineNumber(), 3); assertEquals(csvFile.headers().size(), 2); assertEquals(csvFile.headers().get(0), "h1"); assertEquals(csvFile.headers().get(1), "h2"); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r1"); assertEquals(row0.field(1), "r2"); } }
public void test_nextBatch2() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV1), true)) { ImmutableList<String> headers = csvFile.headers(); assertEquals(headers.size(), 2); assertEquals(headers.get(0), "h1"); assertEquals(headers.get(1), "h2"); List<CsvRow> a = csvFile.nextBatch(3); assertEquals(a.size(), 2); CsvRow row0 = a.get(0); assertEquals(row0.headers(), headers); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r11"); assertEquals(row0.field(1), "r12"); CsvRow row1 = a.get(1); assertEquals(row1.headers(), headers); assertEquals(row1.fieldCount(), 2); assertEquals(row1.field(0), "r21"); assertEquals(row1.field(1), "r22"); List<CsvRow> d = csvFile.nextBatch(2); assertEquals(d.size(), 0); assertEquals(csvFile.hasNext(), false); assertEquals(csvFile.hasNext(), false); } }
public void test_of_comment_blank_no_header() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV2), false); assertEquals(csvFile.headers().size(), 0); assertEquals(csvFile.rowCount(), 2); assertEquals(csvFile.row(0).lineNumber(), 1); assertEquals(csvFile.row(1).lineNumber(), 5); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "h1"); assertEquals(csvFile.row(0).field(1), "h2"); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "r21"); assertEquals(csvFile.row(1).field(1), "r22"); }
public void test_of_comment_blank_no_header() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV2), false)) { assertEquals(csvFile.headers().size(), 0); assertEquals(csvFile.hasNext(), true); CsvRow row0 = csvFile.next(); assertEquals(row0.lineNumber(), 1); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "h1"); assertEquals(row0.field(1), "h2"); CsvRow row1 = csvFile.next(); assertEquals(row1.lineNumber(), 5); assertEquals(row1.fieldCount(), 2); assertEquals(row1.field(0), "r21"); assertEquals(row1.field(1), "r22"); assertEquals(csvFile.hasNext(), false); } }
public void test_of_comment_blank_with_header() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV2), true)) { ImmutableList<String> headers = csvFile.headers(); assertEquals(headers.size(), 2); assertEquals(headers.get(0), "h1"); assertEquals(headers.get(1), "h2"); assertEquals(csvFile.hasNext(), true); CsvRow row0 = csvFile.next(); assertEquals(row0.lineNumber(), 5); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r21"); assertEquals(row0.field(1), "r22"); assertEquals(csvFile.hasNext(), false); } }
public void test_nextBatch1() { try (CsvIterator csvFile = CsvIterator.of(CharSource.wrap(CSV1), true)) { ImmutableList<String> headers = csvFile.headers(); assertEquals(headers.size(), 2); assertEquals(headers.get(0), "h1"); assertEquals(headers.get(1), "h2"); List<CsvRow> a = csvFile.nextBatch(0); assertEquals(a.size(), 0); List<CsvRow> b = csvFile.nextBatch(1); assertEquals(b.size(), 1); CsvRow row0 = b.get(0); assertEquals(row0.headers(), headers); assertEquals(row0.fieldCount(), 2); assertEquals(row0.field(0), "r11"); assertEquals(row0.field(1), "r12"); List<CsvRow> c = csvFile.nextBatch(2); assertEquals(c.size(), 1); CsvRow row1 = c.get(0); assertEquals(row1.headers(), headers); assertEquals(row1.fieldCount(), 2); assertEquals(row1.field(0), "r21"); assertEquals(row1.field(1), "r22"); List<CsvRow> d = csvFile.nextBatch(2); assertEquals(d.size(), 0); assertEquals(csvFile.hasNext(), false); } }
public void test_of_headerComment() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV7), true); assertEquals(csvFile.rowCount(), 1); assertEquals(csvFile.row(0).lineNumber(), 3); assertEquals(csvFile.headers().size(), 2); assertEquals(csvFile.headers().get(0), "h1"); assertEquals(csvFile.headers().get(1), "h2"); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "r1"); assertEquals(csvFile.row(0).field(1), "r2"); }
public void test_of_comment_blank_with_header() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV2), true); ImmutableList<String> headers = csvFile.headers(); assertEquals(headers.size(), 2); assertEquals(headers.get(0), "h1"); assertEquals(headers.get(1), "h2"); assertEquals(csvFile.rows().size(), 1); assertEquals(csvFile.rowCount(), 1); assertEquals(csvFile.row(0).lineNumber(), 5); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "r21"); assertEquals(csvFile.row(0).field(1), "r22"); assertEquals(csvFile.rows().get(0), csvFile.row(0)); }
public void test_of_simple_no_header_tabs() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV1T), false, '\t'); assertEquals(csvFile.headers().size(), 0); assertEquals(csvFile.containsHeader("Foo"), false); assertEquals(csvFile.containsHeader(Pattern.compile("Foo")), false); assertEquals(csvFile.rowCount(), 3); assertEquals(csvFile.row(0).lineNumber(), 1); assertEquals(csvFile.row(1).lineNumber(), 2); assertEquals(csvFile.row(2).lineNumber(), 3); assertEquals(csvFile.row(0).headers().size(), 0); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "h1"); assertEquals(csvFile.row(0).field(1), "h2"); assertEquals(csvFile.row(1).headers().size(), 0); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "r11"); assertEquals(csvFile.row(1).field(1), "r12"); assertEquals(csvFile.row(2).headers().size(), 0); assertEquals(csvFile.row(2).fieldCount(), 2); assertEquals(csvFile.row(2).field(0), "r21"); assertEquals(csvFile.row(2).field(1), "r22"); }
public void test_of_simple_no_header() { CsvFile csvFile = CsvFile.of(CharSource.wrap(CSV1), false); assertEquals(csvFile.headers().size(), 0); assertEquals(csvFile.rowCount(), 4); assertEquals(csvFile.containsHeader("Foo"), false); assertEquals(csvFile.containsHeader(Pattern.compile("Foo")), false); assertEquals(csvFile.row(0).lineNumber(), 1); assertEquals(csvFile.row(1).lineNumber(), 2); assertEquals(csvFile.row(2).lineNumber(), 3); assertEquals(csvFile.row(3).lineNumber(), 4); assertEquals(csvFile.row(0).headers().size(), 0); assertEquals(csvFile.row(0).fieldCount(), 2); assertEquals(csvFile.row(0).field(0), "h1"); assertEquals(csvFile.row(0).field(1), "h2"); assertEquals(csvFile.row(1).headers().size(), 0); assertEquals(csvFile.row(1).fieldCount(), 2); assertEquals(csvFile.row(1).field(0), "r11"); assertEquals(csvFile.row(1).field(1), "r12"); assertEquals(csvFile.row(2).headers().size(), 0); assertEquals(csvFile.row(2).fieldCount(), 2); assertEquals(csvFile.row(2).field(0), "r21"); assertEquals(csvFile.row(2).field(1), "r22"); assertEquals(csvFile.row(0).subRow(0).fieldCount(), 2); assertEquals(csvFile.row(0).subRow(1).fieldCount(), 1); assertEquals(csvFile.row(0).subRow(2).fieldCount(), 0); }