Return-Path: X-Original-To: apmail-commons-commits-archive@minotaur.apache.org Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 347FA10C47 for ; Tue, 21 Jan 2014 02:12:31 +0000 (UTC) Received: (qmail 46704 invoked by uid 500); 21 Jan 2014 02:12:27 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 46640 invoked by uid 500); 21 Jan 2014 02:12:27 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 46633 invoked by uid 99); 21 Jan 2014 02:12:27 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Jan 2014 02:12:27 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Jan 2014 02:12:24 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5A5DA238883D; Tue, 21 Jan 2014 02:12:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1559905 - in /commons/proper/csv/trunk/src: main/java/org/apache/commons/csv/CSVRecord.java test/java/org/apache/commons/csv/CSVRecordTest.java Date: Tue, 21 Jan 2014 02:12:03 -0000 To: commits@commons.apache.org From: ggregory@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140121021203.5A5DA238883D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ggregory Date: Tue Jan 21 02:12:02 2014 New Revision: 1559905 URL: http://svn.apache.org/r1559905 Log: [CSV-105] Add Map conversion API to CSVRecord. Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java Modified: commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java?rev=1559905&r1=1559904&r2=1559905&view=diff ============================================================================== --- commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java (original) +++ commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVRecord.java Tue Jan 21 02:12:02 2014 @@ -19,8 +19,10 @@ package org.apache.commons.csv; import java.io.Serializable; import java.util.Arrays; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Map.Entry; /** * A CSV record parsed from a CSV file. @@ -168,6 +170,19 @@ public final class CSVRecord implements } /** + * Puts all values of this record into the given Map. + * + * @param map The Map to populate. + * @return the given map. + */ + public Map putIn(Map map) { + for (Entry entry : mapping.entrySet()) { + map.put(entry.getKey(), values[entry.getValue().intValue()]); + } + return map; + } + + /** * Returns the number of values in this record. * * @return the number of values. @@ -176,6 +191,15 @@ public final class CSVRecord implements return values.length; } + /** + * Converts this record into a Map. + * + * @return A new Map. The map is empty if the record has no headers. + */ + public Map toMap() { + return putIn(new HashMap(values.length)); + } + @Override public String toString() { return Arrays.toString(values); Modified: commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java URL: http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java?rev=1559905&r1=1559904&r2=1559905&view=diff ============================================================================== --- commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java (original) +++ commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVRecordTest.java Tue Jan 21 02:12:02 2014 @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.junit.Before; import org.junit.Test; @@ -37,7 +38,7 @@ public class CSVRecordTest { @Before public void setUp() throws Exception { - values = new String[] { "first", "second", "third" }; + values = new String[] { "A", "B", "C" }; record = new CSVRecord(values, null, null, 0); header = new HashMap(); header.put("first", Integer.valueOf(0)); @@ -123,4 +124,31 @@ public class CSVRecordTest { } } + @Test + public void testPutInMap() { + Map map = new ConcurrentHashMap(); + this.recordWithHeader.putIn(map); + this.validateMap(map, false); + } + + @Test + public void testToMap() { + Map map = this.recordWithHeader.toMap(); + this.validateMap(map, true); + } + + private void validateMap(Map map, boolean allowsNulls) { + assertTrue(map.containsKey("first")); + assertTrue(map.containsKey("second")); + assertTrue(map.containsKey("third")); + assertFalse(map.containsKey("fourth")); + if (allowsNulls) { + assertFalse(map.containsKey(null)); + } + assertEquals("A", map.get("first")); + assertEquals("B", map.get("second")); + assertEquals("C", map.get("third")); + assertEquals(null, map.get("fourth")); + } + }