You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2014/06/10 00:21:23 UTC

svn commit: r1601517 - in /commons/proper/csv/trunk/src: changes/changes.xml main/java/org/apache/commons/csv/CSVFormat.java main/java/org/apache/commons/csv/CSVPrinter.java test/java/org/apache/commons/csv/CSVPrinterTest.java

Author: ggregory
Date: Mon Jun  9 22:21:22 2014
New Revision: 1601517

URL: http://svn.apache.org/r1601517
Log:
<action issue="CSV-120" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat#withHeader doesn't work with CSVPrinter</action>

Modified:
    commons/proper/csv/trunk/src/changes/changes.xml
    commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
    commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
    commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java

Modified: commons/proper/csv/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/changes/changes.xml?rev=1601517&r1=1601516&r2=1601517&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/changes/changes.xml (original)
+++ commons/proper/csv/trunk/src/changes/changes.xml Mon Jun  9 22:21:22 2014
@@ -39,7 +39,8 @@
   </properties>
   <body>
 
-    <release version="1.0" date="TBD" description="First release">
+    <release version="1.0" date="TBD" description="First release">    
+      <action issue="CSV-120" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat#withHeader doesn't work with CSVPrinter</action>
       <action issue="CSV-119" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat is missing a print(...) method</action>
       <action issue="CSV-118" type="fix" dev="ggregory" due-to="Enrique Lara">CSVRecord.toMap() throws NPE on formats with no
         headers.</action>

Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java?rev=1601517&r1=1601516&r2=1601517&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java Mon Jun  9 22:21:22 2014
@@ -605,8 +605,10 @@ public final class CSVFormat implements 
      * @param out
      *        the output
      * @return a printer to an output
+     * @throws IOException
+     *         thrown if the optional header cannot be printed.
      */
-    public CSVPrinter print(final Appendable out) {
+    public CSVPrinter print(final Appendable out) throws IOException {
         return new CSVPrinter(out, this);
     }
 

Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java?rev=1601517&r1=1601516&r2=1601517&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java (original)
+++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVPrinter.java Mon Jun  9 22:21:22 2014
@@ -45,24 +45,31 @@ public final class CSVPrinter implements
     /**
      * Creates a printer that will print values to the given stream following the CSVFormat.
      * <p>
-     * Currently, only a pure encapsulation format or a pure escaping format is supported. Hybrid formats
-     * (encapsulation and escaping with a different character) are not supported.
+     * Currently, only a pure encapsulation format or a pure escaping format is supported. Hybrid formats (encapsulation
+     * and escaping with a different character) are not supported.
      * </p>
-     *
+     * 
      * @param out
-     *            stream to which to print. Must not be null.
+     *        stream to which to print. Must not be null.
      * @param format
-     *            the CSV format. Must not be null.
+     *        the CSV format. Must not be null.
+     * @throws IOException
+     *         thrown if the optional header cannot be printed.
      * @throws IllegalArgumentException
-     *             thrown if the parameters of the format are inconsistent or if either out or format are null.
+     *         thrown if the parameters of the format are inconsistent or if either out or format are null.
      */
-    public CSVPrinter(final Appendable out, final CSVFormat format) {
+    public CSVPrinter(final Appendable out, final CSVFormat format) throws IOException {
         Assertions.notNull(out, "out");
         Assertions.notNull(format, "format");
 
         this.out = out;
         this.format = format;
         this.format.validate();
+        // TODO: Is it a good idea to do this here instead of on the first call to a print method?
+        // It seems a pain to have to track whether the header has already been printed or not.
+        if (format.getHeader() != null) {
+            this.printRecord((Object[]) format.getHeader());
+        }
     }
 
     // ======================================================

Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java?rev=1601517&r1=1601516&r2=1601517&view=diff
==============================================================================
--- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java (original)
+++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java Mon Jun  9 22:21:22 2014
@@ -486,6 +486,17 @@ public class CSVPrinterTest {
     }
 
     @Test
+    public void testHeader() throws IOException {
+        final StringWriter sw = new StringWriter();
+        final CSVPrinter printer = new CSVPrinter(sw, CSVFormat.DEFAULT.withQuoteChar(null)
+                .withHeader("C1", "C2", "C3"));
+        printer.printRecord("a", "b", "c");
+        printer.printRecord("x", "y", "z");
+        assertEquals("C1,C2,C3\r\na,b,c\r\nx,y,z\r\n", sw.toString());
+        printer.close();
+    }
+
+    @Test
     public void testEOLPlain() throws IOException {
         final StringWriter sw = new StringWriter();
         final CSVPrinter printer = new CSVPrinter(sw, CSVFormat.DEFAULT.withQuoteChar(null));



Re: svn commit: r1601517 - in /commons/proper/csv/trunk/src: changes/changes.xml main/java/org/apache/commons/csv/CSVFormat.java main/java/org/apache/commons/csv/CSVPrinter.java test/java/org/apache/commons/csv/CSVPrinterTest.java

Posted by Emmanuel Bourg <eb...@apache.org>.
Le 10/06/2014 00:21, ggregory@apache.org a écrit :
> Author: ggregory
> Date: Mon Jun  9 22:21:22 2014
> New Revision: 1601517
> 
> URL: http://svn.apache.org/r1601517
> Log:
> <action issue="CSV-120" type="add" dev="ggregory" due-to="Sergei Lebedev">CSVFormat#withHeader doesn't work with CSVPrinter</action>
> 

Is it possible to use plain text instead of XML in the commit messages
please ? ;)

Emmanuel Bourg


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org