/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Other licenses:
* -----------------------------------------------------------------------------
* Commercial licenses for this work are available. These replace the above
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
* database integrations.
*
* For more information, please visit: http://www.jooq.org/licenses
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package org.jooq;
import static org.jooq.CSVFormat.Quote.SPECIAL_CHARACTERS;
A CSV formatting type, which can be used to configure CSV imports / exports.
Author: Lukas Eder
/**
* A CSV formatting type, which can be used to configure CSV imports / exports.
*
* @author Lukas Eder
*/
public final class CSVFormat {
final String delimiter;
final String nullString;
final String emptyString;
final String newline;
final String quoteString;
final Quote quote;
final boolean header;
public CSVFormat() {
this(
",",
"\"\"",
"\"\"",
"\n",
"\"",
SPECIAL_CHARACTERS,
true
);
}
private CSVFormat(
String delimiter,
String nullString,
String emptyString,
String newline,
String quoteString,
Quote quote,
boolean header
) {
this.delimiter = delimiter;
this.nullString = nullString;
this.emptyString = emptyString;
this.newline = newline;
this.quoteString = quoteString;
this.quote = quote;
this.header = header;
}
The delimiter to be used between CSV cells, defaulting to
","
.
Using ","
a,b,c
Using ";"
a;b;c
/**
* The delimiter to be used between CSV cells, defaulting to
* <code>","</code>.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>","</code></td>
* <td><code>a,b,c</code></td>
* </tr>
* <tr>
* <td>Using <code>";"</code></td>
* <td><code>a;b;c</code></td>
* </tr>
* </table>
*/
public CSVFormat delimiter(String newDelimiter) {
return new CSVFormat(
newDelimiter,
nullString,
emptyString,
newline,
quoteString,
quote,
header
);
}
The delimiter to be used between CSV cells, defaulting to
","
.
Using ","
a,b,c
Using ";"
a;b;c
/**
* The delimiter to be used between CSV cells, defaulting to
* <code>","</code>.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>","</code></td>
* <td><code>a,b,c</code></td>
* </tr>
* <tr>
* <td>Using <code>";"</code></td>
* <td><code>a;b;c</code></td>
* </tr>
* </table>
*/
public CSVFormat delimiter(char newDelimiter) {
return delimiter("" + newDelimiter);
}
The delimiter to be used between CSV cells, defaulting to
","
.
Using ","
a,b,c
Using ";"
a;b;c
/**
* The delimiter to be used between CSV cells, defaulting to
* <code>","</code>.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>","</code></td>
* <td><code>a,b,c</code></td>
* </tr>
* <tr>
* <td>Using <code>";"</code></td>
* <td><code>a;b;c</code></td>
* </tr>
* </table>
*/
public String delimiter() {
return delimiter;
}
The string to be used for null
values, defaulting to the
empty string.
Using ""
a,,c
Using "\"\""
a,"",c
Using "{null}"
a,{null},c
/**
* The string to be used for <code>null</code> values, defaulting to the
* empty string.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>""</code></td>
* <td><code>a,,c</code></td>
* </tr>
* <tr>
* <td>Using <code>"\"\""</code></td>
* <td><code>a,"",c</code></td>
* </tr>
* <tr>
* <td>Using <code>"{null}"</code></td>
* <td><code>a,{null},c</code></td>
* </tr>
* </table>
*/
public CSVFormat nullString(String newNullString) {
return new CSVFormat(
delimiter,
newNullString,
emptyString,
newline,
quoteString,
quote,
header
);
}
The string to be used for null
values, defaulting to the
empty string.
Using ""
a,,c
Using "\"\""
a,"",c
Using "{null}"
a,{null},c
/**
* The string to be used for <code>null</code> values, defaulting to the
* empty string.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>""</code></td>
* <td><code>a,,c</code></td>
* </tr>
* <tr>
* <td>Using <code>"\"\""</code></td>
* <td><code>a,"",c</code></td>
* </tr>
* <tr>
* <td>Using <code>"{null}"</code></td>
* <td><code>a,{null},c</code></td>
* </tr>
* </table>
*/
public String nullString() {
return nullString;
}
The string to be used for ""
values, defaulting to the
empty string.
Using ""
a,,c
Using "\"\""
a,"",c
/**
* The string to be used for <code>""</code> values, defaulting to the
* empty string.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>""</code></td>
* <td><code>a,,c</code></td>
* </tr>
* <tr>
* <td>Using <code>"\"\""</code></td>
* <td><code>a,"",c</code></td>
* </tr>
* </table>
*/
public CSVFormat emptyString(String newEmptyString) {
return new CSVFormat(
delimiter,
nullString,
newEmptyString,
newline,
quoteString,
quote,
header
);
}
The string to be used for ""
values, defaulting to the
empty string.
Using ""
a,,c
Using "\"\""
a,"",c
/**
* The string to be used for <code>""</code> values, defaulting to the
* empty string.
* <p>
* <table border="1">
* <tr>
* <td>Using <code>""</code></td>
* <td><code>a,,c</code></td>
* </tr>
* <tr>
* <td>Using <code>"\"\""</code></td>
* <td><code>a,"",c</code></td>
* </tr>
* </table>
*/
public String emptyString() {
return emptyString;
}
The string to be used to separate rows, defaulting to \n
.
/**
* The string to be used to separate rows, defaulting to <code>\n</code>.
*/
public CSVFormat newline(String newNewline) {
return new CSVFormat(
delimiter,
nullString,
emptyString,
newNewline,
quoteString,
quote,
header
);
}
The string to be used to separate rows, defaulting to \n
.
/**
* The string to be used to separate rows, defaulting to <code>\n</code>.
*/
public String newline() {
return newline;
}
The string used to quote values according to the rules specified in quote()
. /**
* The string used to quote values according to the rules specified in
* {@link #quote()}.
*/
public CSVFormat quoteString(String newQuoteString) {
return new CSVFormat(
delimiter,
nullString,
emptyString,
newline,
newQuoteString,
quote,
header
);
}
The string used to quote values according to the rules specified in quote()
. /**
* The string used to quote values according to the rules specified in
* {@link #quote()}.
*/
public String quoteString() {
return quoteString;
}
When to quote CSV content.
/**
* When to quote CSV content.
*/
public CSVFormat quote(Quote newQuote) {
return new CSVFormat(
delimiter,
nullString,
emptyString,
newline,
quoteString,
newQuote,
header
);
}
When to quote CSV content.
/**
* When to quote CSV content.
*/
public Quote quote() {
return quote;
}
Whether to emit a header row with column names, defaulting to
true
.
/**
* Whether to emit a header row with column names, defaulting to
* <code>true</code>.
*/
public CSVFormat header(boolean newHeader) {
return new CSVFormat(
delimiter,
nullString,
emptyString,
newline,
quoteString,
quote,
newHeader
);
}
Whether to emit a header row with column names, defaulting to
true
.
/**
* Whether to emit a header row with column names, defaulting to
* <code>true</code>.
*/
public boolean header() {
return header;
}
When to apply the quote
/**
* When to apply the quote
*/
public enum Quote {
Each content element is quoted.
/**
* Each content element is quoted.
*/
ALWAYS,
Only content elements are quoted containing special characters.
Special characters consist of:
,
: The comma
;
: The semi colon
"
: The double quote
'
: The apostrophe
\
: The backslash
\t
: The tab character
\n
: The line feed character
\r
: The carriage return character
/**
* Only content elements are quoted containing special characters.
* <p>
* Special characters consist of:
* <ul>
* <li><code>,</code>: The comma</li>
* <li><code>;</code>: The semi colon</li>
* <li><code>"</code>: The double quote</li>
* <li><code>'</code>: The apostrophe</li>
* <li><code>\</code>: The backslash</li>
* <li><code>\t</code>: The tab character</li>
* <li><code>\n</code>: The line feed character</li>
* <li><code>\r</code>: The carriage return character</li>
* </ul>
*/
SPECIAL_CHARACTERS,
Content is never quoted.
/**
* Content is never quoted.
*/
NEVER
}
}