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 Sun, 31 Jul 2016 10:19:09 GMT
Nice, thank you!

Gary Gregory <garydgregory@gmail.com> schrieb am So., 31. Juli 2016 um
01:25:

> Nope, not both, fixed as you suggested which matches the ticket title
> anyway.
>
> Gary
>
> On Sat, Jul 30, 2016 at 12:16 PM, Gary Gregory <garydgregory@gmail.com>
> wrote:
>
> > Sure, or provide both?
> >
> > Gary
> >
> > On Jul 30, 2016 11:13 AM, "Benedikt Ritter" <britter@apache.org> wrote:
> >
> >> 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)) {
> >> >
> >> >
> >>
> >
>
>
> --
> E-Mail: garydgregory@gmail.com | ggregory@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>

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