You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by st...@apache.org on 2018/02/09 14:21:59 UTC

[34/34] commons-csv git commit: Merge branch 'master' into CSV-216

Merge branch 'master' into CSV-216


Project: http://git-wip-us.apache.org/repos/asf/commons-csv/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-csv/commit/d482fd28
Tree: http://git-wip-us.apache.org/repos/asf/commons-csv/tree/d482fd28
Diff: http://git-wip-us.apache.org/repos/asf/commons-csv/diff/d482fd28

Branch: refs/heads/CSV-216
Commit: d482fd289ce446afb73a332cf52802fb16d0ddce
Parents: 41101f1 eede739
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Feb 9 14:19:48 2018 +0000
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Feb 9 14:19:48 2018 +0000

----------------------------------------------------------------------
 .travis.yml                                     |   1 +
 CONTRIBUTING.md                                 |  40 +-
 NOTICE.txt                                      |   2 +-
 README.md                                       |  22 +-
 RELEASE-NOTES.txt                               |  57 ++
 pom.xml                                         |  30 +-
 src/changes/changes.xml                         |   8 +-
 .../java/org/apache/commons/csv/CSVFormat.java  | 210 +++--
 .../java/org/apache/commons/csv/CSVParser.java  |   5 +-
 .../java/org/apache/commons/csv/CSVPrinter.java |  17 +
 src/main/java/org/apache/commons/csv/Lexer.java |   2 +-
 .../java/org/apache/commons/csv/QuoteMode.java  |  11 +-
 src/site/site.xml                               |   1 +
 src/site/xdoc/download_csv.xml                  |  26 +-
 src/site/xdoc/index.xml                         |   6 +-
 .../org/apache/commons/csv/CSVFormatTest.java   | 836 ++++++++++---------
 .../org/apache/commons/csv/CSVParserTest.java   |   2 +-
 .../org/apache/commons/csv/CSVPrinterTest.java  | 108 ++-
 .../commons/csv/issues/JiraCsv198Test.java      |   6 +-
 .../commons/csv/issues/JiraCsv203Test.java      |  42 +-
 .../commons/csv/issues/JiraCsv213Test.java      |   6 +-
 21 files changed, 837 insertions(+), 601 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-csv/blob/d482fd28/src/main/java/org/apache/commons/csv/CSVFormat.java
----------------------------------------------------------------------
diff --cc src/main/java/org/apache/commons/csv/CSVFormat.java
index bdac8e3,10f766d..e53e3b6
--- a/src/main/java/org/apache/commons/csv/CSVFormat.java
+++ b/src/main/java/org/apache/commons/csv/CSVFormat.java
@@@ -242,7 -242,7 +242,7 @@@ public final class CSVFormat implement
       * @see Predefined#Default
       */
      public static final CSVFormat DEFAULT = new CSVFormat(COMMA, DOUBLE_QUOTE_CHAR, null, null, null, false, true, CRLF,
--            null, null, null, false, false, false, false, false, false);
++            null, null, null, false, false, false, false, false, false, false);
  
      /**
       * Excel file format (using a comma as the value delimiter). Note that the actual value delimiter used by Excel is
@@@ -537,7 -537,7 +537,7 @@@
       */
      public static CSVFormat newFormat(final char delimiter) {
          return new CSVFormat(delimiter, null, null, null, null, false, false, null, null, null, null, false, false,
--                false, false, false, false);
++                false, false, false, false, false);
      }
  
      /**
@@@ -621,16 -621,16 +623,19 @@@
       *            TODO
       * @param trailingDelimiter
       *            TODO
 +     * @param mutableRecords TODO
+      * @param autoFlush
++     * 	TODO
++     * 
       * @throws IllegalArgumentException
       *             if the delimiter is a line break character
       */
      private CSVFormat(final char delimiter, final Character quoteChar, final QuoteMode quoteMode,
 -                      final Character commentStart, final Character escape, final boolean ignoreSurroundingSpaces,
 -                      final boolean ignoreEmptyLines, final String recordSeparator, final String nullString,
 -                      final Object[] headerComments, final String[] header, final boolean skipHeaderRecord,
 -                      final boolean allowMissingColumnNames, final boolean ignoreHeaderCase, final boolean trim,
 -                      final boolean trailingDelimiter, final boolean autoFlush) {
 +            final Character commentStart, final Character escape, final boolean ignoreSurroundingSpaces,
 +            final boolean ignoreEmptyLines, final String recordSeparator, final String nullString,
 +            final Object[] headerComments, final String[] header, final boolean skipHeaderRecord,
 +            final boolean allowMissingColumnNames, final boolean ignoreHeaderCase, final boolean trim,
-             final boolean trailingDelimiter, boolean mutableRecords) {
++            final boolean trailingDelimiter, final boolean autoFlush, final boolean mutableRecords) {
          this.delimiter = delimiter;
          this.quoteCharacter = quoteChar;
          this.quoteMode = quoteMode;
@@@ -647,7 -647,7 +652,8 @@@
          this.ignoreHeaderCase = ignoreHeaderCase;
          this.trailingDelimiter = trailingDelimiter;
          this.trim = trim;
 +        this.mutableRecords = mutableRecords;
+         this.autoFlush = autoFlush;
          validate();
      }
  
@@@ -1439,7 -1442,22 +1452,22 @@@
      public CSVFormat withAllowMissingColumnNames(final boolean allowMissingColumnNames) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
+     }
+ 
+     /**
+      * Returns a new {@code CSVFormat} with whether to flush on close.
+      *
+      * @param autoFlush
+      *            whether to flush on close.
+      *
+      * @return A new CSVFormat that is equal to this but with the specified autoFlush setting.
+      * @since 1.6
+      */
+     public CSVFormat withAutoFlush(final boolean autoFlush) {
+         return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
+             ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
 -            skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++            skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1474,7 -1492,7 +1502,7 @@@
          }
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1492,7 -1510,7 +1520,7 @@@
          }
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1523,7 -1541,7 +1551,7 @@@
          }
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escape, ignoreSurroundingSpaces,
                  ignoreEmptyLines, recordSeparator, nullString, headerComments, header, skipHeaderRecord,
-                 allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1678,7 -1696,7 +1706,7 @@@
      public CSVFormat withHeader(final String... header) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1699,7 -1717,7 +1727,7 @@@
      public CSVFormat withHeaderComments(final Object... headerComments) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1724,7 -1742,7 +1752,7 @@@
      public CSVFormat withIgnoreEmptyLines(final boolean ignoreEmptyLines) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1750,7 -1768,7 +1778,7 @@@
      public CSVFormat withIgnoreHeaderCase(final boolean ignoreHeaderCase) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1775,25 -1793,7 +1803,25 @@@
      public CSVFormat withIgnoreSurroundingSpaces(final boolean ignoreSurroundingSpaces) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
 +    }
 +
 +    /**
 +     * Returns a new {@code CSVFormat} with whether to generate CSVRecord or CSVMutableRecord.
 +     * <ul>
 +     * <li><strong>Reading:</strong> Whether to generate CSVRecord or CSVMutableRecord.</li>
 +     * <li><strong>Writing:</strong> No effect.</li>
 +     * </ul>
 +     *
 +     * @param mutableRecords
 +     *            whether to generate CSVRecord or CSVMutableRecord
 +     *
 +     * @return A new CSVFormat that is equal to this but with setting to generate CSVRecord or CSVMutableRecord.
 +     */
 +    public CSVFormat withMutableRecords(final boolean mutableRecords) {
 +        return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
 +                ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1812,7 -1812,7 +1840,7 @@@
      public CSVFormat withNullString(final String nullString) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1843,7 -1843,7 +1871,7 @@@
          }
          return new CSVFormat(delimiter, quoteChar, quoteMode, commentMarker, escapeCharacter, ignoreSurroundingSpaces,
                  ignoreEmptyLines, recordSeparator, nullString, headerComments, header, skipHeaderRecord,
-                 allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1857,7 -1857,7 +1885,7 @@@
      public CSVFormat withQuoteMode(final QuoteMode quoteModePolicy) {
          return new CSVFormat(delimiter, quoteCharacter, quoteModePolicy, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1895,7 -1895,7 +1923,7 @@@
      public CSVFormat withRecordSeparator(final String recordSeparator) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1922,7 -1922,23 +1950,23 @@@
      public CSVFormat withSkipHeaderRecord(final boolean skipHeaderRecord) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
+     }
+ 
+     /**
+      * Returns a new {@code CSVFormat} with the record separator of the format set to the operating system's line
+      * separator string, typically CR+LF on Windows and LF on Linux.
+      *
+      * <p>
+      * <strong>Note:</strong> This setting is only used during printing and does not affect parsing. Parsing currently
+      * only works for inputs with '\n', '\r' and "\r\n"
+      * </p>
+      *
 -     * @return A new CSVFormat that is equal to this but with the operating system's line separator stringr
++     * @return A new CSVFormat that is equal to this but with the operating system's line separator string
+      * @since 1.6
+      */
+     public CSVFormat withSystemRecordSeparator() {
+         return withRecordSeparator(System.getProperty("line.separator"));
      }
  
      /**
@@@ -1947,7 -1963,7 +1991,7 @@@
      public CSVFormat withTrailingDelimiter(final boolean trailingDelimiter) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
  
      /**
@@@ -1972,7 -1988,6 +2016,7 @@@
      public CSVFormat withTrim(final boolean trim) {
          return new CSVFormat(delimiter, quoteCharacter, quoteMode, commentMarker, escapeCharacter,
                  ignoreSurroundingSpaces, ignoreEmptyLines, recordSeparator, nullString, headerComments, header,
-                 skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, mutableRecords);
 -                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush);
++                skipHeaderRecord, allowMissingColumnNames, ignoreHeaderCase, trim, trailingDelimiter, autoFlush, mutableRecords);
      }
 +
  }

http://git-wip-us.apache.org/repos/asf/commons-csv/blob/d482fd28/src/main/java/org/apache/commons/csv/CSVParser.java
----------------------------------------------------------------------