You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@commons.apache.org by gg...@apache.org on 2024/09/25 02:11:30 UTC
svn commit: r1087640 [22/44] - in /websites/production/commons/content/proper/commons-csv: ./ apidocs/ apidocs/org/apache/commons/csv/ apidocs/org/apache/commons/csv/class-use/ apidocs/src-html/org/apache/commons/csv/ jacoco/ jacoco/jacoco-resources/ j...
Modified: websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVParser.java.html
==============================================================================
--- websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVParser.java.html (original)
+++ websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVParser.java.html Wed Sep 25 02:11:29 2024
@@ -72,7 +72,7 @@ import org.apache.commons.io.function.Un
* For those who like fluent APIs, parsers can be created using {@link CSVFormat#parse(java.io.Reader)} as a shortcut:
* </p>
* <pre>
- * for(CSVRecord record : CSVFormat.EXCEL.parse(in)) {
+ * for (CSVRecord record : CSVFormat.EXCEL.parse(in)) {
* ...
* }
* </pre>
@@ -82,12 +82,12 @@ import org.apache.commons.io.function.Un
* To parse a CSV input from a file, you write:
* </p>
*
- * <pre>
- * File csvData = new File(&quot;/path/to/csv&quot;);
+ * <pre>{@code
+ * File csvData = new File("/path/to/csv");
* CSVParser parser = CSVParser.parse(csvData, CSVFormat.RFC4180);
* for (CSVRecord csvRecord : parser) {
* ...
- * }
+ * }}
* </pre>
*
* <p>
@@ -116,11 +116,11 @@ import org.apache.commons.io.function.Un
* If parsing record-wise is not desired, the contents of the input can be read completely into memory.
* </p>
*
- * <pre>
- * Reader in = new StringReader(&quot;a;b\nc;d&quot;);
+ * <pre>{@code
+ * Reader in = new StringReader("a;b\nc;d");
* CSVParser parser = new CSVParser(in, CSVFormat.EXCEL);
- * List&lt;CSVRecord&gt; list = parser.getRecords();
- * </pre>
+ * List<CSVRecord> list = parser.getRecords();
+ * }</pre>
*
* <p>
* There are two constraints that have to be kept in mind:
@@ -145,44 +145,49 @@ public final class CSVParser implements
<span class="fc" id="L145"> final class CSVRecordIterator implements Iterator<CSVRecord> {</span>
private CSVRecord current;
+ /**
+ * Gets the next record.
+ *
+ * @return the next record.
+ */
private CSVRecord getNextRecord() {
-<span class="fc" id="L149"> return Uncheck.get(CSVParser.this::nextRecord);</span>
+<span class="fc" id="L154"> return Uncheck.get(CSVParser.this::nextRecord);</span>
}
@Override
public boolean hasNext() {
-<span class="fc bfc" id="L154" title="All 2 branches covered."> if (CSVParser.this.isClosed()) {</span>
-<span class="fc" id="L155"> return false;</span>
+<span class="fc bfc" id="L159" title="All 2 branches covered."> if (isClosed()) {</span>
+<span class="fc" id="L160"> return false;</span>
}
-<span class="fc bfc" id="L157" title="All 2 branches covered."> if (current == null) {</span>
-<span class="fc" id="L158"> current = getNextRecord();</span>
+<span class="fc bfc" id="L162" title="All 2 branches covered."> if (current == null) {</span>
+<span class="fc" id="L163"> current = getNextRecord();</span>
}
-<span class="fc bfc" id="L161" title="All 2 branches covered."> return current != null;</span>
+<span class="fc bfc" id="L166" title="All 2 branches covered."> return current != null;</span>
}
@Override
public CSVRecord next() {
-<span class="fc bfc" id="L166" title="All 2 branches covered."> if (CSVParser.this.isClosed()) {</span>
-<span class="fc" id="L167"> throw new NoSuchElementException("CSVParser has been closed");</span>
+<span class="fc bfc" id="L171" title="All 2 branches covered."> if (isClosed()) {</span>
+<span class="fc" id="L172"> throw new NoSuchElementException("CSVParser has been closed");</span>
}
-<span class="fc" id="L169"> CSVRecord next = current;</span>
-<span class="fc" id="L170"> current = null;</span>
+<span class="fc" id="L174"> CSVRecord next = current;</span>
+<span class="fc" id="L175"> current = null;</span>
-<span class="fc bfc" id="L172" title="All 2 branches covered."> if (next == null) {</span>
+<span class="fc bfc" id="L177" title="All 2 branches covered."> if (next == null) {</span>
// hasNext() wasn't called before
-<span class="fc" id="L174"> next = getNextRecord();</span>
-<span class="fc bfc" id="L175" title="All 2 branches covered."> if (next == null) {</span>
-<span class="fc" id="L176"> throw new NoSuchElementException("No more CSV records available");</span>
+<span class="fc" id="L179"> next = getNextRecord();</span>
+<span class="fc bfc" id="L180" title="All 2 branches covered."> if (next == null) {</span>
+<span class="fc" id="L181"> throw new NoSuchElementException("No more CSV records available");</span>
}
}
-<span class="fc" id="L180"> return next;</span>
+<span class="fc" id="L185"> return next;</span>
}
@Override
public void remove() {
-<span class="fc" id="L185"> throw new UnsupportedOperationException();</span>
+<span class="fc" id="L190"> throw new UnsupportedOperationException();</span>
}
}
@@ -201,10 +206,10 @@ public final class CSVParser implements
*/
final List<String> headerNames;
-<span class="fc" id="L204"> Headers(final Map<String, Integer> headerMap, final List<String> headerNames) {</span>
-<span class="fc" id="L205"> this.headerMap = headerMap;</span>
-<span class="fc" id="L206"> this.headerNames = headerNames;</span>
-<span class="fc" id="L207"> }</span>
+<span class="fc" id="L209"> Headers(final Map<String, Integer> headerMap, final List<String> headerNames) {</span>
+<span class="fc" id="L210"> this.headerMap = headerMap;</span>
+<span class="fc" id="L211"> this.headerNames = headerNames;</span>
+<span class="fc" id="L212"> }</span>
}
/**
@@ -221,10 +226,11 @@ public final class CSVParser implements
* If the parameters of the format are inconsistent or if either file or format are null.
* @throws IOException
* If an I/O error occurs
+ * @throws CSVException Thrown on invalid input.
*/
public static CSVParser parse(final File file, final Charset charset, final CSVFormat format) throws IOException {
-<span class="fc" id="L226"> Objects.requireNonNull(file, "file");</span>
-<span class="fc" id="L227"> return parse(file.toPath(), charset, format);</span>
+<span class="fc" id="L232"> Objects.requireNonNull(file, "file");</span>
+<span class="fc" id="L233"> return parse(file.toPath(), charset, format);</span>
}
/**
@@ -246,14 +252,15 @@ public final class CSVParser implements
* 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
+ * @throws CSVException Thrown on invalid input.
* @since 1.5
*/
@SuppressWarnings("resource")
public static CSVParser parse(final InputStream inputStream, final Charset charset, final CSVFormat format)
throws IOException {
-<span class="fc" id="L254"> Objects.requireNonNull(inputStream, "inputStream");</span>
-<span class="fc" id="L255"> Objects.requireNonNull(format, "format");</span>
-<span class="fc" id="L256"> return parse(new InputStreamReader(inputStream, charset), format);</span>
+<span class="fc" id="L261"> Objects.requireNonNull(inputStream, "inputStream");</span>
+<span class="fc" id="L262"> Objects.requireNonNull(format, "format");</span>
+<span class="fc" id="L263"> return parse(new InputStreamReader(inputStream, charset), format);</span>
}
/**
@@ -270,13 +277,14 @@ public final class CSVParser implements
* If the parameters of the format are inconsistent or if either file or format are null.
* @throws IOException
* If an I/O error occurs
+ * @throws CSVException Thrown on invalid input.
* @since 1.5
*/
@SuppressWarnings("resource")
public static CSVParser parse(final Path path, final Charset charset, final CSVFormat format) throws IOException {
-<span class="fc" id="L277"> Objects.requireNonNull(path, "path");</span>
-<span class="fc" id="L278"> Objects.requireNonNull(format, "format");</span>
-<span class="fc" id="L279"> return parse(Files.newInputStream(path), charset, format);</span>
+<span class="fc" id="L285"> Objects.requireNonNull(path, "path");</span>
+<span class="fc" id="L286"> Objects.requireNonNull(format, "format");</span>
+<span class="fc" id="L287"> return parse(Files.newInputStream(path), charset, format);</span>
}
/**
@@ -296,10 +304,11 @@ public final class CSVParser implements
* 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
+ * @throws CSVException Thrown on invalid input.
* @since 1.5
*/
public static CSVParser parse(final Reader reader, final CSVFormat format) throws IOException {
-<span class="fc" id="L302"> return new CSVParser(reader, format);</span>
+<span class="fc" id="L311"> return new CSVParser(reader, format);</span>
}
/**
@@ -314,12 +323,13 @@ public final class CSVParser implements
* If the parameters of the format are inconsistent or if either string or format are null.
* @throws IOException
* If an I/O error occurs
+ * @throws CSVException Thrown on invalid input.
*/
public static CSVParser parse(final String string, final CSVFormat format) throws IOException {
-<span class="fc" id="L319"> Objects.requireNonNull(string, "string");</span>
-<span class="fc" id="L320"> Objects.requireNonNull(format, "format");</span>
+<span class="fc" id="L329"> Objects.requireNonNull(string, "string");</span>
+<span class="fc" id="L330"> Objects.requireNonNull(format, "format");</span>
-<span class="fc" id="L322"> return new CSVParser(new StringReader(string), format);</span>
+<span class="fc" id="L332"> return new CSVParser(new StringReader(string), format);</span>
}
/**
@@ -341,14 +351,15 @@ public final class CSVParser implements
* If the parameters of the format are inconsistent or if either url, charset or format are null.
* @throws IOException
* If an I/O error occurs
+ * @throws CSVException Thrown on invalid input.
*/
@SuppressWarnings("resource")
public static CSVParser parse(final URL url, final Charset charset, final CSVFormat format) throws IOException {
-<span class="fc" id="L347"> Objects.requireNonNull(url, "url");</span>
-<span class="fc" id="L348"> Objects.requireNonNull(charset, "charset");</span>
-<span class="fc" id="L349"> Objects.requireNonNull(format, "format");</span>
+<span class="fc" id="L358"> Objects.requireNonNull(url, "url");</span>
+<span class="fc" id="L359"> Objects.requireNonNull(charset, "charset");</span>
+<span class="fc" id="L360"> Objects.requireNonNull(format, "format");</span>
-<span class="fc" id="L351"> return new CSVParser(new InputStreamReader(url.openStream(), charset), format);</span>
+<span class="fc" id="L362"> return new CSVParser(new InputStreamReader(url.openStream(), charset), format);</span>
}
private String headerComment;
@@ -364,7 +375,7 @@ public final class CSVParser implements
private final CSVRecordIterator csvRecordIterator;
/** A record buffer for getRecord(). Grows as necessary and is reused. */
-<span class="fc" id="L367"> private final List<String> recordList = new ArrayList<>();</span>
+<span class="fc" id="L378"> private final List<String> recordList = new ArrayList<>();</span>
/**
* The next record number to assign.
@@ -377,7 +388,7 @@ public final class CSVParser implements
*/
private final long characterOffset;
-<span class="fc" id="L380"> private final Token reusableToken = new Token();</span>
+<span class="fc" id="L391"> private final Token reusableToken = new Token();</span>
/**
* Constructs a new instance using the given {@link CSVFormat}
@@ -395,10 +406,11 @@ public final class CSVParser implements
* 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
+ * @throws CSVException Thrown on invalid input.
*/
public CSVParser(final Reader reader, final CSVFormat format) throws IOException {
-<span class="fc" id="L400"> this(reader, format, 0, 1);</span>
-<span class="fc" id="L401"> }</span>
+<span class="fc" id="L412"> this(reader, format, 0, 1);</span>
+<span class="fc" id="L413"> }</span>
/**
* Constructs a new instance using the given {@link CSVFormat}
@@ -420,28 +432,29 @@ public final class CSVParser implements
* If the parameters of the format are inconsistent or if either the reader or format is null.
* @throws IOException
* If there is a problem reading the header or skipping the first record
+ * @throws CSVException Thrown on invalid input.
* @since 1.1
*/
@SuppressWarnings("resource")
public CSVParser(final Reader reader, final CSVFormat format, final long characterOffset, final long recordNumber)
-<span class="fc" id="L427"> throws IOException {</span>
-<span class="fc" id="L428"> Objects.requireNonNull(reader, "reader");</span>
-<span class="fc" id="L429"> Objects.requireNonNull(format, "format");</span>
-<span class="fc" id="L430"> this.format = format.copy();</span>
-<span class="fc" id="L431"> this.lexer = new Lexer(format, new ExtendedBufferedReader(reader));</span>
-<span class="fc" id="L432"> this.csvRecordIterator = new CSVRecordIterator();</span>
-<span class="fc" id="L433"> this.headers = createHeaders();</span>
-<span class="fc" id="L434"> this.characterOffset = characterOffset;</span>
-<span class="fc" id="L435"> this.recordNumber = recordNumber - 1;</span>
-<span class="fc" id="L436"> }</span>
+<span class="fc" id="L440"> throws IOException {</span>
+<span class="fc" id="L441"> Objects.requireNonNull(reader, "reader");</span>
+<span class="fc" id="L442"> Objects.requireNonNull(format, "format");</span>
+<span class="fc" id="L443"> this.format = format.copy();</span>
+<span class="fc" id="L444"> this.lexer = new Lexer(format, new ExtendedBufferedReader(reader));</span>
+<span class="fc" id="L445"> this.csvRecordIterator = new CSVRecordIterator();</span>
+<span class="fc" id="L446"> this.headers = createHeaders();</span>
+<span class="fc" id="L447"> this.characterOffset = characterOffset;</span>
+<span class="fc" id="L448"> this.recordNumber = recordNumber - 1;</span>
+<span class="fc" id="L449"> }</span>
private void addRecordValue(final boolean lastRecord) {
-<span class="fc" id="L439"> final String input = format.trim(reusableToken.content.toString());</span>
-<span class="fc bfc" id="L440" title="All 6 branches covered."> if (lastRecord && input.isEmpty() && format.getTrailingDelimiter()) {</span>
-<span class="fc" id="L441"> return;</span>
+<span class="fc" id="L452"> final String input = format.trim(reusableToken.content.toString());</span>
+<span class="fc bfc" id="L453" title="All 6 branches covered."> if (lastRecord && input.isEmpty() && format.getTrailingDelimiter()) {</span>
+<span class="fc" id="L454"> return;</span>
}
-<span class="fc" id="L443"> recordList.add(handleNull(input));</span>
-<span class="fc" id="L444"> }</span>
+<span class="fc" id="L456"> recordList.add(handleNull(input));</span>
+<span class="fc" id="L457"> }</span>
/**
* Closes resources.
@@ -451,13 +464,13 @@ public final class CSVParser implements
*/
@Override
public void close() throws IOException {
-<span class="fc" id="L454"> lexer.close();</span>
-<span class="fc" id="L455"> }</span>
+<span class="fc" id="L467"> lexer.close();</span>
+<span class="fc" id="L468"> }</span>
private Map<String, Integer> createEmptyHeaderMap() {
-<span class="fc bfc" id="L458" title="All 2 branches covered."> return format.getIgnoreHeaderCase() ?</span>
-<span class="fc" id="L459"> new TreeMap<>(String.CASE_INSENSITIVE_ORDER) :</span>
-<span class="fc" id="L460"> new LinkedHashMap<>();</span>
+<span class="fc bfc" id="L471" title="All 2 branches covered."> return format.getIgnoreHeaderCase() ?</span>
+<span class="fc" id="L472"> new TreeMap<>(String.CASE_INSENSITIVE_ORDER) :</span>
+<span class="fc" id="L473"> new LinkedHashMap<>();</span>
}
/**
@@ -465,67 +478,68 @@ public final class CSVParser implements
*
* @return null if the format has no header.
* @throws IOException if there is a problem reading the header or skipping the first record
+ * @throws CSVException Thrown on invalid input.
*/
private Headers createHeaders() throws IOException {
-<span class="fc" id="L470"> Map<String, Integer> hdrMap = null;</span>
-<span class="fc" id="L471"> List<String> headerNames = null;</span>
-<span class="fc" id="L472"> final String[] formatHeader = format.getHeader();</span>
-<span class="fc bfc" id="L473" title="All 2 branches covered."> if (formatHeader != null) {</span>
-<span class="fc" id="L474"> hdrMap = createEmptyHeaderMap();</span>
-<span class="fc" id="L475"> String[] headerRecord = null;</span>
-<span class="fc bfc" id="L476" title="All 2 branches covered."> if (formatHeader.length == 0) {</span>
+<span class="fc" id="L484"> Map<String, Integer> hdrMap = null;</span>
+<span class="fc" id="L485"> List<String> headerNames = null;</span>
+<span class="fc" id="L486"> final String[] formatHeader = format.getHeader();</span>
+<span class="fc bfc" id="L487" title="All 2 branches covered."> if (formatHeader != null) {</span>
+<span class="fc" id="L488"> hdrMap = createEmptyHeaderMap();</span>
+<span class="fc" id="L489"> String[] headerRecord = null;</span>
+<span class="fc bfc" id="L490" title="All 2 branches covered."> if (formatHeader.length == 0) {</span>
// read the header from the first line of the file
-<span class="fc" id="L478"> final CSVRecord nextRecord = nextRecord();</span>
-<span class="fc bfc" id="L479" title="All 2 branches covered."> if (nextRecord != null) {</span>
-<span class="fc" id="L480"> headerRecord = nextRecord.values();</span>
-<span class="fc" id="L481"> headerComment = nextRecord.getComment();</span>
+<span class="fc" id="L492"> final CSVRecord nextRecord = nextRecord();</span>
+<span class="fc bfc" id="L493" title="All 2 branches covered."> if (nextRecord != null) {</span>
+<span class="fc" id="L494"> headerRecord = nextRecord.values();</span>
+<span class="fc" id="L495"> headerComment = nextRecord.getComment();</span>
}
-<span class="fc" id="L483"> } else {</span>
-<span class="fc bfc" id="L484" title="All 2 branches covered."> if (format.getSkipHeaderRecord()) {</span>
-<span class="fc" id="L485"> final CSVRecord nextRecord = nextRecord();</span>
-<span class="pc bpc" id="L486" title="1 of 2 branches missed."> if (nextRecord != null) {</span>
-<span class="fc" id="L487"> headerComment = nextRecord.getComment();</span>
+<span class="fc" id="L497"> } else {</span>
+<span class="fc bfc" id="L498" title="All 2 branches covered."> if (format.getSkipHeaderRecord()) {</span>
+<span class="fc" id="L499"> final CSVRecord nextRecord = nextRecord();</span>
+<span class="pc bpc" id="L500" title="1 of 2 branches missed."> if (nextRecord != null) {</span>
+<span class="fc" id="L501"> headerComment = nextRecord.getComment();</span>
}
}
-<span class="fc" id="L490"> headerRecord = formatHeader;</span>
+<span class="fc" id="L504"> headerRecord = formatHeader;</span>
}
// build the name to index mappings
-<span class="fc bfc" id="L494" title="All 2 branches covered."> if (headerRecord != null) {</span>
+<span class="fc bfc" id="L508" title="All 2 branches covered."> if (headerRecord != null) {</span>
// Track an occurrence of a null, empty or blank header.
-<span class="fc" id="L496"> boolean observedMissing = false;</span>
-<span class="fc bfc" id="L497" title="All 2 branches covered."> for (int i = 0; i < headerRecord.length; i++) {</span>
-<span class="fc" id="L498"> final String header = headerRecord[i];</span>
-<span class="fc" id="L499"> final boolean blankHeader = CSVFormat.isBlank(header);</span>
-<span class="fc bfc" id="L500" title="All 4 branches covered."> if (blankHeader && !format.getAllowMissingColumnNames()) {</span>
-<span class="fc" id="L501"> throw new IllegalArgumentException(</span>
-<span class="fc" id="L502"> "A header name is missing in " + Arrays.toString(headerRecord));</span>
+<span class="fc" id="L510"> boolean observedMissing = false;</span>
+<span class="fc bfc" id="L511" title="All 2 branches covered."> for (int i = 0; i < headerRecord.length; i++) {</span>
+<span class="fc" id="L512"> final String header = headerRecord[i];</span>
+<span class="fc" id="L513"> final boolean blankHeader = CSVFormat.isBlank(header);</span>
+<span class="fc bfc" id="L514" title="All 4 branches covered."> if (blankHeader && !format.getAllowMissingColumnNames()) {</span>
+<span class="fc" id="L515"> throw new IllegalArgumentException(</span>
+<span class="fc" id="L516"> "A header name is missing in " + Arrays.toString(headerRecord));</span>
}
-<span class="fc bfc" id="L505" title="All 2 branches covered."> final boolean containsHeader = blankHeader ? observedMissing : hdrMap.containsKey(header);</span>
-<span class="fc" id="L506"> final DuplicateHeaderMode headerMode = format.getDuplicateHeaderMode();</span>
-<span class="fc bfc" id="L507" title="All 2 branches covered."> final boolean duplicatesAllowed = headerMode == DuplicateHeaderMode.ALLOW_ALL;</span>
-<span class="fc bfc" id="L508" title="All 2 branches covered."> final boolean emptyDuplicatesAllowed = headerMode == DuplicateHeaderMode.ALLOW_EMPTY;</span>
-
-<span class="fc bfc" id="L510" title="All 8 branches covered."> if (containsHeader && !duplicatesAllowed && !(blankHeader && emptyDuplicatesAllowed)) {</span>
-<span class="fc" id="L511"> throw new IllegalArgumentException(</span>
-<span class="fc" id="L512"> String.format(</span>
+<span class="fc bfc" id="L519" title="All 2 branches covered."> final boolean containsHeader = blankHeader ? observedMissing : hdrMap.containsKey(header);</span>
+<span class="fc" id="L520"> final DuplicateHeaderMode headerMode = format.getDuplicateHeaderMode();</span>
+<span class="fc bfc" id="L521" title="All 2 branches covered."> final boolean duplicatesAllowed = headerMode == DuplicateHeaderMode.ALLOW_ALL;</span>
+<span class="fc bfc" id="L522" title="All 2 branches covered."> final boolean emptyDuplicatesAllowed = headerMode == DuplicateHeaderMode.ALLOW_EMPTY;</span>
+
+<span class="fc bfc" id="L524" title="All 8 branches covered."> if (containsHeader && !duplicatesAllowed && !(blankHeader && emptyDuplicatesAllowed)) {</span>
+<span class="fc" id="L525"> throw new IllegalArgumentException(</span>
+<span class="fc" id="L526"> String.format(</span>
"The header contains a duplicate name: \"%s\" in %s. If this is valid then use CSVFormat.Builder.setDuplicateHeaderMode().",
-<span class="fc" id="L514"> header, Arrays.toString(headerRecord)));</span>
+<span class="fc" id="L528"> header, Arrays.toString(headerRecord)));</span>
}
-<span class="fc" id="L516"> observedMissing |= blankHeader;</span>
-<span class="fc bfc" id="L517" title="All 2 branches covered."> if (header != null) {</span>
-<span class="fc" id="L518"> hdrMap.put(header, Integer.valueOf(i));</span>
-<span class="fc bfc" id="L519" title="All 2 branches covered."> if (headerNames == null) {</span>
-<span class="fc" id="L520"> headerNames = new ArrayList<>(headerRecord.length);</span>
+<span class="fc" id="L530"> observedMissing |= blankHeader;</span>
+<span class="fc bfc" id="L531" title="All 2 branches covered."> if (header != null) {</span>
+<span class="fc" id="L532"> hdrMap.put(header, Integer.valueOf(i)); // N.B. Explicit (un)boxing is intentional</span>
+<span class="fc bfc" id="L533" title="All 2 branches covered."> if (headerNames == null) {</span>
+<span class="fc" id="L534"> headerNames = new ArrayList<>(headerRecord.length);</span>
}
-<span class="fc" id="L522"> headerNames.add(header);</span>
+<span class="fc" id="L536"> headerNames.add(header);</span>
}
}
}
}
// Make header names Collection immutable
-<span class="fc bfc" id="L528" title="All 2 branches covered."> return new Headers(hdrMap, headerNames == null ? Collections.emptyList() : Collections.unmodifiableList(headerNames));</span>
+<span class="fc bfc" id="L542" title="All 2 branches covered."> return new Headers(hdrMap, headerNames == null ? Collections.emptyList() : Collections.unmodifiableList(headerNames));</span>
}
/**
@@ -539,7 +553,7 @@ public final class CSVParser implements
* @return current line number
*/
public long getCurrentLineNumber() {
-<span class="fc" id="L542"> return lexer.getCurrentLineNumber();</span>
+<span class="fc" id="L556"> return lexer.getCurrentLineNumber();</span>
}
/**
@@ -549,7 +563,7 @@ public final class CSVParser implements
* @since 1.5
*/
public String getFirstEndOfLine() {
-<span class="fc" id="L552"> return lexer.getFirstEol();</span>
+<span class="fc" id="L566"> return lexer.getFirstEol();</span>
}
/**
@@ -560,7 +574,7 @@ public final class CSVParser implements
* @since 1.10.0
*/
public String getHeaderComment() {
-<span class="fc" id="L563"> return headerComment;</span>
+<span class="fc" id="L577"> return headerComment;</span>
}
/**
@@ -576,12 +590,12 @@ public final class CSVParser implements
* @return a copy of the header map.
*/
public Map<String, Integer> getHeaderMap() {
-<span class="fc bfc" id="L579" title="All 2 branches covered."> if (headers.headerMap == null) {</span>
-<span class="fc" id="L580"> return null;</span>
+<span class="fc bfc" id="L593" title="All 2 branches covered."> if (headers.headerMap == null) {</span>
+<span class="fc" id="L594"> return null;</span>
}
-<span class="fc" id="L582"> final Map<String, Integer> map = createEmptyHeaderMap();</span>
-<span class="fc" id="L583"> map.putAll(headers.headerMap);</span>
-<span class="fc" id="L584"> return map;</span>
+<span class="fc" id="L596"> final Map<String, Integer> map = createEmptyHeaderMap();</span>
+<span class="fc" id="L597"> map.putAll(headers.headerMap);</span>
+<span class="fc" id="L598"> return map;</span>
}
/**
@@ -590,7 +604,7 @@ public final class CSVParser implements
* @return the underlying header map.
*/
Map<String, Integer> getHeaderMapRaw() {
-<span class="fc" id="L593"> return headers.headerMap;</span>
+<span class="fc" id="L607"> return headers.headerMap;</span>
}
/**
@@ -606,7 +620,7 @@ public final class CSVParser implements
* @since 1.7
*/
public List<String> getHeaderNames() {
-<span class="fc" id="L609"> return Collections.unmodifiableList(headers.headerNames);</span>
+<span class="fc" id="L623"> return Collections.unmodifiableList(headers.headerNames);</span>
}
/**
@@ -620,7 +634,7 @@ public final class CSVParser implements
* @return current record number
*/
public long getRecordNumber() {
-<span class="fc" id="L623"> return recordNumber;</span>
+<span class="fc" id="L637"> return recordNumber;</span>
}
/**
@@ -636,7 +650,7 @@ public final class CSVParser implements
* on parse error or input read-failure
*/
public List<CSVRecord> getRecords() {
-<span class="fc" id="L639"> return stream().collect(Collectors.toList());</span>
+<span class="fc" id="L653"> return stream().collect(Collectors.toList());</span>
}
/**
@@ -647,7 +661,7 @@ public final class CSVParser implements
* @since 1.10.0
*/
public String getTrailerComment() {
-<span class="fc" id="L650"> return trailerComment;</span>
+<span class="fc" id="L664"> return trailerComment;</span>
}
/**
@@ -658,15 +672,15 @@ public final class CSVParser implements
* @return null if input is parsed as null, or input itself if the input isn't parsed as null
*/
private String handleNull(final String input) {
-<span class="fc" id="L661"> final boolean isQuoted = reusableToken.isQuoted;</span>
-<span class="fc" id="L662"> final String nullString = format.getNullString();</span>
-<span class="fc" id="L663"> final boolean strictQuoteMode = isStrictQuoteMode();</span>
-<span class="fc bfc" id="L664" title="All 2 branches covered."> if (input.equals(nullString)) {</span>
+<span class="fc" id="L675"> final boolean isQuoted = reusableToken.isQuoted;</span>
+<span class="fc" id="L676"> final String nullString = format.getNullString();</span>
+<span class="fc" id="L677"> final boolean strictQuoteMode = isStrictQuoteMode();</span>
+<span class="fc bfc" id="L678" title="All 2 branches covered."> if (input.equals(nullString)) {</span>
// nullString = NULL(String), distinguish between "NULL" and NULL in ALL_NON_NULL or NON_NUMERIC quote mode
-<span class="fc bfc" id="L666" title="All 4 branches covered."> return strictQuoteMode && isQuoted ? input : null;</span>
+<span class="fc bfc" id="L680" title="All 4 branches covered."> return strictQuoteMode && isQuoted ? input : null;</span>
}
// don't set nullString, distinguish between "" and ,, (absent values) in All_NON_NULL or NON_NUMERIC quote mode
-<span class="fc bfc" id="L669" title="All 8 branches covered."> return strictQuoteMode && nullString == null && input.isEmpty() && !isQuoted ? null : input;</span>
+<span class="fc bfc" id="L683" title="All 8 branches covered."> return strictQuoteMode && nullString == null && input.isEmpty() && !isQuoted ? null : input;</span>
}
/**
@@ -682,7 +696,7 @@ public final class CSVParser implements
* @since 1.10.0
*/
public boolean hasHeaderComment() {
-<span class="fc bfc" id="L685" title="All 2 branches covered."> return headerComment != null;</span>
+<span class="fc bfc" id="L699" title="All 2 branches covered."> return headerComment != null;</span>
}
/**
@@ -695,7 +709,7 @@ public final class CSVParser implements
* @since 1.10.0
*/
public boolean hasTrailerComment() {
-<span class="fc bfc" id="L698" title="All 2 branches covered."> return trailerComment != null;</span>
+<span class="fc bfc" id="L712" title="All 2 branches covered."> return trailerComment != null;</span>
}
/**
@@ -704,7 +718,7 @@ public final class CSVParser implements
* @return whether this parser is closed.
*/
public boolean isClosed() {
-<span class="fc" id="L707"> return lexer.isClosed();</span>
+<span class="fc" id="L721"> return lexer.isClosed();</span>
}
/**
@@ -714,8 +728,8 @@ public final class CSVParser implements
* {@link QuoteMode#NON_NUMERIC}.
*/
private boolean isStrictQuoteMode() {
-<span class="fc bfc" id="L717" title="All 2 branches covered."> return format.getQuoteMode() == QuoteMode.ALL_NON_NULL ||</span>
-<span class="fc bfc" id="L718" title="All 2 branches covered."> format.getQuoteMode() == QuoteMode.NON_NUMERIC;</span>
+<span class="fc bfc" id="L731" title="All 2 branches covered."> return format.getQuoteMode() == QuoteMode.ALL_NON_NULL ||</span>
+<span class="fc bfc" id="L732" title="All 2 branches covered."> format.getQuoteMode() == QuoteMode.NON_NUMERIC;</span>
}
/**
@@ -739,61 +753,61 @@ public final class CSVParser implements
*/
@Override
public Iterator<CSVRecord> iterator() {
-<span class="fc" id="L742"> return csvRecordIterator;</span>
+<span class="fc" id="L756"> return csvRecordIterator;</span>
}
/**
* Parses the next record from the current point in the stream.
*
* @return the record as an array of values, or {@code null} if the end of the stream has been reached
- * @throws IOException
- * on parse error or input read-failure
+ * @throws IOException on parse error or input read-failure
+ * @throws CSVException Thrown on invalid input.
*/
CSVRecord nextRecord() throws IOException {
-<span class="fc" id="L753"> CSVRecord result = null;</span>
-<span class="fc" id="L754"> recordList.clear();</span>
-<span class="fc" id="L755"> StringBuilder sb = null;</span>
-<span class="fc" id="L756"> final long startCharPosition = lexer.getCharacterPosition() + characterOffset;</span>
+<span class="fc" id="L767"> CSVRecord result = null;</span>
+<span class="fc" id="L768"> recordList.clear();</span>
+<span class="fc" id="L769"> StringBuilder sb = null;</span>
+<span class="fc" id="L770"> final long startCharPosition = lexer.getCharacterPosition() + characterOffset;</span>
do {
-<span class="fc" id="L758"> reusableToken.reset();</span>
-<span class="fc" id="L759"> lexer.nextToken(reusableToken);</span>
-<span class="pc bpc" id="L760" title="2 of 6 branches missed."> switch (reusableToken.type) {</span>
+<span class="fc" id="L772"> reusableToken.reset();</span>
+<span class="fc" id="L773"> lexer.nextToken(reusableToken);</span>
+<span class="pc bpc" id="L774" title="2 of 6 branches missed."> switch (reusableToken.type) {</span>
case TOKEN:
-<span class="fc" id="L762"> addRecordValue(false);</span>
-<span class="fc" id="L763"> break;</span>
+<span class="fc" id="L776"> addRecordValue(false);</span>
+<span class="fc" id="L777"> break;</span>
case EORECORD:
-<span class="fc" id="L765"> addRecordValue(true);</span>
-<span class="fc" id="L766"> break;</span>
+<span class="fc" id="L779"> addRecordValue(true);</span>
+<span class="fc" id="L780"> break;</span>
case EOF:
-<span class="fc bfc" id="L768" title="All 2 branches covered."> if (reusableToken.isReady) {</span>
-<span class="fc" id="L769"> addRecordValue(true);</span>
-<span class="fc bfc" id="L770" title="All 2 branches covered."> } else if (sb != null) {</span>
-<span class="fc" id="L771"> trailerComment = sb.toString();</span>
+<span class="fc bfc" id="L782" title="All 2 branches covered."> if (reusableToken.isReady) {</span>
+<span class="fc" id="L783"> addRecordValue(true);</span>
+<span class="fc bfc" id="L784" title="All 2 branches covered."> } else if (sb != null) {</span>
+<span class="fc" id="L785"> trailerComment = sb.toString();</span>
}
break;
case INVALID:
-<span class="nc" id="L775"> throw new IOException("(line " + getCurrentLineNumber() + ") invalid parse sequence");</span>
+<span class="nc" id="L789"> throw new IOException("(line " + getCurrentLineNumber() + ") invalid parse sequence");</span>
case COMMENT: // Ignored currently
-<span class="fc bfc" id="L777" title="All 2 branches covered."> if (sb == null) { // first comment for this record</span>
-<span class="fc" id="L778"> sb = new StringBuilder();</span>
+<span class="fc bfc" id="L791" title="All 2 branches covered."> if (sb == null) { // first comment for this record</span>
+<span class="fc" id="L792"> sb = new StringBuilder();</span>
} else {
-<span class="fc" id="L780"> sb.append(Constants.LF);</span>
+<span class="fc" id="L794"> sb.append(Constants.LF);</span>
}
-<span class="fc" id="L782"> sb.append(reusableToken.content);</span>
-<span class="fc" id="L783"> reusableToken.type = TOKEN; // Read another token</span>
-<span class="fc" id="L784"> break;</span>
+<span class="fc" id="L796"> sb.append(reusableToken.content);</span>
+<span class="fc" id="L797"> reusableToken.type = TOKEN; // Read another token</span>
+<span class="fc" id="L798"> break;</span>
default:
-<span class="nc" id="L786"> throw new IllegalStateException("Unexpected Token type: " + reusableToken.type);</span>
+<span class="nc" id="L800"> throw new IllegalStateException("Unexpected Token type: " + reusableToken.type);</span>
}
-<span class="fc bfc" id="L788" title="All 2 branches covered."> } while (reusableToken.type == TOKEN);</span>
+<span class="fc bfc" id="L802" title="All 2 branches covered."> } while (reusableToken.type == TOKEN);</span>
-<span class="fc bfc" id="L790" title="All 2 branches covered."> if (!recordList.isEmpty()) {</span>
-<span class="fc" id="L791"> recordNumber++;</span>
-<span class="fc bfc" id="L792" title="All 2 branches covered."> final String comment = sb == null ? null : sb.toString();</span>
-<span class="fc" id="L793"> result = new CSVRecord(this, recordList.toArray(Constants.EMPTY_STRING_ARRAY), comment,</span>
+<span class="fc bfc" id="L804" title="All 2 branches covered."> if (!recordList.isEmpty()) {</span>
+<span class="fc" id="L805"> recordNumber++;</span>
+<span class="fc" id="L806"> final String comment = Objects.toString(sb, null);</span>
+<span class="fc" id="L807"> result = new CSVRecord(this, recordList.toArray(Constants.EMPTY_STRING_ARRAY), comment,</span>
recordNumber, startCharPosition);
}
-<span class="fc" id="L796"> return result;</span>
+<span class="fc" id="L810"> return result;</span>
}
/**
@@ -806,8 +820,8 @@ public final class CSVParser implements
* @since 1.9.0
*/
public Stream<CSVRecord> stream() {
-<span class="fc" id="L809"> return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator(), Spliterator.ORDERED), false);</span>
+<span class="fc" id="L823"> return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator(), Spliterator.ORDERED), false);</span>
}
}
-</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified: websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.html
==============================================================================
--- websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.html (original)
+++ websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.html Wed Sep 25 02:11:29 2024
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CSVPrinter</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons CSV</a> > <a href="index.html" class="el_package">org.apache.commons.csv</a> > <span class="el_class">CSVPrinter</span></div><h1>CSVPrinter</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td cla
ss="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 317</td><td class="ctr2">100%</td><td class="bar">0 of 45</td><td class="ctr2">100%</td><td class="ctr1">0</td><td class="ctr2">41</td><td class="ctr
1">0</td><td class="ctr2">87</td><td class="ctr1">0</td><td class="ctr2">18</td></tr></tfoot><tbody><tr><td id="a6"><a href="CSVPrinter.java.html#L200" class="el_method">printComment(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="77" alt="77"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="15" alt="15"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">18</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="CSVPrinter.java.html#L84" class="el_method">CSVPrinter(Appendable, CSVFormat)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="87" height="10" title="56" alt="56"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"><img src="../jac
oco-resources/greenbar.gif" width="64" height="10" title="8" alt="8"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">5</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a15"><a href="CSVPrinter.java.html#L416" class="el_method">printRecords(ResultSet)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="73" height="10" title="47" alt="47"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d2"><img src="../jacoco-resources/greenbar.gif" width="64" height="10" title="8" alt="8"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">5</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">13</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a12"><a href="CSVPrinter.java.html#L309" class="el_method">printRecordObject(Object)</a><
/td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="38" height="10" title="25" alt="25"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d4"><img src="../jacoco-resources/greenbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="e3">100%</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i3">6</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="CSVPrinter.java.html#L135" class="el_method">close(boolean)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="26" height="10" title="17" alt="17"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d3"><img src="../jacoco-resources/greenbar.gif" width="48" height="10" title="6" alt="6"/></td><td class="ctr2" id="e4">100%</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">4</td><td class="ctr1" id="h4">0</td><td class="ctr2"
id="i4">5</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a5"><a href="CSVPrinter.java.html#L174" class="el_method">print(Object)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="18" height="10" title="12" alt="12"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i6">3</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a7"><a href="CSVPrinter.java.html#L238" class="el_method">printHeaders(ResultSet)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="11" alt="11"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id
="i11">2</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a3"><a href="CSVPrinter.java.html#L151" class="el_method">flush()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d5"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="2" alt="2"/></td><td class="ctr2" id="e5">100%</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g5">2</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a8"><a href="CSVPrinter.java.html#L248" class="el_method">println()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2"
id="g9">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i8">3</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a16"><a href="CSVPrinter.java.html#L446" class="el_method">printRecords(ResultSet, boolean)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c9">100%</td><td class="bar" id="d6"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="2" alt="2"/></td><td class="ctr2" id="e6">100%</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g6">2</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i5">4</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a9"><a href="CSVPrinter.java.html#L267" class="el_method">printRecord(Iterable)</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c10">100%</td><
td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i9">3</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a11"><a href="CSVPrinter.java.html#L304" class="el_method">printRecord(Stream)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c11">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i10">3</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a13"><a href="CSVPrinter.java.html#L359" class="el_method">printRecords(Iterable)</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" i
d="c12">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a17"><a href="CSVPrinter.java.html#L495" class="el_method">printRecords(Stream)</a></td><td class="bar" id="b13"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c13">100%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i13">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a10"><a href="CSVPrinter.java.html#L285" class="el_method">printRecord(Object[])</a></td><td class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="7" height="10" title="5" alt="5"/></td>
<td class="ctr2" id="c14">100%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">0</td><td class="ctr2" id="i14">2</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a14"><a href="CSVPrinter.java.html#L402" class="el_method">printRecords(Object[])</a></td><td class="bar" id="b15"><img src="../jacoco-resources/greenbar.gif" width="7" height="10" title="5" alt="5"/></td><td class="ctr2" id="c15">100%</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i15">2</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a0"><a href="CSVPrinter.java.html#L123" class="el_method">close()</a></td><td class="bar" id="b16"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/>
</td><td class="ctr2" id="c16">100%</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f16">0</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h16">0</td><td class="ctr2" id="i16">2</td><td class="ctr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a4"><a href="CSVPrinter.java.html#L162" class="el_method">getOut()</a></td><td class="bar" id="b17"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c17">100%</td><td class="bar" id="d17"/><td class="ctr2" id="e17">n/a</td><td class="ctr1" id="f17">0</td><td class="ctr2" id="g17">1</td><td class="ctr1" id="h17">0</td><td class="ctr2" id="i17">1</td><td class="ctr1" id="j17">0</td><td class="ctr2" id="k17">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>CSVPrinter</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">Apache Commons CSV</a> > <a href="index.html" class="el_package">org.apache.commons.csv</a> > <span class="el_class">CSVPrinter</span></div><h1>CSVPrinter</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td cla
ss="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 317</td><td class="ctr2">100%</td><td class="bar">0 of 45</td><td class="ctr2">100%</td><td class="ctr1">0</td><td class="ctr2">41</td><td class="ctr
1">0</td><td class="ctr2">87</td><td class="ctr1">0</td><td class="ctr2">18</td></tr></tfoot><tbody><tr><td id="a6"><a href="CSVPrinter.java.html#L200" class="el_method">printComment(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="77" alt="77"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="15" alt="15"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">9</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">18</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="CSVPrinter.java.html#L84" class="el_method">CSVPrinter(Appendable, CSVFormat)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="87" height="10" title="56" alt="56"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"><img src="../jac
oco-resources/greenbar.gif" width="64" height="10" title="8" alt="8"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">5</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a15"><a href="CSVPrinter.java.html#L413" class="el_method">printRecords(ResultSet)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="73" height="10" title="47" alt="47"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d2"><img src="../jacoco-resources/greenbar.gif" width="64" height="10" title="8" alt="8"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">5</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">13</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a12"><a href="CSVPrinter.java.html#L309" class="el_method">printRecordObject(Object)</a><
/td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="38" height="10" title="25" alt="25"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d4"><img src="../jacoco-resources/greenbar.gif" width="32" height="10" title="4" alt="4"/></td><td class="ctr2" id="e3">100%</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i3">6</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="CSVPrinter.java.html#L135" class="el_method">close(boolean)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="26" height="10" title="17" alt="17"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d3"><img src="../jacoco-resources/greenbar.gif" width="48" height="10" title="6" alt="6"/></td><td class="ctr2" id="e4">100%</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g3">4</td><td class="ctr1" id="h4">0</td><td class="ctr2"
id="i4">5</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a5"><a href="CSVPrinter.java.html#L174" class="el_method">print(Object)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="18" height="10" title="12" alt="12"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i6">3</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a7"><a href="CSVPrinter.java.html#L238" class="el_method">printHeaders(ResultSet)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="11" alt="11"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id
="i11">2</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a3"><a href="CSVPrinter.java.html#L151" class="el_method">flush()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d5"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="2" alt="2"/></td><td class="ctr2" id="e5">100%</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g5">2</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a8"><a href="CSVPrinter.java.html#L248" class="el_method">println()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2"
id="g9">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i8">3</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a16"><a href="CSVPrinter.java.html#L443" class="el_method">printRecords(ResultSet, boolean)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" title="9" alt="9"/></td><td class="ctr2" id="c9">100%</td><td class="bar" id="d6"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="2" alt="2"/></td><td class="ctr2" id="e6">100%</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g6">2</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i5">4</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a9"><a href="CSVPrinter.java.html#L267" class="el_method">printRecord(Iterable)</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c10">100%</td><
td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i9">3</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a11"><a href="CSVPrinter.java.html#L304" class="el_method">printRecord(Stream)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" title="8" alt="8"/></td><td class="ctr2" id="c11">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i10">3</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a13"><a href="CSVPrinter.java.html#L358" class="el_method">printRecords(Iterable)</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" i
d="c12">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a17"><a href="CSVPrinter.java.html#L491" class="el_method">printRecords(Stream)</a></td><td class="bar" id="b13"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="6" alt="6"/></td><td class="ctr2" id="c13">100%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i13">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a10"><a href="CSVPrinter.java.html#L285" class="el_method">printRecord(Object[])</a></td><td class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="7" height="10" title="5" alt="5"/></td>
<td class="ctr2" id="c14">100%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">0</td><td class="ctr2" id="i14">2</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a14"><a href="CSVPrinter.java.html#L399" class="el_method">printRecords(Object[])</a></td><td class="bar" id="b15"><img src="../jacoco-resources/greenbar.gif" width="7" height="10" title="5" alt="5"/></td><td class="ctr2" id="c15">100%</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i15">2</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a0"><a href="CSVPrinter.java.html#L123" class="el_method">close()</a></td><td class="bar" id="b16"><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="4" alt="4"/>
</td><td class="ctr2" id="c16">100%</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f16">0</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h16">0</td><td class="ctr2" id="i16">2</td><td class="ctr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a4"><a href="CSVPrinter.java.html#L162" class="el_method">getOut()</a></td><td class="bar" id="b17"><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c17">100%</td><td class="bar" id="d17"/><td class="ctr2" id="e17">n/a</td><td class="ctr1" id="f17">0</td><td class="ctr2" id="g17">1</td><td class="ctr1" id="h17">0</td><td class="ctr2" id="i17">1</td><td class="ctr1" id="j17">0</td><td class="ctr2" id="k17">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified: websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.java.html
==============================================================================
--- websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.java.html (original)
+++ websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/CSVPrinter.java.html Wed Sep 25 02:11:29 2024
@@ -110,7 +110,7 @@ public final class CSVPrinter implements
<span class="fc" id="L110"> final String[] headerComments = format.getHeaderComments();</span>
<span class="fc bfc" id="L111" title="All 2 branches covered."> if (headerComments != null) {</span>
<span class="fc bfc" id="L112" title="All 2 branches covered."> for (final String line : headerComments) {</span>
-<span class="fc" id="L113"> this.printComment(line);</span>
+<span class="fc" id="L113"> printComment(line);</span>
}
}
<span class="fc bfc" id="L116" title="All 4 branches covered."> if (format.getHeader() != null && !format.getSkipHeaderRecord()) {</span>
@@ -203,7 +203,7 @@ public final class CSVPrinter implements
<span class="fc bfc" id="L203" title="All 2 branches covered."> if (!newRecord) {</span>
<span class="fc" id="L204"> println();</span>
}
-<span class="fc" id="L206"> appendable.append(format.getCommentMarker().charValue());</span>
+<span class="fc" id="L206"> appendable.append(format.getCommentMarker().charValue()); // N.B. Explicit (un)boxing is intentional</span>
<span class="fc" id="L207"> appendable.append(SP);</span>
<span class="fc bfc" id="L208" title="All 2 branches covered."> for (int i = 0; i < comment.length(); i++) {</span>
<span class="fc" id="L209"> final char c = comment.charAt(i);</span>
@@ -215,7 +215,7 @@ public final class CSVPrinter implements
//$FALL-THROUGH$ break intentionally excluded.
case LF:
<span class="fc" id="L217"> println();</span>
-<span class="fc" id="L218"> appendable.append(format.getCommentMarker().charValue());</span>
+<span class="fc" id="L218"> appendable.append(format.getCommentMarker().charValue()); // N.B. Explicit (un)boxing is intentional</span>
<span class="fc" id="L219"> appendable.append(SP);</span>
<span class="fc" id="L220"> break;</span>
default:
@@ -328,13 +328,12 @@ public final class CSVPrinter implements
* Given the following data structure:
* </p>
*
- * <pre>
- * <code>
- * List&lt;String[]&gt; data = new ArrayList&lt;&gt;();
+ * <pre>{@code
+ * List<String[]> data = new ArrayList<>();
* data.add(new String[]{ "A", "B", "C" });
* data.add(new String[]{ "1", "2", "3" });
* data.add(new String[]{ "A1", "B2", "C3" });
- * </code>
+ * }
* </pre>
*
* <p>
@@ -342,11 +341,11 @@ public final class CSVPrinter implements
* </p>
*
* <pre>
- * <code>
+ * {@code
* A, B, C
* 1, 2, 3
* A1, B2, C3
- * </code>
+ * }
* </pre>
*
* @param values
@@ -356,8 +355,8 @@ public final class CSVPrinter implements
*/
@SuppressWarnings("resource")
public void printRecords(final Iterable<?> values) throws IOException {
-<span class="fc" id="L359"> IOStream.of(values).forEachOrdered(this::printRecordObject);</span>
-<span class="fc" id="L360"> }</span>
+<span class="fc" id="L358"> IOStream.of(values).forEachOrdered(this::printRecordObject);</span>
+<span class="fc" id="L359"> }</span>
/**
* Prints all the objects in the given array handling nested collections/arrays as records.
@@ -372,25 +371,23 @@ public final class CSVPrinter implements
* Given the following data structure:
* </p>
*
- * <pre>
- * <code>
+ * <pre>{@code
* String[][] data = new String[3][]
* data[0] = String[]{ "A", "B", "C" };
* data[1] = new String[]{ "1", "2", "3" };
* data[2] = new String[]{ "A1", "B2", "C3" };
- * </code>
+ * }
* </pre>
*
* <p>
* Calling this method will print:
* </p>
*
- * <pre>
- * <code>
+ * <pre>{@code
* A, B, C
* 1, 2, 3
* A1, B2, C3
- * </code>
+ * }
* </pre>
*
* @param values
@@ -399,8 +396,8 @@ public final class CSVPrinter implements
* If an I/O error occurs
*/
public void printRecords(final Object... values) throws IOException {
-<span class="fc" id="L402"> printRecords(Arrays.asList(values));</span>
-<span class="fc" id="L403"> }</span>
+<span class="fc" id="L399"> printRecords(Arrays.asList(values));</span>
+<span class="fc" id="L400"> }</span>
/**
* Prints all the objects in the given JDBC result set.
@@ -413,25 +410,25 @@ public final class CSVPrinter implements
* Thrown when a database access error occurs.
*/
public void printRecords(final ResultSet resultSet) throws SQLException, IOException {
-<span class="fc" id="L416"> final int columnCount = resultSet.getMetaData().getColumnCount();</span>
-<span class="fc bfc" id="L417" title="All 2 branches covered."> while (resultSet.next()) {</span>
-<span class="fc bfc" id="L418" title="All 2 branches covered."> for (int i = 1; i <= columnCount; i++) {</span>
-<span class="fc" id="L419"> final Object object = resultSet.getObject(i);</span>
-<span class="fc bfc" id="L420" title="All 2 branches covered."> if (object instanceof Clob) {</span>
-<span class="fc" id="L421"> try (Reader reader = ((Clob) object).getCharacterStream()) {</span>
-<span class="fc" id="L422"> print(reader);</span>
+<span class="fc" id="L413"> final int columnCount = resultSet.getMetaData().getColumnCount();</span>
+<span class="fc bfc" id="L414" title="All 2 branches covered."> while (resultSet.next()) {</span>
+<span class="fc bfc" id="L415" title="All 2 branches covered."> for (int i = 1; i <= columnCount; i++) {</span>
+<span class="fc" id="L416"> final Object object = resultSet.getObject(i);</span>
+<span class="fc bfc" id="L417" title="All 2 branches covered."> if (object instanceof Clob) {</span>
+<span class="fc" id="L418"> try (Reader reader = ((Clob) object).getCharacterStream()) {</span>
+<span class="fc" id="L419"> print(reader);</span>
}
-<span class="fc bfc" id="L424" title="All 2 branches covered."> } else if (object instanceof Blob) {</span>
-<span class="fc" id="L425"> try (InputStream inputStream = ((Blob) object).getBinaryStream()) {</span>
-<span class="fc" id="L426"> print(inputStream);</span>
+<span class="fc bfc" id="L421" title="All 2 branches covered."> } else if (object instanceof Blob) {</span>
+<span class="fc" id="L422"> try (InputStream inputStream = ((Blob) object).getBinaryStream()) {</span>
+<span class="fc" id="L423"> print(inputStream);</span>
}
} else {
-<span class="fc" id="L429"> print(object);</span>
+<span class="fc" id="L426"> print(object);</span>
}
}
-<span class="fc" id="L432"> println();</span>
+<span class="fc" id="L429"> println();</span>
}
-<span class="fc" id="L434"> }</span>
+<span class="fc" id="L431"> }</span>
/**
* Prints all the objects with metadata in the given JDBC result set based on the header boolean.
@@ -443,11 +440,11 @@ public final class CSVPrinter implements
* @since 1.9.0
*/
public void printRecords(final ResultSet resultSet, final boolean printHeader) throws SQLException, IOException {
-<span class="fc bfc" id="L446" title="All 2 branches covered."> if (printHeader) {</span>
-<span class="fc" id="L447"> printHeaders(resultSet);</span>
+<span class="fc bfc" id="L443" title="All 2 branches covered."> if (printHeader) {</span>
+<span class="fc" id="L444"> printHeaders(resultSet);</span>
}
-<span class="fc" id="L449"> printRecords(resultSet);</span>
-<span class="fc" id="L450"> }</span>
+<span class="fc" id="L446"> printRecords(resultSet);</span>
+<span class="fc" id="L447"> }</span>
/**
* Prints all the objects in the given {@link Stream} handling nested collections/arrays as records.
@@ -462,14 +459,13 @@ public final class CSVPrinter implements
* Given the following data structure:
* </p>
*
- * <pre>
- * <code>
- * List&lt;String[]&gt; data = new ArrayList&lt;&gt;();
+ * <pre>{@code
+ * List<String[]> data = new ArrayList<>();
* data.add(new String[]{ "A", "B", "C" });
* data.add(new String[]{ "1", "2", "3" });
* data.add(new String[]{ "A1", "B2", "C3" });
- * Stream&lt;String[]&gt; stream = data.stream();
- * </code>
+ * Stream<String[]> stream = data.stream();
+ * }
* </pre>
*
* <p>
@@ -477,11 +473,11 @@ public final class CSVPrinter implements
* </p>
*
* <pre>
- * <code>
+ * {@code
* A, B, C
* 1, 2, 3
* A1, B2, C3
- * </code>
+ * }
* </pre>
*
* @param values
@@ -492,7 +488,7 @@ public final class CSVPrinter implements
*/
@SuppressWarnings({ "resource" }) // Caller closes.
public void printRecords(final Stream<?> values) throws IOException {
-<span class="fc" id="L495"> IOStream.adapt(values).forEachOrdered(this::printRecordObject);</span>
-<span class="fc" id="L496"> }</span>
+<span class="fc" id="L491"> IOStream.adapt(values).forEachOrdered(this::printRecordObject);</span>
+<span class="fc" id="L492"> }</span>
}
-</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.12.202403310830</span></div></body></html>
\ No newline at end of file