On Tue, Jan 21, 2014 at 6:20 AM, Adrian Crum < adrian.c...@sandglass-software.com> wrote:
> This looks really ugly. How do I update the CSVRecord using Map.put()? > > Is there a reason you didn't use the design I proposed? > What design is that? Obviously not in this thread but a reference would be helpful. Gary > > Adrian Crum > Sandglass Software > www.sandglass-software.com > > On 1/20/2014 9:12 PM, ggreg...@apache.org wrote: > >> 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<String, String> putIn(Map<String, String> map) { >> + for (Entry<String, Integer> 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<String, String> toMap() { >> + return putIn(new HashMap<String, String>(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<String, Integer>(); >> header.put("first", Integer.valueOf(0)); >> @@ -123,4 +124,31 @@ public class CSVRecordTest { >> } >> } >> >> + @Test >> + public void testPutInMap() { >> + Map<String, String> map = new ConcurrentHashMap<String, >> String>(); >> + this.recordWithHeader.putIn(map); >> + this.validateMap(map, false); >> + } >> + >> + @Test >> + public void testToMap() { >> + Map<String, String> map = this.recordWithHeader.toMap(); >> + this.validateMap(map, true); >> + } >> + >> + private void validateMap(Map<String, String> 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")); >> + } >> + >> } >> >> >> > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory