On 14 June 2016 at 07:13, Benedikt Ritter <brit...@apache.org> wrote: > I don't like how we're evolving CSVFormat. It is becoming a dumping ground > for anything that may be useful or convenient. The more methods we add, the > harder it becomes for users to find the right method for their use case.
+1 And the more maintenance, documentation and testing that is needed. > Benedikt > > <ggreg...@apache.org> schrieb am Di., 14. Juni 2016 um 07:53 Uhr: > >> Author: ggregory >> Date: Tue Jun 14 05:53:32 2016 >> New Revision: 1748347 >> >> URL: http://svn.apache.org/viewvc?rev=1748347&view=rev >> Log: >> Add convenience API CSVFormat.print(File, Charset) (JIRA is down ATM). >> >> 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/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=1748347&r1=1748346&r2=1748347&view=diff >> >> ============================================================================== >> --- commons/proper/csv/trunk/src/changes/changes.xml (original) >> +++ commons/proper/csv/trunk/src/changes/changes.xml Tue Jun 14 05:53:32 >> 2016 >> @@ -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-???" type="add" dev="ggregory" due-to="Gary >> Gregory">Add convenience API CSVFormat.print(File, Charset)</action> >> </release> >> <release version="1.4" date="2016-05-28" description="Feature and bug >> fix release"> >> <action issue="CSV-181" type="update" dev="ggregory" due-to="Gary >> Gregory">Make CSVPrinter.print(Object) GC-free.</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=1748347&r1=1748346&r2=1748347&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 >> Tue Jun 14 05:53:32 2016 >> @@ -28,10 +28,14 @@ import static org.apache.commons.csv.Con >> import static org.apache.commons.csv.Constants.SP; >> import static org.apache.commons.csv.Constants.TAB; >> >> +import java.io.File; >> +import java.io.FileOutputStream; >> import java.io.IOException; >> +import java.io.OutputStreamWriter; >> import java.io.Reader; >> import java.io.Serializable; >> import java.io.StringWriter; >> +import java.nio.charset.Charset; >> import java.sql.ResultSet; >> import java.sql.ResultSetMetaData; >> import java.sql.SQLException; >> @@ -864,6 +868,27 @@ public final class CSVFormat implements >> } >> >> /** >> + * Prints to the specified output. >> + * >> + * <p> >> + * See also {@link CSVPrinter}. >> + * </p> >> + * >> + * @param out >> + * the output >> + * @param charset >> + * A charset >> + * @return a printer to an output >> + * @throws IOException >> + * thrown if the optional header cannot be printed. >> + * @since 1.5 >> + */ >> + public CSVPrinter print(final File out, Charset charset) throws >> IOException { >> + // The FileWriter will be closed when close() is called. >> + return new CSVPrinter(new OutputStreamWriter(new >> FileOutputStream(out), charset), this); >> + } >> + >> + /** >> * Prints the {@code value} as the next value on the line to {@code >> out}. The value will be escaped or encapsulated >> * as needed. Useful when one wants to avoid creating CSVPrinters. >> * >> >> 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=1748347&r1=1748346&r2=1748347&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 >> Tue Jun 14 05:53:32 2016 >> @@ -22,9 +22,12 @@ import static org.junit.Assert.assertArr >> import static org.junit.Assert.assertEquals; >> import static org.junit.Assert.assertFalse; >> >> +import java.io.File; >> import java.io.IOException; >> import java.io.StringReader; >> import java.io.StringWriter; >> +import java.nio.charset.Charset; >> +import java.nio.charset.StandardCharsets; >> import java.sql.Connection; >> import java.sql.DriverManager; >> import java.sql.ResultSet; >> @@ -38,6 +41,7 @@ import java.util.List; >> import java.util.Objects; >> import java.util.Random; >> >> +import org.apache.commons.io.FileUtils; >> import org.junit.Assert; >> import org.junit.Ignore; >> import org.junit.Test; >> @@ -728,6 +732,24 @@ public class CSVPrinterTest { >> } >> >> @Test >> + public void testPrintToFileWithDefaultCharset() throws IOException { >> + File file = File.createTempFile(getClass().getName(), ".csv"); >> + try (final CSVPrinter printer = CSVFormat.DEFAULT.print(file, >> Charset.defaultCharset())) { >> + printer.printRecord("a", "b\\c"); >> + } >> + assertEquals("a,b\\c" + recordSeparator, >> FileUtils.readFileToString(file, Charset.defaultCharset())); >> + } >> + >> + @Test >> + public void testPrintToFileWithCharsetUtf16Be() throws IOException { >> + File file = File.createTempFile(getClass().getName(), ".csv"); >> + try (final CSVPrinter printer = CSVFormat.DEFAULT.print(file, >> StandardCharsets.UTF_16BE)) { >> + printer.printRecord("a", "b\\c"); >> + } >> + assertEquals("a,b\\c" + recordSeparator, >> FileUtils.readFileToString(file, StandardCharsets.UTF_16BE)); >> + } >> + >> + @Test >> public void testPrintCustomNullValues() throws IOException { >> final StringWriter sw = new StringWriter(); >> try (final CSVPrinter printer = new CSVPrinter(sw, >> CSVFormat.DEFAULT.withNullString("NULL"))) { >> >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org