commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benedikt Ritter <brit...@apache.org>
Subject Re: commons-csv git commit: [CSV-189] CSVParser: Add factory method accepting InputStream.
Date Sat, 30 Jul 2016 18:13:03 GMT
I think it would be better to use a Charset object as parameter instead of
a String.

WDYT?

<ggregory@apache.org> schrieb am Sa., 30. Juli 2016 um 19:57:

> Repository: commons-csv
> Updated Branches:
>   refs/heads/master 0d7c984c6 -> ac46f73b2
>
>
> [CSV-189] CSVParser: Add factory method accepting InputStream.
>
> Project: http://git-wip-us.apache.org/repos/asf/commons-csv/repo
> Commit: http://git-wip-us.apache.org/repos/asf/commons-csv/commit/ac46f73b
> Tree: http://git-wip-us.apache.org/repos/asf/commons-csv/tree/ac46f73b
> Diff: http://git-wip-us.apache.org/repos/asf/commons-csv/diff/ac46f73b
>
> Branch: refs/heads/master
> Commit: ac46f73b259412122680f217020ad473dc6e8781
> Parents: 0d7c984
> Author: Gary Gregory <ggregory@apache.org>
> Authored: Sat Jul 30 10:57:13 2016 -0700
> Committer: Gary Gregory <ggregory@apache.org>
> Committed: Sat Jul 30 10:57:13 2016 -0700
>
> ----------------------------------------------------------------------
>  src/changes/changes.xml                         |  1 +
>  .../java/org/apache/commons/csv/CSVParser.java  | 62 +++++++++++++++++++-
>  .../org/apache/commons/csv/CSVParserTest.java   | 34 ++++++++++-
>  3 files changed, 92 insertions(+), 5 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/commons-csv/blob/ac46f73b/src/changes/changes.xml
> ----------------------------------------------------------------------
> diff --git a/src/changes/changes.xml b/src/changes/changes.xml
> index 4960ea6..a8e9a75 100644
> --- a/src/changes/changes.xml
> +++ b/src/changes/changes.xml
> @@ -40,6 +40,7 @@
>    <body>
>      <release version="1.5" date="2016-MM-DD" description="Bug fix
> release">
>        <action issue="CSV-187" type="update" dev="ggregory" due-to="Gary
> Gregory">Update platform requirement from Java 6 to 7.</action>
> +      <action issue="CSV-189" type="add" dev="ggregory" due-to="Peter
> Holzwarth, Gary Gregory">CSVParser: Add factory method accepting
> InputStream.</action>
>        <action issue="CSV-???" type="add" dev="ggregory" due-to="Gary
> Gregory">Add convenience API CSVFormat.print(File, Charset)</action>
>        <action issue="CSV-???" type="add" dev="ggregory" due-to="Gary
> Gregory">Add convenience API CSVFormat.print(Path, Charset)</action>
>      </release>
>
>
> http://git-wip-us.apache.org/repos/asf/commons-csv/blob/ac46f73b/src/main/java/org/apache/commons/csv/CSVParser.java
> ----------------------------------------------------------------------
> diff --git a/src/main/java/org/apache/commons/csv/CSVParser.java
> b/src/main/java/org/apache/commons/csv/CSVParser.java
> index dc1684c..c718521 100644
> --- a/src/main/java/org/apache/commons/csv/CSVParser.java
> +++ b/src/main/java/org/apache/commons/csv/CSVParser.java
> @@ -17,13 +17,17 @@
>
>  package org.apache.commons.csv;
>
> +import static org.apache.commons.csv.Token.Type.TOKEN;
> +
>  import java.io.Closeable;
>  import java.io.File;
>  import java.io.FileInputStream;
>  import java.io.IOException;
> +import java.io.InputStream;
>  import java.io.InputStreamReader;
>  import java.io.Reader;
>  import java.io.StringReader;
> +import java.io.UnsupportedEncodingException;
>  import java.net.URL;
>  import java.nio.charset.Charset;
>  import java.util.ArrayList;
> @@ -35,8 +39,6 @@ import java.util.Map;
>  import java.util.NoSuchElementException;
>  import java.util.TreeMap;
>
> -import static org.apache.commons.csv.Token.Type.*;
> -
>  /**
>   * Parses CSV files according to the specified format.
>   *
> @@ -133,6 +135,62 @@ import static org.apache.commons.csv.Token.Type.*;
>  public final class CSVParser implements Iterable<CSVRecord>, Closeable {
>
>      /**
> +     * Customized CSV parser using the given {@link CSVFormat}
> +     *
> +     * <p>
> +     * If you do not read all records from the given {@code reader}, you
> should
> +     * call {@link #close()} on the parser, unless you close the {@code
> reader}.
> +     * </p>
> +     *
> +     * @param reader
> +     *            a Reader containing CSV-formatted input. Must not be
> null.
> +     * @param charsetName
> +     *            The name of a supported {@link java.nio.charset.Charset
> +     *            </code>charset<code>}
> +     * @param format
> +     *            the CSVFormat used for CSV parsing. Must not be null.
> +     * @throws IllegalArgumentException
> +     *             If the parameters of the format are inconsistent or if
> either
> +     *             reader or format are null.
> +     * @throws  UnsupportedEncodingException
> +     *             If the named charset is not supported
> +     * @throws IOException
> +     *             If there is a problem reading the header or skipping
> the
> +     *             first record
> +     * @since 1.5
> +     */
> +    @SuppressWarnings("resource")
> +    public static CSVParser parse(final InputStream inputStream, final
> String charset, final CSVFormat format) throws IOException {
> +        Assertions.notNull(inputStream, "inputStream");
> +        Assertions.notNull(format, "format");
> +        return parse(new InputStreamReader(inputStream, charset), format);
> +    }
> +
> +    /**
> +     * Customized CSV parser using the given {@link CSVFormat}
> +     *
> +     * <p>
> +     * If you do not read all records from the given {@code reader}, you
> should
> +     * call {@link #close()} on the parser, unless you close the {@code
> reader}.
> +     * </p>
> +     *
> +     * @param reader
> +     *            a Reader containing CSV-formatted input. Must not be
> null.
> +     * @param format
> +     *            the CSVFormat used for CSV parsing. Must not be null.
> +     * @throws IllegalArgumentException
> +     *             If the parameters of the format are inconsistent or if
> either
> +     *             reader or format are null.
> +     * @throws IOException
> +     *             If there is a problem reading the header or skipping
> the
> +     *             first record
> +     * @since 1.5
> +     */
> +    public static CSVParser parse(Reader reader, final CSVFormat format)
> throws IOException {
> +        return new CSVParser(reader, format);
> +    }
> +
> +    /**
>       * Creates a parser for the given {@link File}.
>       *
>       * <p><strong>Note:</strong> This method internally creates a
> FileReader using
>
>
> http://git-wip-us.apache.org/repos/asf/commons-csv/blob/ac46f73b/src/test/java/org/apache/commons/csv/CSVParserTest.java
> ----------------------------------------------------------------------
> diff --git a/src/test/java/org/apache/commons/csv/CSVParserTest.java
> b/src/test/java/org/apache/commons/csv/CSVParserTest.java
> index 021279c..6fc8186 100644
> --- a/src/test/java/org/apache/commons/csv/CSVParserTest.java
> +++ b/src/test/java/org/apache/commons/csv/CSVParserTest.java
> @@ -71,6 +71,11 @@ public class CSVParserTest {
>      private static final String[][] RESULT = { { "a", "b", "c", "d" }, {
> "a", "b", "1 2" }, { "foo baar", "b", "" },
>              { "foo\n,,\n\",,\n\"", "d", "e" } };
>
> +    private BOMInputStream createBOMInputStream(String resource) throws
> IOException {
> +        final URL url =
> ClassLoader.getSystemClassLoader().getResource(resource);
> +        return new BOMInputStream(url.openStream());
> +    }
> +
>      @Test
>      public void testBackslashEscaping() throws IOException {
>
> @@ -172,9 +177,8 @@ public class CSVParserTest {
>      }
>
>      @Test
> -    public void testBOMInputStream() throws IOException {
> -        final URL url =
> ClassLoader.getSystemClassLoader().getResource("CSVFileParser/bom.csv");
> -        try (final Reader reader = new InputStreamReader(new
> BOMInputStream(url.openStream()), "UTF-8");
> +    public void testBOMInputStream_ParserWithReader() throws IOException {
> +        try (final Reader reader = new
> InputStreamReader(createBOMInputStream("CSVFileParser/bom.csv"), "UTF-8");
>                  final CSVParser parser = new CSVParser(reader,
> CSVFormat.EXCEL.withHeader())) {
>              for (final CSVRecord record : parser) {
>                  final String string = record.get("Date");
> @@ -185,6 +189,30 @@ public class CSVParserTest {
>      }
>
>      @Test
> +    public void testBOMInputStream_parseWithReader() throws IOException {
> +        try (final Reader reader = new
> InputStreamReader(createBOMInputStream("CSVFileParser/bom.csv"), "UTF-8");
> +                final CSVParser parser = CSVParser.parse(reader,
> CSVFormat.EXCEL.withHeader())) {
> +            for (final CSVRecord record : parser) {
> +                final String string = record.get("Date");
> +                Assert.assertNotNull(string);
> +                // System.out.println("date: " + record.get("Date"));
> +            }
> +        }
> +    }
> +
> +    @Test
> +    public void testBOMInputStream_ParserWithInputStream() throws
> IOException {
> +        try (final BOMInputStream inputStream =
> createBOMInputStream("CSVFileParser/bom.csv");
> +                final CSVParser parser = CSVParser.parse(inputStream,
> "UTF-8", CSVFormat.EXCEL.withHeader())) {
> +            for (final CSVRecord record : parser) {
> +                final String string = record.get("Date");
> +                Assert.assertNotNull(string);
> +                // System.out.println("date: " + record.get("Date"));
> +            }
> +        }
> +    }
> +
> +    @Test
>      public void testCarriageReturnEndings() throws IOException {
>          final String code = "foo\rbaar,\rhello,world\r,kanu";
>          try (final CSVParser parser = CSVParser.parse(code,
> CSVFormat.DEFAULT)) {
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message