Added: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVParser.java.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVParser.java.html
 (added)
+++ 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVParser.java.html
 Wed Nov 26 15:56:58 2014
@@ -0,0 +1,537 @@
+<?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="../.resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../.resources/report.gif" 
type="image/gif"/><title>CSVParser.java</title><link rel="stylesheet" 
href="../.resources/prettify.css" type="text/css"/><script 
type="text/javascript" src="../.resources/prettify.js"></script></head><body 
onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../.sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons CSV</a> &gt; <a href="index.source.html" 
class="el_package">org.apache.commons.csv</a> &gt; <span 
class="el_source">CSVParser.java</span></div><h1>CSVParser.j
 ava</h1><pre class="source lang-java linenums">/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the &quot;License&quot;); 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 &quot;AS IS&quot; 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.
+ */
+
+package org.apache.commons.csv;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+import static org.apache.commons.csv.Token.Type.*;
+
+/**
+ * Parses CSV files according to the specified format.
+ *
+ * Because CSV appears in many different dialects, the parser supports many 
formats by allowing the
+ * specification of a {@link CSVFormat}.
+ *
+ * The parser works record wise. It is not possible to go back, once a record 
has been parsed from the input stream.
+ *
+ * &lt;h2&gt;Creating instances&lt;/h2&gt;
+ * &lt;p&gt;
+ * There are several static factory methods that can be used to create 
instances for various types of resources:
+ * &lt;/p&gt;
+ * &lt;ul&gt;
+ *     &lt;li&gt;{@link #parse(java.io.File, Charset, CSVFormat)}&lt;/li&gt;
+ *     &lt;li&gt;{@link #parse(String, CSVFormat)}&lt;/li&gt;
+ *     &lt;li&gt;{@link #parse(java.net.URL, java.nio.charset.Charset, 
CSVFormat)}&lt;/li&gt;
+ * &lt;/ul&gt;
+ * &lt;p&gt;
+ * Alternatively parsers can also be created by passing a {@link Reader} 
directly to the sole constructor.
+ *
+ * For those who like fluent APIs, parsers can be created using {@link 
CSVFormat#parse(java.io.Reader)} as a shortcut:
+ * &lt;/p&gt;
+ * &lt;pre&gt;
+ * for(CSVRecord record : CSVFormat.EXCEL.parse(in)) {
+ *     ...
+ * }
+ * &lt;/pre&gt;
+ *
+ * &lt;h2&gt;Parsing record wise&lt;/h2&gt;
+ * &lt;p&gt;
+ * To parse a CSV input from a file, you write:
+ * &lt;/p&gt;
+ *
+ * &lt;pre&gt;
+ * File csvData = new File(&amp;quot;/path/to/csv&amp;quot;);
+ * CSVParser parser = CSVParser.parse(csvData, CSVFormat.RFC4180);
+ * for (CSVRecord csvRecord : parser) {
+ *     ...
+ * }
+ * &lt;/pre&gt;
+ *
+ * &lt;p&gt;
+ * This will read the parse the contents of the file using the
+ * &lt;a href=&quot;http://tools.ietf.org/html/rfc4180&quot; 
target=&quot;_blank&quot;&gt;RFC 4180&lt;/a&gt; format.
+ * &lt;/p&gt;
+ *
+ * &lt;p&gt;
+ * To parse CSV input in a format like Excel, you write:
+ * &lt;/p&gt;
+ *
+ * &lt;pre&gt;
+ * CSVParser parser = CSVParser.parse(csvData, CSVFormat.EXCEL);
+ * for (CSVRecord csvRecord : parser) {
+ *     ...
+ * }
+ * &lt;/pre&gt;
+ *
+ * &lt;p&gt;
+ * If the predefined formats don't match the format at hands, custom formats 
can be defined. More information about
+ * customising CSVFormats is available in {@link CSVFormat CSVFormat JavaDoc}.
+ * &lt;/p&gt;
+ *
+ * &lt;h2&gt;Parsing into memory&lt;/h2&gt;
+ * &lt;p&gt;
+ * If parsing record wise is not desired, the contents of the input can be 
read completely into memory.
+ * &lt;/p&gt;
+ *
+ * &lt;pre&gt;
+ * Reader in = new StringReader(&amp;quot;a;b\nc;d&amp;quot;);
+ * CSVParser parser = new CSVParser(in, CSVFormat.EXCEL);
+ * List&amp;lt;CSVRecord&amp;gt; list = parser.getRecords();
+ * &lt;/pre&gt;
+ *
+ * &lt;p&gt;
+ * There are two constraints that have to be kept in mind:
+ * &lt;/p&gt;
+ *
+ * &lt;ol&gt;
+ *     &lt;li&gt;Parsing into memory starts at the current position of the 
parser. If you have already parsed records from
+ *     the input, those records will not end up in the in memory 
representation of your CSV data.&lt;/li&gt;
+ *     &lt;li&gt;Parsing into memory may consume a lot of system resources 
depending on the input. For example if you're
+ *     parsing a 150MB file of CSV data the contents will be read completely 
into memory.&lt;/li&gt;
+ * &lt;/ol&gt;
+ *
+ * &lt;h2&gt;Notes&lt;/h2&gt;
+ * &lt;p&gt;
+ * Internal parser state is completely covered by the format and the 
reader-state.
+ * &lt;/p&gt;
+ *
+ * @version $Id$
+ *
+ * @see &lt;a href=&quot;package-summary.html&quot;&gt;package documentation 
for more details&lt;/a&gt;
+ */
+public final class CSVParser implements Iterable&lt;CSVRecord&gt;, Closeable {
+
+    /**
+     * Creates a parser for the given {@link File}.
+     *
+     * &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This method internally 
creates a FileReader using
+     * {@link java.io.FileReader#FileReader(java.io.File)} which in turn 
relies on the default encoding of the JVM that
+     * is executing the code. If this is insufficient create a URL to the file 
and use
+     * {@link #parse(URL, Charset, CSVFormat)}&lt;/p&gt;
+     *
+     * @param file
+     *            a CSV file. Must not be null.
+     * @param charset
+     *            A charset
+     * @param format
+     *            the CSVFormat used for CSV parsing. Must not be null.
+     * @return a new parser
+     * @throws IllegalArgumentException
+     *             If the parameters of the format are inconsistent or if 
either file or format are null.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public static CSVParser parse(final File file, final Charset charset, 
final CSVFormat format) throws IOException {
+<span class="fc" id="L155">        Assertions.notNull(file, 
&quot;file&quot;);</span>
+<span class="fc" id="L156">        Assertions.notNull(format, 
&quot;format&quot;);</span>
+<span class="fc" id="L157">        return new CSVParser(new 
InputStreamReader(new FileInputStream(file), charset), format);</span>
+    }
+
+    /**
+     * Creates a parser for the given {@link String}.
+     *
+     * @param string
+     *            a CSV string. Must not be null.
+     * @param format
+     *            the CSVFormat used for CSV parsing. Must not be null.
+     * @return a new parser
+     * @throws IllegalArgumentException
+     *             If the parameters of the format are inconsistent or if 
either string or format are null.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public static CSVParser parse(final String string, final CSVFormat format) 
throws IOException {
+<span class="fc" id="L174">        Assertions.notNull(string, 
&quot;string&quot;);</span>
+<span class="fc" id="L175">        Assertions.notNull(format, 
&quot;format&quot;);</span>
+
+<span class="fc" id="L177">        return new CSVParser(new 
StringReader(string), format);</span>
+    }
+
+    /**
+     * Creates a parser for the given URL.
+     *
+     * &lt;p&gt;
+     * If you do not read all records from the given {@code url}, you should 
call {@link #close()} on the parser, unless
+     * you close the {@code url}.
+     * &lt;/p&gt;
+     *
+     * @param url
+     *            a URL. Must not be null.
+     * @param charset
+     *            the charset for the resource. Must not be null.
+     * @param format
+     *            the CSVFormat used for CSV parsing. Must not be null.
+     * @return a new parser
+     * @throws IllegalArgumentException
+     *             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
+     */
+    public static CSVParser parse(final URL url, final Charset charset, final 
CSVFormat format) throws IOException {
+<span class="fc" id="L201">        Assertions.notNull(url, 
&quot;url&quot;);</span>
+<span class="fc" id="L202">        Assertions.notNull(charset, 
&quot;charset&quot;);</span>
+<span class="fc" id="L203">        Assertions.notNull(format, 
&quot;format&quot;);</span>
+
+<span class="fc" id="L205">        return new CSVParser(new 
InputStreamReader(url.openStream(), charset), format);</span>
+    }
+
+    // the following objects are shared to reduce garbage
+
+    private final CSVFormat format;
+
+    /** A mapping of column names to column indices */
+    private final Map&lt;String, Integer&gt; headerMap;
+
+    private final Lexer lexer;
+
+    /** A record buffer for getRecord(). Grows as necessary and is reused. */
+<span class="fc" id="L218">    private final List&lt;String&gt; record = new 
ArrayList&lt;String&gt;();</span>
+
+    /**
+     * The next record number to assign.
+     */
+    private long recordNumber;
+
+    /**
+     * Lexer offset when the parser does not start parsing at the beginning of 
the source. Usually used in combination
+     * with {@link #recordNumber}.
+     */
+    private final long characterOffset;
+
+<span class="fc" id="L231">    private final Token reusableToken = new 
Token();</span>
+
+    /**
+     * Customized CSV parser using the given {@link CSVFormat}
+     *
+     * &lt;p&gt;
+     * If you do not read all records from the given {@code reader}, you 
should call {@link #close()} on the parser,
+     * unless you close the {@code reader}.
+     * &lt;/p&gt;
+     *
+     * @param reader
+     *            a Reader containing CSV-formatted input. Must not be null.
+     * @param format
+     *            the CSVFormat used for CSV parsing. Must not be null.
+     * @throws IllegalArgumentException
+     *             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
+     */
+    public CSVParser(final Reader reader, final CSVFormat format) throws 
IOException {
+<span class="fc" id="L251">        this(reader, format, 0, 1);</span>
+<span class="fc" id="L252">    }</span>
+
+    /**
+     * Customized CSV parser using the given {@link CSVFormat}
+     *
+     * &lt;p&gt;
+     * If you do not read all records from the given {@code reader}, you 
should call {@link #close()} on the parser,
+     * unless you close the {@code reader}.
+     * &lt;/p&gt;
+     *
+     * @param reader
+     *            a Reader containing CSV-formatted input. Must not be null.
+     * @param format
+     *            the CSVFormat used for CSV parsing. Must not be null.
+     * @param characterOffset
+     *            Lexer offset when the parser does not start parsing at the 
beginning of the source.
+     * @param recordNumber
+     *            The next record number to assign
+     * @throws IllegalArgumentException
+     *             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
+     * @since 1.1
+     */
+    public CSVParser(final Reader reader, final CSVFormat format, long 
characterOffset, long recordNumber)
+<span class="fc" id="L277">            throws IOException {</span>
+<span class="fc" id="L278">        Assertions.notNull(reader, 
&quot;reader&quot;);</span>
+<span class="fc" id="L279">        Assertions.notNull(format, 
&quot;format&quot;);</span>
+
+<span class="fc" id="L281">        this.format = format;</span>
+<span class="fc" id="L282">        this.lexer = new Lexer(format, new 
ExtendedBufferedReader(reader));</span>
+<span class="fc" id="L283">        this.headerMap = 
this.initializeHeader();</span>
+<span class="fc" id="L284">        this.characterOffset = 
characterOffset;</span>
+<span class="fc" id="L285">        this.recordNumber = recordNumber - 1;</span>
+<span class="fc" id="L286">    }</span>
+
+    private void addRecordValue() {
+<span class="fc" id="L289">        final String input = 
this.reusableToken.content.toString();</span>
+<span class="fc" id="L290">        final String nullString = 
this.format.getNullString();</span>
+<span class="fc bfc" id="L291" title="All 2 branches covered.">        if 
(nullString == null) {</span>
+<span class="fc" id="L292">            this.record.add(input);</span>
+        } else {
+<span class="fc bfc" id="L294" title="All 2 branches covered.">            
this.record.add(input.equalsIgnoreCase(nullString) ? null : input);</span>
+        }
+<span class="fc" id="L296">    }</span>
+
+    /**
+     * Closes resources.
+     *
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    @Override
+    public void close() throws IOException {
+<span class="pc bpc" id="L306" title="1 of 2 branches missed.">        if 
(this.lexer != null) {</span>
+<span class="fc" id="L307">            this.lexer.close();</span>
+        }
+<span class="fc" id="L309">    }</span>
+
+    /**
+     * Returns the current line number in the input stream.
+     *
+     * &lt;p&gt;
+     * &lt;strong&gt;ATTENTION:&lt;/strong&gt; If your CSV input has 
multi-line values, the returned number does not correspond to
+     * the record number.
+     * &lt;/p&gt;
+     *
+     * @return current line number
+     */
+    public long getCurrentLineNumber() {
+<span class="fc" id="L322">        return 
this.lexer.getCurrentLineNumber();</span>
+    }
+
+    /**
+     * Returns a copy of the header map that iterates in column order.
+     * &lt;p&gt;
+     * The map keys are column names. The map values are 0-based indices.
+     * &lt;/p&gt;
+     * @return a copy of the header map that iterates in column order.
+     */
+    public Map&lt;String, Integer&gt; getHeaderMap() {
+<span class="fc bfc" id="L333" title="All 2 branches covered.">        return 
this.headerMap == null ? null : new LinkedHashMap&lt;String, 
Integer&gt;(this.headerMap);</span>
+    }
+
+    /**
+     * Returns the current record number in the input stream.
+     *
+     * &lt;p&gt;
+     * &lt;strong&gt;ATTENTION:&lt;/strong&gt; If your CSV input has 
multi-line values, the returned number does not correspond to
+     * the line number.
+     * &lt;/p&gt;
+     *
+     * @return current record number
+     */
+    public long getRecordNumber() {
+<span class="fc" id="L347">        return this.recordNumber;</span>
+    }
+
+    /**
+     * Parses the CSV input according to the given format and returns the 
content as a list of
+     * {@link CSVRecord CSVRecords}.
+     *
+     * &lt;p&gt;
+     * The returned content starts at the current parse-position in the stream.
+     * &lt;/p&gt;
+     *
+     * @return list of {@link CSVRecord CSVRecords}, may be empty
+     * @throws IOException
+     *             on parse error or input read-failure
+     */
+    public List&lt;CSVRecord&gt; getRecords() throws IOException {
+        CSVRecord rec;
+<span class="fc" id="L364">        List&lt;CSVRecord&gt; records = new 
ArrayList&lt;CSVRecord&gt;();</span>
+<span class="fc bfc" id="L365" title="All 2 branches covered.">        while 
((rec = this.nextRecord()) != null) {</span>
+<span class="fc" id="L366">            records.add(rec);</span>
+        }
+<span class="fc" id="L368">        return records;</span>
+    }
+
+    /**
+     * Initializes the name to index mapping if the format defines a header.
+     *
+     * @return null if the format has no header.
+     * @throws IOException if there is a problem reading the header or 
skipping the first record
+     */
+    private Map&lt;String, Integer&gt; initializeHeader() throws IOException {
+<span class="fc" id="L378">        Map&lt;String, Integer&gt; hdrMap = 
null;</span>
+<span class="fc" id="L379">        final String[] formatHeader = 
this.format.getHeader();</span>
+<span class="fc bfc" id="L380" title="All 2 branches covered.">        if 
(formatHeader != null) {</span>
+<span class="fc" id="L381">            hdrMap = new LinkedHashMap&lt;String, 
Integer&gt;();</span>
+
+<span class="fc" id="L383">            String[] headerRecord = null;</span>
+<span class="fc bfc" id="L384" title="All 2 branches covered.">            if 
(formatHeader.length == 0) {</span>
+                // read the header from the first line of the file
+<span class="fc" id="L386">                final CSVRecord nextRecord = 
this.nextRecord();</span>
+<span class="pc bpc" id="L387" title="1 of 2 branches missed.">                
if (nextRecord != null) {</span>
+<span class="fc" id="L388">                    headerRecord = 
nextRecord.values();</span>
+                }
+<span class="fc" id="L390">            } else {</span>
+<span class="fc bfc" id="L391" title="All 2 branches covered.">                
if (this.format.getSkipHeaderRecord()) {</span>
+<span class="fc" id="L392">                    this.nextRecord();</span>
+                }
+<span class="fc" id="L394">                headerRecord = formatHeader;</span>
+            }
+
+            // build the name to index mappings
+<span class="pc bpc" id="L398" title="1 of 2 branches missed.">            if 
(headerRecord != null) {</span>
+<span class="fc bfc" id="L399" title="All 2 branches covered.">                
for (int i = 0; i &lt; headerRecord.length; i++) {</span>
+<span class="fc" id="L400">                    final String header = 
headerRecord[i];</span>
+<span class="fc" id="L401">                    final boolean containsHeader = 
hdrMap.containsKey(header);</span>
+<span class="fc bfc" id="L402" title="All 4 branches covered.">                
    final boolean emptyHeader = header == null || 
header.trim().isEmpty();</span>
+<span class="pc bpc" id="L403" title="1 of 6 branches missed.">                
    if (containsHeader &amp;&amp;</span>
+<span class="fc bfc" id="L404" title="All 2 branches covered.">                
            (!emptyHeader || (emptyHeader &amp;&amp; 
!this.format.getAllowMissingColumnNames()))) {</span>
+<span class="fc" id="L405">                        throw new 
IllegalArgumentException(&quot;The header contains a duplicate name: 
\&quot;&quot; + header +</span>
+<span class="fc" id="L406">                                &quot;\&quot; in 
&quot; + Arrays.toString(headerRecord));</span>
+                    }
+<span class="fc" id="L408">                    hdrMap.put(header, 
Integer.valueOf(i));</span>
+                }
+            }
+        }
+<span class="fc" id="L412">        return hdrMap;</span>
+    }
+
+    /**
+     * Gets whether this parser is closed.
+     *
+     * @return whether this parser is closed.
+     */
+    public boolean isClosed() {
+<span class="fc" id="L421">        return this.lexer.isClosed();</span>
+    }
+
+    /**
+     * Returns an iterator on the records.
+     *
+     * &lt;p&gt;IOExceptions occurring during the iteration are wrapped in a
+     * RuntimeException.
+     * If the parser is closed a call to {@code next()} will throw a
+     * NoSuchElementException.&lt;/p&gt;
+     */
+    @Override
+    public Iterator&lt;CSVRecord&gt; iterator() {
+<span class="fc" id="L434">        return new Iterator&lt;CSVRecord&gt;() 
{</span>
+            private CSVRecord current;
+
+            private CSVRecord getNextRecord() {
+                try {
+<span class="fc" id="L439">                    return 
CSVParser.this.nextRecord();</span>
+<span class="nc" id="L440">                } catch (final IOException e) 
{</span>
+                    // TODO: This is not great, throw an ISE instead?
+<span class="nc" id="L442">                    throw new 
RuntimeException(e);</span>
+                }
+            }
+
+            @Override
+            public boolean hasNext() {
+<span class="fc bfc" id="L448" title="All 2 branches covered.">                
if (CSVParser.this.isClosed()) {</span>
+<span class="fc" id="L449">                    return false;</span>
+                }
+<span class="fc bfc" id="L451" title="All 2 branches covered.">                
if (this.current == null) {</span>
+<span class="fc" id="L452">                    this.current = 
this.getNextRecord();</span>
+                }
+
+<span class="fc bfc" id="L455" title="All 2 branches covered.">                
return this.current != null;</span>
+            }
+
+            @Override
+            public CSVRecord next() {
+<span class="fc bfc" id="L460" title="All 2 branches covered.">                
if (CSVParser.this.isClosed()) {</span>
+<span class="fc" id="L461">                    throw new 
NoSuchElementException(&quot;CSVParser has been closed&quot;);</span>
+                }
+<span class="fc" id="L463">                CSVRecord next = 
this.current;</span>
+<span class="fc" id="L464">                this.current = null;</span>
+
+<span class="fc bfc" id="L466" title="All 2 branches covered.">                
if (next == null) {</span>
+                    // hasNext() wasn't called before
+<span class="fc" id="L468">                    next = 
this.getNextRecord();</span>
+<span class="fc bfc" id="L469" title="All 2 branches covered.">                
    if (next == null) {</span>
+<span class="fc" id="L470">                        throw new 
NoSuchElementException(&quot;No more CSV records available&quot;);</span>
+                    }
+                }
+
+<span class="fc" id="L474">                return next;</span>
+            }
+
+            @Override
+            public void remove() {
+<span class="fc" id="L479">                throw new 
UnsupportedOperationException();</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
+     */
+    CSVRecord nextRecord() throws IOException {
+<span class="fc" id="L492">        CSVRecord result = null;</span>
+<span class="fc" id="L493">        this.record.clear();</span>
+<span class="fc" id="L494">        StringBuilder sb = null;</span>
+<span class="fc" id="L495">        final long startCharPosition = 
lexer.getCharacterPosition() + this.characterOffset;</span>
+        do {
+<span class="fc" id="L497">            this.reusableToken.reset();</span>
+<span class="fc" id="L498">            
this.lexer.nextToken(this.reusableToken);</span>
+<span class="pc bpc" id="L499" title="2 of 6 branches missed.">            
switch (this.reusableToken.type) {</span>
+            case TOKEN:
+<span class="fc" id="L501">                this.addRecordValue();</span>
+<span class="fc" id="L502">                break;</span>
+            case EORECORD:
+<span class="fc" id="L504">                this.addRecordValue();</span>
+<span class="fc" id="L505">                break;</span>
+            case EOF:
+<span class="fc bfc" id="L507" title="All 2 branches covered.">                
if (this.reusableToken.isReady) {</span>
+<span class="fc" id="L508">                    this.addRecordValue();</span>
+                }
+                break;
+            case INVALID:
+<span class="nc" id="L512">                throw new IOException(&quot;(line 
&quot; + this.getCurrentLineNumber() + &quot;) invalid parse 
sequence&quot;);</span>
+            case COMMENT: // Ignored currently
+<span class="fc bfc" id="L514" title="All 2 branches covered.">                
if (sb == null) { // first comment for this record</span>
+<span class="fc" id="L515">                    sb = new StringBuilder();</span>
+                } else {
+<span class="fc" id="L517">                    sb.append(Constants.LF);</span>
+                }
+<span class="fc" id="L519">                
sb.append(this.reusableToken.content);</span>
+<span class="fc" id="L520">                this.reusableToken.type = TOKEN; // 
Read another token</span>
+<span class="fc" id="L521">                break;</span>
+            default:
+<span class="nc" id="L523">                throw new 
IllegalStateException(&quot;Unexpected Token type: &quot; + 
this.reusableToken.type);</span>
+            }
+<span class="fc bfc" id="L525" title="All 2 branches covered.">        } while 
(this.reusableToken.type == TOKEN);</span>
+
+<span class="fc bfc" id="L527" title="All 2 branches covered.">        if 
(!this.record.isEmpty()) {</span>
+<span class="fc" id="L528">            this.recordNumber++;</span>
+<span class="fc bfc" id="L529" title="All 2 branches covered.">            
final String comment = sb == null ? null : sb.toString();</span>
+<span class="fc" id="L530">            result = new 
CSVRecord(this.record.toArray(new String[this.record.size()]), this.headerMap, 
comment,</span>
+                    this.recordNumber, startCharPosition);
+        }
+<span class="fc" id="L533">        return result;</span>
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a 
href="http://www.eclemma.org/jacoco";>JaCoCo</a> 
0.7.2.201409121644</span></div></body></html>
\ No newline at end of file

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVParser.java.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVParser.java.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter$1.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter$1.html
 (added)
+++ 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter$1.html
 Wed Nov 26 15:56:58 2014
@@ -0,0 +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="../.resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../.resources/report.gif" 
type="image/gif"/><title>CSVPrinter.new Object() {...}</title><script 
type="text/javascript" src="../.resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../.sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons CSV</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <span 
class="el_class">CSVPrinter.new Object() {...}</span></div><h1>CSVPrinter.new 
Object() {...}</h1><table class="coverage" cellspacing="0" id="
 coveragetable"><thead><tr><td class="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">4 of 33</td><td class="ctr2">88%</td><td class="bar">0 of 
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class
 ="ctr2">1</td><td class="ctr1">0</td><td class="ctr2">1</td><td 
class="ctr1">0</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td 
id="a0"><a href="CSVPrinter.java.html#L198" class="el_method">static 
{...}</a></td><td class="bar" id="b0"><img src="../.resources/redbar.gif" 
width="14" height="10" title="4" alt="4"/><img src="../.resources/greenbar.gif" 
width="105" height="10" title="29" alt="29"/></td><td class="ctr2" 
id="c0">88%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td 
class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" 
id="h0">0</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">0</td><td 
class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span 
class="right">Created with <a href="http://www.eclemma.org/jacoco";>JaCoCo</a> 
0.7.2.201409121644</span></div></body></html>
\ No newline at end of file

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter$1.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter$1.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.html
 (added)
+++ 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.html
 Wed Nov 26 15:56:58 2014
@@ -0,0 +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="../.resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../.resources/report.gif" 
type="image/gif"/><title>CSVPrinter</title><script type="text/javascript" 
src="../.resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../.sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons CSV</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <span 
class="el_class">CSVPrinter</span></div><h1>CSVPrinter</h1><table 
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td 
class="sortable" id="a" onc
 lick="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">44 of 656</td><td class="ctr2">93%</td><td class="bar">11 of 
126</td><td class="ctr2">91%</td><td class="ctr1">9</td><td 
class="ctr2">80</td><td class="ctr1">6</td><td class="ctr
 2">164</td><td class="ctr1">0</td><td 
class="ctr2">15</td></tr></tfoot><tbody><tr><td id="a8"><a 
href="CSVPrinter.java.html#L307" 
class="el_method">printComment(String)</a></td><td class="bar" id="b0"><img 
src="../.resources/redbar.gif" width="9" height="10" title="16" alt="16"/><img 
src="../.resources/greenbar.gif" width="34" height="10" title="59" 
alt="59"/></td><td class="ctr2" id="c13">79%</td><td class="bar" id="d0"><img 
src="../.resources/redbar.gif" width="14" height="10" title="6" alt="6"/><img 
src="../.resources/greenbar.gif" width="16" height="10" title="7" 
alt="7"/></td><td class="ctr2" id="e12">54%</td><td class="ctr1" 
id="f0">4</td><td class="ctr2" id="g2">8</td><td class="ctr1" id="h0">3</td><td 
class="ctr2" id="i2">18</td><td class="ctr1" id="j0">0</td><td class="ctr2" 
id="k0">1</td></tr><tr><td id="a7"><a href="CSVPrinter.java.html#L186" 
class="el_method">printAndQuote(Object, CharSequence, int, int)</a></td><td 
class="bar" id="b1"><img src="../.resources/redbar.gif"
  width="7" height="10" title="12" alt="12"/><img 
src="../.resources/greenbar.gif" width="112" height="10" title="191" 
alt="191"/></td><td class="ctr2" id="c11">94%</td><td class="bar" id="d1"><img 
src="../.resources/redbar.gif" width="2" height="10" title="1" alt="1"/><img 
src="../.resources/greenbar.gif" width="117" height="10" title="50" 
alt="50"/></td><td class="ctr2" id="e8">98%</td><td class="ctr1" 
id="f1">1</td><td class="ctr2" id="g0">28</td><td class="ctr1" 
id="h1">1</td><td class="ctr2" id="i0">53</td><td class="ctr1" 
id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a13"><a 
href="CSVPrinter.java.html#L481" 
class="el_method">printRecords(Object[])</a></td><td class="bar" id="b2"><img 
src="../.resources/redbar.gif" width="4" height="10" title="8" alt="8"/><img 
src="../.resources/greenbar.gif" width="20" height="10" title="34" 
alt="34"/></td><td class="ctr2" id="c12">81%</td><td class="bar" id="d3"><img 
src="../.resources/redbar.gif" width="2" height="10" title="1
 " alt="1"/><img src="../.resources/greenbar.gif" width="11" height="10" 
title="5" alt="5"/></td><td class="ctr2" id="e10">83%</td><td class="ctr1" 
id="f2">1</td><td class="ctr2" id="g4">4</td><td class="ctr1" id="h2">1</td><td 
class="ctr2" id="i6">7</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#L430" 
class="el_method">printRecords(Iterable)</a></td><td class="bar" id="b3"><img 
src="../.resources/redbar.gif" width="4" height="10" title="8" alt="8"/><img 
src="../.resources/greenbar.gif" width="16" height="10" title="28" 
alt="28"/></td><td class="ctr2" id="c14">78%</td><td class="bar" id="d4"><img 
src="../.resources/redbar.gif" width="2" height="10" title="1" alt="1"/><img 
src="../.resources/greenbar.gif" width="11" height="10" title="5" 
alt="5"/></td><td class="ctr2" id="e11">83%</td><td class="ctr1" 
id="f3">1</td><td class="ctr2" id="g5">4</td><td class="ctr1" id="h3">1</td><td 
class="ctr2" id="i5">8</td><td clas
 s="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a6"><a 
href="CSVPrinter.java.html#L145" class="el_method">printAndEscape(CharSequence, 
int, int)</a></td><td class="bar" id="b4"><img src="../.resources/greenbar.gif" 
width="49" height="10" title="84" alt="84"/></td><td class="ctr2" 
id="c0">100%</td><td class="bar" id="d6"><img src="../.resources/greenbar.gif" 
width="42" height="10" title="18" alt="18"/></td><td class="ctr2" 
id="e0">100%</td><td class="ctr1" id="f6">0</td><td class="ctr2" 
id="g1">10</td><td class="ctr1" id="h4">0</td><td class="ctr2" 
id="i1">22</td><td class="ctr1" id="j4">0</td><td class="ctr2" 
id="k4">1</td></tr><tr><td id="a1"><a href="CSVPrinter.java.html#L43" 
class="el_method">CSVPrinter(Appendable, CSVFormat)</a></td><td class="bar" 
id="b5"><img src="../.resources/greenbar.gif" width="30" height="10" title="51" 
alt="51"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d2"><img 
src="../.resources/redbar.gif" width="2" height="10" 
 title="1" alt="1"/><img src="../.resources/greenbar.gif" width="16" 
height="10" title="7" alt="7"/></td><td class="ctr2" id="e9">88%</td><td 
class="ctr1" id="f4">1</td><td class="ctr2" id="g3">5</td><td class="ctr1" 
id="h5">0</td><td class="ctr2" id="i3">13</td><td class="ctr1" 
id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a5"><a 
href="CSVPrinter.java.html#L127" class="el_method">print(Object, CharSequence, 
int, int)</a></td><td class="bar" id="b6"><img src="../.resources/greenbar.gif" 
width="26" height="10" title="44" alt="44"/></td><td class="ctr2" 
id="c2">100%</td><td class="bar" id="d7"><img src="../.resources/greenbar.gif" 
width="14" height="10" title="6" alt="6"/></td><td class="ctr2" 
id="e1">100%</td><td class="ctr1" id="f7">0</td><td class="ctr2" 
id="g6">4</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i4">9</td><td 
class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td 
id="a4"><a href="CSVPrinter.java.html#L116" class="el_method">pri
 nt(Object)</a></td><td class="bar" id="b7"><img 
src="../.resources/greenbar.gif" width="14" height="10" title="24" 
alt="24"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d8"><img 
src="../.resources/greenbar.gif" width="9" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" 
id="f8">0</td><td class="ctr2" id="g7">3</td><td class="ctr1" id="h7">0</td><td 
class="ctr2" id="i7">7</td><td class="ctr1" id="j7">0</td><td class="ctr2" 
id="k7">1</td></tr><tr><td id="a14"><a href="CSVPrinter.java.html#L503" 
class="el_method">printRecords(ResultSet)</a></td><td class="bar" id="b8"><img 
src="../.resources/greenbar.gif" width="13" height="10" title="23" 
alt="23"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d9"><img 
src="../.resources/greenbar.gif" width="9" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e3">100%</td><td class="ctr1" 
id="f9">0</td><td class="ctr2" id="g8">3</td><td class="ctr1" id="h8">0</td><td 
class="ctr2" 
 id="i8">6</td><td class="ctr1" id="j8">0</td><td class="ctr2" 
id="k8">1</td></tr><tr><td id="a11"><a href="CSVPrinter.java.html#L384" 
class="el_method">printRecord(Object[])</a></td><td class="bar" id="b9"><img 
src="../.resources/greenbar.gif" width="13" height="10" title="22" 
alt="22"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d10"><img 
src="../.resources/greenbar.gif" width="4" height="10" title="2" 
alt="2"/></td><td class="ctr2" id="e4">100%</td><td class="ctr1" 
id="f10">0</td><td class="ctr2" id="g9">2</td><td class="ctr1" 
id="h9">0</td><td class="ctr2" id="i11">4</td><td class="ctr1" 
id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a10"><a 
href="CSVPrinter.java.html#L364" 
class="el_method">printRecord(Iterable)</a></td><td class="bar" id="b10"><img 
src="../.resources/greenbar.gif" width="9" height="10" title="16" 
alt="16"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d11"><img 
src="../.resources/greenbar.gif" width="4" height="10" tit
 le="2" alt="2"/></td><td class="ctr2" id="e5">100%</td><td class="ctr1" 
id="f11">0</td><td class="ctr2" id="g10">2</td><td class="ctr1" 
id="h10">0</td><td class="ctr2" id="i9">5</td><td class="ctr1" 
id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a9"><a 
href="CSVPrinter.java.html#L343" class="el_method">println()</a></td><td 
class="bar" id="b11"><img src="../.resources/greenbar.gif" width="8" 
height="10" title="15" alt="15"/></td><td class="ctr2" id="c7">100%</td><td 
class="bar" id="d12"><img src="../.resources/greenbar.gif" width="4" 
height="10" title="2" alt="2"/></td><td class="ctr2" id="e6">100%</td><td 
class="ctr1" id="f12">0</td><td class="ctr2" id="g11">2</td><td class="ctr1" 
id="h11">0</td><td class="ctr2" id="i10">5</td><td class="ctr1" 
id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a0"><a 
href="CSVPrinter.java.html#L87" class="el_method">close()</a></td><td 
class="bar" id="b12"><img src="../.resources/greenbar.gif" width="5" 
height="10" tit
 le="9" alt="9"/></td><td class="ctr2" id="c8">100%</td><td class="bar" 
id="d13"><img src="../.resources/greenbar.gif" width="4" height="10" title="2" 
alt="2"/></td><td class="ctr2" id="e7">100%</td><td class="ctr1" 
id="f13">0</td><td class="ctr2" id="g12">2</td><td class="ctr1" 
id="h12">0</td><td class="ctr2" id="i12">3</td><td class="ctr1" 
id="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a2"><a 
href="CSVPrinter.java.html#L100" class="el_method">flush()</a></td><td 
class="bar" id="b13"><img src="../.resources/greenbar.gif" width="5" 
height="10" title="9" alt="9"/></td><td class="ctr2" id="c9">100%</td><td 
class="bar" id="d5"><img src="../.resources/redbar.gif" width="2" height="10" 
title="1" alt="1"/><img src="../.resources/greenbar.gif" width="2" height="10" 
title="1" alt="1"/></td><td class="ctr2" id="e13">50%</td><td class="ctr1" 
id="f5">1</td><td class="ctr2" id="g13">2</td><td class="ctr1" 
id="h13">0</td><td class="ctr2" id="i13">3</td><td class="ctr1" id="j13">0
 </td><td class="ctr2" id="k13">1</td></tr><tr><td id="a3"><a 
href="CSVPrinter.java.html#L518" class="el_method">getOut()</a></td><td 
class="bar" id="b14"><img src="../.resources/greenbar.gif" width="1" 
height="10" title="3" alt="3"/></td><td class="ctr2" id="c10">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">1</td><td class="ctr1" 
id="j14">0</td><td class="ctr2" id="k14">1</td></tr></tbody></table><div 
class="footer"><span class="right">Created with <a 
href="http://www.eclemma.org/jacoco";>JaCoCo</a> 
0.7.2.201409121644</span></div></body></html>
\ No newline at end of file

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.java.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.java.html
 (added)
+++ 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.java.html
 Wed Nov 26 15:56:58 2014
@@ -0,0 +1,521 @@
+<?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="../.resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../.resources/report.gif" 
type="image/gif"/><title>CSVPrinter.java</title><link rel="stylesheet" 
href="../.resources/prettify.css" type="text/css"/><script 
type="text/javascript" src="../.resources/prettify.js"></script></head><body 
onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../.sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons CSV</a> &gt; <a href="index.source.html" 
class="el_package">org.apache.commons.csv</a> &gt; <span 
class="el_source">CSVPrinter.java</span></div><h1>CSVPrinte
 r.java</h1><pre class="source lang-java linenums">/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the &quot;License&quot;); 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 &quot;AS IS&quot; 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.
+ */
+
+package org.apache.commons.csv;
+
+import static org.apache.commons.csv.Constants.COMMENT;
+import static org.apache.commons.csv.Constants.CR;
+import static org.apache.commons.csv.Constants.LF;
+import static org.apache.commons.csv.Constants.SP;
+
+import java.io.Closeable;
+import java.io.Flushable;
+import java.io.IOException;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * Prints values in a CSV format.
+ *
+ * @version $Id$
+ */
+public final class CSVPrinter implements Flushable, Closeable {
+
+    /** The place that the values get written. */
+    private final Appendable out;
+    private final CSVFormat format;
+
+    /** True if we just began a new record. */
+<span class="fc" id="L43">    private boolean newRecord = true;</span>
+
+    /**
+     * Creates a printer that will print values to the given stream following 
the CSVFormat.
+     * &lt;p&gt;
+     * 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.
+     * &lt;/p&gt;
+     *
+     * @param out
+     *            stream to which to print. Must not be null.
+     * @param format
+     *            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.
+     */
+<span class="fc" id="L61">    public CSVPrinter(final Appendable out, final 
CSVFormat format) throws IOException {</span>
+<span class="fc" id="L62">        Assertions.notNull(out, 
&quot;out&quot;);</span>
+<span class="fc" id="L63">        Assertions.notNull(format, 
&quot;format&quot;);</span>
+
+<span class="fc" id="L65">        this.out = out;</span>
+<span class="fc" id="L66">        this.format = format;</span>
+        // 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.
+<span class="fc bfc" id="L69" title="All 2 branches covered.">        if 
(format.getHeaderComments() != null) {</span>
+<span class="fc bfc" id="L70" title="All 2 branches covered.">            for 
(String line : format.getHeaderComments()) {</span>
+<span class="pc bpc" id="L71" title="1 of 2 branches missed.">                
if (line != null) {</span>
+<span class="fc" id="L72">                    this.printComment(line);</span>
+                }
+            }
+        }
+<span class="fc bfc" id="L76" title="All 2 branches covered.">        if 
(format.getHeader() != null) {</span>
+<span class="fc" id="L77">            this.printRecord((Object[]) 
format.getHeader());</span>
+        }
+<span class="fc" id="L79">    }</span>
+
+    // ======================================================
+    // printing implementation
+    // ======================================================
+
+    @Override
+    public void close() throws IOException {
+<span class="fc bfc" id="L87" title="All 2 branches covered.">        if (out 
instanceof Closeable) {</span>
+<span class="fc" id="L88">            ((Closeable) out).close();</span>
+        }
+<span class="fc" id="L90">    }</span>
+
+    /**
+     * Flushes the underlying stream.
+     *
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    @Override
+    public void flush() throws IOException {
+<span class="pc bpc" id="L100" title="1 of 2 branches missed.">        if (out 
instanceof Flushable) {</span>
+<span class="fc" id="L101">            ((Flushable) out).flush();</span>
+        }
+<span class="fc" id="L103">    }</span>
+
+    /**
+     * Prints the string as the next value on the line. The value will be 
escaped or encapsulated as needed.
+     *
+     * @param value
+     *            value to be output.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void print(final Object value) throws IOException {
+        // null values are considered empty
+        String strValue;
+<span class="fc bfc" id="L116" title="All 2 branches covered.">        if 
(value == null) {</span>
+<span class="fc" id="L117">            final String nullString = 
format.getNullString();</span>
+<span class="fc bfc" id="L118" title="All 2 branches covered.">            
strValue = nullString == null ? Constants.EMPTY : nullString;</span>
+<span class="fc" id="L119">        } else {</span>
+<span class="fc" id="L120">            strValue = value.toString();</span>
+        }
+<span class="fc" id="L122">        this.print(value, strValue, 0, 
strValue.length());</span>
+<span class="fc" id="L123">    }</span>
+
+    private void print(final Object object, final CharSequence value, final 
int offset, final int len)
+            throws IOException {
+<span class="fc bfc" id="L127" title="All 2 branches covered.">        if 
(!newRecord) {</span>
+<span class="fc" id="L128">            
out.append(format.getDelimiter());</span>
+        }
+<span class="fc bfc" id="L130" title="All 2 branches covered.">        if 
(format.isQuoteCharacterSet()) {</span>
+            // the original object is needed so can check for Number
+<span class="fc" id="L132">            printAndQuote(object, value, offset, 
len);</span>
+<span class="fc bfc" id="L133" title="All 2 branches covered.">        } else 
if (format.isEscapeCharacterSet()) {</span>
+<span class="fc" id="L134">            printAndEscape(value, offset, 
len);</span>
+        } else {
+<span class="fc" id="L136">            out.append(value, offset, offset + 
len);</span>
+        }
+<span class="fc" id="L138">        newRecord = false;</span>
+<span class="fc" id="L139">    }</span>
+
+    /*
+     * Note: must only be called if escaping is enabled, otherwise will 
generate NPE
+     */
+    private void printAndEscape(final CharSequence value, final int offset, 
final int len) throws IOException {
+<span class="fc" id="L145">        int start = offset;</span>
+<span class="fc" id="L146">        int pos = offset;</span>
+<span class="fc" id="L147">        final int end = offset + len;</span>
+
+<span class="fc" id="L149">        final char delim = 
format.getDelimiter();</span>
+<span class="fc" id="L150">        final char escape = 
format.getEscapeCharacter().charValue();</span>
+
+<span class="fc bfc" id="L152" title="All 2 branches covered.">        while 
(pos &lt; end) {</span>
+<span class="fc" id="L153">            char c = value.charAt(pos);</span>
+<span class="fc bfc" id="L154" title="All 8 branches covered.">            if 
(c == CR || c == LF || c == delim || c == escape) {</span>
+                // write out segment up until this char
+<span class="fc bfc" id="L156" title="All 2 branches covered.">                
if (pos &gt; start) {</span>
+<span class="fc" id="L157">                    out.append(value, start, 
pos);</span>
+                }
+<span class="fc bfc" id="L159" title="All 2 branches covered.">                
if (c == LF) {</span>
+<span class="fc" id="L160">                    c = 'n';</span>
+<span class="fc bfc" id="L161" title="All 2 branches covered.">                
} else if (c == CR) {</span>
+<span class="fc" id="L162">                    c = 'r';</span>
+                }
+
+<span class="fc" id="L165">                out.append(escape);</span>
+<span class="fc" id="L166">                out.append(c);</span>
+
+<span class="fc" id="L168">                start = pos + 1; // start on the 
current char after this one</span>
+            }
+
+<span class="fc" id="L171">            pos++;</span>
+<span class="fc" id="L172">        }</span>
+
+        // write last segment
+<span class="fc bfc" id="L175" title="All 2 branches covered.">        if (pos 
&gt; start) {</span>
+<span class="fc" id="L176">            out.append(value, start, pos);</span>
+        }
+<span class="fc" id="L178">    }</span>
+
+    /*
+     * Note: must only be called if quoting is enabled, otherwise will 
generate NPE
+     */
+    // the original object is needed so can check for Number
+    private void printAndQuote(final Object object, final CharSequence value, 
final int offset, final int len)
+            throws IOException {
+<span class="fc" id="L186">        boolean quote = false;</span>
+<span class="fc" id="L187">        int start = offset;</span>
+<span class="fc" id="L188">        int pos = offset;</span>
+<span class="fc" id="L189">        final int end = offset + len;</span>
+
+<span class="fc" id="L191">        final char delimChar = 
format.getDelimiter();</span>
+<span class="fc" id="L192">        final char quoteChar = 
format.getQuoteCharacter().charValue();</span>
+
+<span class="fc" id="L194">        QuoteMode quoteModePolicy = 
format.getQuoteMode();</span>
+<span class="fc bfc" id="L195" title="All 2 branches covered.">        if 
(quoteModePolicy == null) {</span>
+<span class="fc" id="L196">            quoteModePolicy = 
QuoteMode.MINIMAL;</span>
+        }
+<span class="pc bpc" id="L198" title="1 of 5 branches missed.">        switch 
(quoteModePolicy) {</span>
+        case ALL:
+<span class="fc" id="L200">            quote = true;</span>
+<span class="fc" id="L201">            break;</span>
+        case NON_NUMERIC:
+<span class="fc bfc" id="L203" title="All 2 branches covered.">            
quote = !(object instanceof Number);</span>
+<span class="fc" id="L204">            break;</span>
+        case NONE:
+            // Use the existing escaping code
+<span class="fc" id="L207">            printAndEscape(value, offset, 
len);</span>
+<span class="fc" id="L208">            return;</span>
+        case MINIMAL:
+<span class="fc bfc" id="L210" title="All 2 branches covered.">            if 
(len &lt;= 0) {</span>
+                // always quote an empty token that is the first
+                // on the line, as it may be the only thing on the
+                // line. If it were not quoted in that case,
+                // an empty line has no tokens.
+<span class="fc bfc" id="L215" title="All 2 branches covered.">                
if (newRecord) {</span>
+<span class="fc" id="L216">                    quote = true;</span>
+                }
+            } else {
+<span class="fc" id="L219">                char c = value.charAt(pos);</span>
+
+                // TODO where did this rule come from?
+<span class="fc bfc" id="L222" title="All 14 branches covered.">               
 if (newRecord &amp;&amp; (c &lt; '0' || (c &gt; '9' &amp;&amp; c &lt; 'A') || 
(c &gt; 'Z' &amp;&amp; c &lt; 'a') || (c &gt; 'z'))) {</span>
+<span class="fc" id="L223">                    quote = true;</span>
+<span class="fc bfc" id="L224" title="All 2 branches covered.">                
} else if (c &lt;= COMMENT) {</span>
+                    // Some other chars at the start of a value caused the 
parser to fail, so for now
+                    // encapsulate if we start in anything less than '#'. We 
are being conservative
+                    // by including the default comment char too.
+<span class="fc" id="L228">                    quote = true;</span>
+                } else {
+<span class="fc bfc" id="L230" title="All 2 branches covered.">                
    while (pos &lt; end) {</span>
+<span class="fc" id="L231">                        c = 
value.charAt(pos);</span>
+<span class="fc bfc" id="L232" title="All 8 branches covered.">                
        if (c == LF || c == CR || c == quoteChar || c == delimChar) {</span>
+<span class="fc" id="L233">                            quote = true;</span>
+<span class="fc" id="L234">                            break;</span>
+                        }
+<span class="fc" id="L236">                        pos++;</span>
+                    }
+
+<span class="fc bfc" id="L239" title="All 2 branches covered.">                
    if (!quote) {</span>
+<span class="fc" id="L240">                        pos = end - 1;</span>
+<span class="fc" id="L241">                        c = 
value.charAt(pos);</span>
+                        // Some other chars at the end caused the parser to 
fail, so for now
+                        // encapsulate if we end in anything less than ' '
+<span class="fc bfc" id="L244" title="All 2 branches covered.">                
        if (c &lt;= SP) {</span>
+<span class="fc" id="L245">                            quote = true;</span>
+                        }
+                    }
+                }
+            }
+
+<span class="fc bfc" id="L251" title="All 2 branches covered.">            if 
(!quote) {</span>
+                // no encapsulation needed - write out the original value
+<span class="fc" id="L253">                out.append(value, start, 
end);</span>
+<span class="fc" id="L254">                return;</span>
+            }
+            break;
+        default:
+<span class="nc" id="L258">            throw new 
IllegalStateException(&quot;Unexpected Quote value: &quot; + 
quoteModePolicy);</span>
+        }
+
+<span class="fc bfc" id="L261" title="All 2 branches covered.">        if 
(!quote) {</span>
+            // no encapsulation needed - write out the original value
+<span class="fc" id="L263">            out.append(value, start, end);</span>
+<span class="fc" id="L264">            return;</span>
+        }
+
+        // we hit something that needed encapsulation
+<span class="fc" id="L268">        out.append(quoteChar);</span>
+
+        // Pick up where we left off: pos should be positioned on the first 
character that caused
+        // the need for encapsulation.
+<span class="fc bfc" id="L272" title="All 2 branches covered.">        while 
(pos &lt; end) {</span>
+<span class="fc" id="L273">            final char c = value.charAt(pos);</span>
+<span class="fc bfc" id="L274" title="All 2 branches covered.">            if 
(c == quoteChar) {</span>
+                // write out the chunk up until this point
+
+                // add 1 to the length to write out the encapsulator also
+<span class="fc" id="L278">                out.append(value, start, pos + 
1);</span>
+                // put the next starting position on the encapsulator so we 
will
+                // write it out again with the next string (effectively 
doubling it)
+<span class="fc" id="L281">                start = pos;</span>
+            }
+<span class="fc" id="L283">            pos++;</span>
+<span class="fc" id="L284">        }</span>
+
+        // write the last segment
+<span class="fc" id="L287">        out.append(value, start, pos);</span>
+<span class="fc" id="L288">        out.append(quoteChar);</span>
+<span class="fc" id="L289">    }</span>
+
+    /**
+     * Prints a comment on a new line among the delimiter separated values.
+     *
+     * &lt;p&gt;
+     * Comments will always begin on a new line and occupy a least one full 
line. The character specified to start
+     * comments and a space will be inserted at the beginning of each new line 
in the comment.
+     * &lt;/p&gt;
+     *
+     * If comments are disabled in the current CSV format this method does 
nothing.
+     *
+     * @param comment
+     *            the comment to output
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void printComment(final String comment) throws IOException {
+<span class="fc bfc" id="L307" title="All 2 branches covered.">        if 
(!format.isCommentMarkerSet()) {</span>
+<span class="fc" id="L308">            return;</span>
+        }
+<span class="pc bpc" id="L310" title="1 of 2 branches missed.">        if 
(!newRecord) {</span>
+<span class="nc" id="L311">            println();</span>
+        }
+<span class="fc" id="L313">        
out.append(format.getCommentMarker().charValue());</span>
+<span class="fc" id="L314">        out.append(SP);</span>
+<span class="fc bfc" id="L315" title="All 2 branches covered.">        for 
(int i = 0; i &lt; comment.length(); i++) {</span>
+<span class="fc" id="L316">            final char c = comment.charAt(i);</span>
+<span class="pc bpc" id="L317" title="1 of 3 branches missed.">            
switch (c) {</span>
+            case CR:
+<span class="nc bnc" id="L319" title="All 4 branches missed.">                
if (i + 1 &lt; comment.length() &amp;&amp; comment.charAt(i + 1) == LF) {</span>
+<span class="nc" id="L320">                    i++;</span>
+                }
+                //$FALL-THROUGH$ break intentionally excluded.
+            case LF:
+<span class="fc" id="L324">                println();</span>
+<span class="fc" id="L325">                
out.append(format.getCommentMarker().charValue());</span>
+<span class="fc" id="L326">                out.append(SP);</span>
+<span class="fc" id="L327">                break;</span>
+            default:
+<span class="fc" id="L329">                out.append(c);</span>
+                break;
+            }
+        }
+<span class="fc" id="L333">        println();</span>
+<span class="fc" id="L334">    }</span>
+
+    /**
+     * Outputs the record separator.
+     *
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void println() throws IOException {
+<span class="fc" id="L343">        final String recordSeparator = 
format.getRecordSeparator();</span>
+<span class="fc bfc" id="L344" title="All 2 branches covered.">        if 
(recordSeparator != null) {</span>
+<span class="fc" id="L345">            out.append(recordSeparator);</span>
+        }
+<span class="fc" id="L347">        newRecord = true;</span>
+<span class="fc" id="L348">    }</span>
+
+    /**
+     * Prints the given values a single record of delimiter separated values 
followed by the record separator.
+     *
+     * &lt;p&gt;
+     * The values will be quoted if needed. Quotes and newLine characters will 
be escaped. This method adds the record
+     * separator to the output after printing the record, so there is no need 
to call {@link #println()}.
+     * &lt;/p&gt;
+     *
+     * @param values
+     *            values to output.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void printRecord(final Iterable&lt;?&gt; values) throws IOException 
{
+<span class="fc bfc" id="L364" title="All 2 branches covered.">        for 
(final Object value : values) {</span>
+<span class="fc" id="L365">            print(value);</span>
+<span class="fc" id="L366">        }</span>
+<span class="fc" id="L367">        println();</span>
+<span class="fc" id="L368">    }</span>
+
+    /**
+     * Prints the given values a single record of delimiter separated values 
followed by the record separator.
+     *
+     * &lt;p&gt;
+     * The values will be quoted if needed. Quotes and newLine characters will 
be escaped. This method adds the record
+     * separator to the output after printing the record, so there is no need 
to call {@link #println()}.
+     * &lt;/p&gt;
+     *
+     * @param values
+     *            values to output.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void printRecord(final Object... values) throws IOException {
+<span class="fc bfc" id="L384" title="All 2 branches covered.">        for 
(final Object value : values) {</span>
+<span class="fc" id="L385">            print(value);</span>
+        }
+<span class="fc" id="L387">        println();</span>
+<span class="fc" id="L388">    }</span>
+
+    /**
+     * Prints all the objects in the given collection handling nested 
collections/arrays as records.
+     *
+     * &lt;p&gt;
+     * If the given collection only contains simple objects, this method will 
print a single record like
+     * {@link #printRecord(Iterable)}. If the given collections contains 
nested collections/arrays those nested elements
+     * will each be printed as records using {@link #printRecord(Object...)}.
+     * &lt;/p&gt;
+     *
+     * &lt;p&gt;
+     * Given the following data structure:
+     * &lt;/p&gt;
+     *
+     * &lt;pre&gt;
+     * &lt;code&gt;
+     * List&amp;lt;String[]&amp;gt; data = ...
+     * data.add(new String[]{ &quot;A&quot;, &quot;B&quot;, &quot;C&quot; });
+     * data.add(new String[]{ &quot;1&quot;, &quot;2&quot;, &quot;3&quot; });
+     * data.add(new String[]{ &quot;A1&quot;, &quot;B2&quot;, &quot;C3&quot; 
});
+     * &lt;/code&gt;
+     * &lt;/pre&gt;
+     *
+     * &lt;p&gt;
+     * Calling this method will print:
+     * &lt;/p&gt;
+     *
+     * &lt;pre&gt;
+     * &lt;code&gt;
+     * A, B, C
+     * 1, 2, 3
+     * A1, B2, C3
+     * &lt;/code&gt;
+     * &lt;/pre&gt;
+     *
+     * @param values
+     *            the values to print.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void printRecords(final Iterable&lt;?&gt; values) throws 
IOException {
+<span class="fc bfc" id="L430" title="All 2 branches covered.">        for 
(final Object value : values) {</span>
+<span class="fc bfc" id="L431" title="All 2 branches covered.">            if 
(value instanceof Object[]) {</span>
+<span class="fc" id="L432">                this.printRecord((Object[]) 
value);</span>
+<span class="pc bpc" id="L433" title="1 of 2 branches missed.">            } 
else if (value instanceof Iterable) {</span>
+<span class="fc" id="L434">                
this.printRecord((Iterable&lt;?&gt;) value);</span>
+            } else {
+<span class="nc" id="L436">                this.printRecord(value);</span>
+            }
+<span class="fc" id="L438">        }</span>
+<span class="fc" id="L439">    }</span>
+
+    /**
+     * Prints all the objects in the given array handling nested 
collections/arrays as records.
+     *
+     * &lt;p&gt;
+     * If the given array only contains simple objects, this method will print 
a single record like
+     * {@link #printRecord(Object...)}. If the given collections contains 
nested collections/arrays those nested
+     * elements will each be printed as records using {@link 
#printRecord(Object...)}.
+     * &lt;/p&gt;
+     *
+     * &lt;p&gt;
+     * Given the following data structure:
+     * &lt;/p&gt;
+     *
+     * &lt;pre&gt;
+     * &lt;code&gt;
+     * String[][] data = new String[3][]
+     * data[0] = String[]{ &quot;A&quot;, &quot;B&quot;, &quot;C&quot; };
+     * data[1] = new String[]{ &quot;1&quot;, &quot;2&quot;, &quot;3&quot; };
+     * data[2] = new String[]{ &quot;A1&quot;, &quot;B2&quot;, &quot;C3&quot; 
};
+     * &lt;/code&gt;
+     * &lt;/pre&gt;
+     *
+     * &lt;p&gt;
+     * Calling this method will print:
+     * &lt;/p&gt;
+     *
+     * &lt;pre&gt;
+     * &lt;code&gt;
+     * A, B, C
+     * 1, 2, 3
+     * A1, B2, C3
+     * &lt;/code&gt;
+     * &lt;/pre&gt;
+     *
+     * @param values
+     *            the values to print.
+     * @throws IOException
+     *             If an I/O error occurs
+     */
+    public void printRecords(final Object... values) throws IOException {
+<span class="fc bfc" id="L481" title="All 2 branches covered.">        for 
(final Object value : values) {</span>
+<span class="fc bfc" id="L482" title="All 2 branches covered.">            if 
(value instanceof Object[]) {</span>
+<span class="fc" id="L483">                this.printRecord((Object[]) 
value);</span>
+<span class="pc bpc" id="L484" title="1 of 2 branches missed.">            } 
else if (value instanceof Iterable) {</span>
+<span class="fc" id="L485">                
this.printRecord((Iterable&lt;?&gt;) value);</span>
+            } else {
+<span class="nc" id="L487">                this.printRecord(value);</span>
+            }
+        }
+<span class="fc" id="L490">    }</span>
+
+    /**
+     * Prints all the objects in the given JDBC result set.
+     *
+     * @param resultSet
+     *            result set the values to print.
+     * @throws IOException
+     *             If an I/O error occurs
+     * @throws SQLException
+     *             if a database access error occurs
+     */
+    public void printRecords(final ResultSet resultSet) throws SQLException, 
IOException {
+<span class="fc" id="L503">        final int columnCount = 
resultSet.getMetaData().getColumnCount();</span>
+<span class="fc bfc" id="L504" title="All 2 branches covered.">        while 
(resultSet.next()) {</span>
+<span class="fc bfc" id="L505" title="All 2 branches covered.">            for 
(int i = 1; i &lt;= columnCount; i++) {</span>
+<span class="fc" id="L506">                
print(resultSet.getObject(i));</span>
+            }
+<span class="fc" id="L508">            println();</span>
+        }
+<span class="fc" id="L510">    }</span>
+
+    /**
+     * Gets the target Appendable.
+     *
+     * @return the target Appendable.
+     */
+    public Appendable getOut() {
+<span class="fc" id="L518">        return this.out;</span>
+    }
+}
+</pre><div class="footer"><span class="right">Created with <a 
href="http://www.eclemma.org/jacoco";>JaCoCo</a> 
0.7.2.201409121644</span></div></body></html>
\ No newline at end of file

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.java.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVPrinter.java.html
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVRecord.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVRecord.html
 (added)
+++ 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVRecord.html
 Wed Nov 26 15:56:58 2014
@@ -0,0 +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="../.resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../.resources/report.gif" 
type="image/gif"/><title>CSVRecord</title><script type="text/javascript" 
src="../.resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../.sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons CSV</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <span 
class="el_class">CSVRecord</span></div><h1>CSVRecord</h1><table 
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td 
class="sortable" id="a" onclic
 k="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">29 of 244</td><td class="ctr2">88%</td><td class="bar">1 of 
24</td><td class="ctr2">96%</td><td class="ctr1">2</td><td 
class="ctr2">30</td><td class="ctr1">2</td><td class="ctr2">41
 </td><td class="ctr1">1</td><td 
class="ctr2">18</td></tr></tfoot><tbody><tr><td id="a16"><a 
href="CSVRecord.java.html#L253" class="el_method">toString()</a></td><td 
class="bar" id="b0"><img src="../.resources/redbar.gif" width="52" height="10" 
title="28" alt="28"/></td><td class="ctr2" id="c17">0%</td><td class="bar" 
id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f0">1</td><td 
class="ctr2" id="g6">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" 
id="i3">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" 
id="k0">1</td></tr><tr><td id="a0"><a href="CSVRecord.java.html#L54" 
class="el_method">CSVRecord(String[], Map, String, long, long)</a></td><td 
class="bar" id="b1"><img src="../.resources/redbar.gif" width="1" height="10" 
title="1" alt="1"/><img src="../.resources/greenbar.gif" width="39" height="10" 
title="21" alt="21"/></td><td class="ctr2" id="c16">95%</td><td class="bar" 
id="d0"><img src="../.resources/redbar.gif" width="20" height="10" title="1" 
alt="1"/>
 <img src="../.resources/greenbar.gif" width="20" height="10" title="1" 
alt="1"/></td><td class="ctr2" id="e5">50%</td><td class="ctr1" 
id="f1">1</td><td class="ctr2" id="g5">2</td><td class="ctr1" id="h1">0</td><td 
class="ctr2" id="i2">7</td><td class="ctr1" id="j1">0</td><td class="ctr2" 
id="k1">1</td></tr><tr><td id="a3"><a href="CSVRecord.java.html#L98" 
class="el_method">get(String)</a></td><td class="bar" id="b2"><img 
src="../.resources/greenbar.gif" width="120" height="10" title="64" 
alt="64"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"><img 
src="../.resources/greenbar.gif" width="80" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" 
id="f2">0</td><td class="ctr2" id="g1">3</td><td class="ctr1" id="h2">0</td><td 
class="ctr2" id="i0">10</td><td class="ctr1" id="j2">0</td><td class="ctr2" 
id="k2">1</td></tr><tr><td id="a11"><a href="CSVRecord.java.html#L204" 
class="el_method">putIn(Map)</a></td><td class="bar" id="b3"><img s
 rc="../.resources/greenbar.gif" width="73" height="10" title="39" 
alt="39"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"><img 
src="../.resources/greenbar.gif" width="120" height="10" title="6" 
alt="6"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" 
id="f3">0</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h3">0</td><td 
class="ctr2" id="i1">8</td><td class="ctr1" id="j3">0</td><td class="ctr2" 
id="k3">1</td></tr><tr><td id="a9"><a href="CSVRecord.java.html#L183" 
class="el_method">isSet(String)</a></td><td class="bar" id="b4"><img 
src="../.resources/greenbar.gif" width="33" height="10" title="18" 
alt="18"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d3"><img 
src="../.resources/greenbar.gif" width="80" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" 
id="f4">0</td><td class="ctr2" id="g2">3</td><td class="ctr1" id="h4">0</td><td 
class="ctr2" id="i4">1</td><td class="ctr1" id="j4">0</td><td class="ct
 r2" id="k4">1</td></tr><tr><td id="a7"><a href="CSVRecord.java.html#L161" 
class="el_method">isConsistent()</a></td><td class="bar" id="b5"><img 
src="../.resources/greenbar.gif" width="26" height="10" title="14" 
alt="14"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d4"><img 
src="../.resources/greenbar.gif" width="80" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e3">100%</td><td class="ctr1" 
id="f5">0</td><td class="ctr2" id="g3">3</td><td class="ctr1" id="h5">0</td><td 
class="ctr2" id="i5">1</td><td class="ctr1" id="j5">0</td><td class="ctr2" 
id="k5">1</td></tr><tr><td id="a8"><a href="CSVRecord.java.html#L172" 
class="el_method">isMapped(String)</a></td><td class="bar" id="b6"><img 
src="../.resources/greenbar.gif" width="22" height="10" title="12" 
alt="12"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d5"><img 
src="../.resources/greenbar.gif" width="80" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="e4">100%</td><td class="ctr1" id="
 f6">0</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h6">0</td><td 
class="ctr2" id="i6">1</td><td class="ctr1" id="j6">0</td><td class="ctr2" 
id="k6">1</td></tr><tr><td id="a15"><a href="CSVRecord.java.html#L242" 
class="el_method">toMap()</a></td><td class="bar" id="b7"><img 
src="../.resources/greenbar.gif" width="16" height="10" title="9" 
alt="9"/></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="f7">0</td><td class="ctr2" 
id="g7">1</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i7">1</td><td 
class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td 
id="a1"><a href="CSVRecord.java.html#L70" 
class="el_method">get(Enum)</a></td><td class="bar" id="b8"><img 
src="../.resources/greenbar.gif" width="9" height="10" title="5" 
alt="5"/></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="f8">0</td><td class="ctr2" 
id="g8">1</td><
 td class="ctr1" id="h8">0</td><td class="ctr2" id="i8">1</td><td class="ctr1" 
id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a2"><a 
href="CSVRecord.java.html#L81" class="el_method">get(int)</a></td><td 
class="bar" id="b9"><img src="../.resources/greenbar.gif" width="9" height="10" 
title="5" alt="5"/></td><td class="ctr2" id="c7">100%</td><td class="bar" 
id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td 
class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" 
id="i9">1</td><td class="ctr1" id="j9">0</td><td class="ctr2" 
id="k9">1</td></tr><tr><td id="a10"><a href="CSVRecord.java.html#L193" 
class="el_method">iterator()</a></td><td class="bar" id="b10"><img 
src="../.resources/greenbar.gif" width="7" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c8">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 c
 lass="ctr2" id="i10">1</td><td class="ctr1" id="j10">0</td><td class="ctr2" 
id="k10">1</td></tr><tr><td id="a12"><a href="CSVRecord.java.html#L222" 
class="el_method">size()</a></td><td class="bar" id="b11"><img 
src="../.resources/greenbar.gif" width="7" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c9">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="i11">1</td><td class="ctr1" id="j11">0</td><td class="ctr2" 
id="k11">1</td></tr><tr><td id="a14"><a href="CSVRecord.java.html#L233" 
class="el_method">toList()</a></td><td class="bar" id="b12"><img 
src="../.resources/greenbar.gif" width="7" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c10">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">1</
 td><td class="ctr1" id="j12">0</td><td class="ctr2" 
id="k12">1</td></tr><tr><td id="a13"><a href="CSVRecord.java.html#L35" 
class="el_method">static {...}</a></td><td class="bar" id="b13"><img 
src="../.resources/greenbar.gif" width="7" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c11">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">1</td><td class="ctr1" id="j13">0</td><td class="ctr2" 
id="k13">1</td></tr><tr><td id="a4"><a href="CSVRecord.java.html#L123" 
class="el_method">getCharacterPosition()</a></td><td class="bar" id="b14"><img 
src="../.resources/greenbar.gif" width="5" height="10" title="3" 
alt="3"/></td><td class="ctr2" id="c12">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">1</td><t
 d class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td 
id="a5"><a href="CSVRecord.java.html#L132" 
class="el_method">getComment()</a></td><td class="bar" id="b15"><img 
src="../.resources/greenbar.gif" width="5" height="10" title="3" 
alt="3"/></td><td class="ctr2" id="c13">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">1</td><td class="ctr1" id="j15">0</td><td class="ctr2" 
id="k15">1</td></tr><tr><td id="a6"><a href="CSVRecord.java.html#L147" 
class="el_method">getRecordNumber()</a></td><td class="bar" id="b16"><img 
src="../.resources/greenbar.gif" width="5" height="10" title="3" 
alt="3"/></td><td class="ctr2" id="c14">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">1</td><td class="c
 tr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a17"><a 
href="CSVRecord.java.html#L259" class="el_method">values()</a></td><td 
class="bar" id="b17"><img src="../.resources/greenbar.gif" width="5" 
height="10" title="3" alt="3"/></td><td class="ctr2" id="c15">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.eclemma.org/jacoco";>JaCoCo</a> 
0.7.2.201409121644</span></div></body></html>
\ No newline at end of file

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVRecord.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
websites/production/commons/content/proper/commons-csv/archives/1.1/jacoco/org.apache.commons.csv/CSVRecord.html
------------------------------------------------------------------------------
    svn:keywords = Id


Reply via email to