// $HeadURL: http://seanderickson1@forge.abcd.harvard.edu/svn/screensaver/branches/serickson/3411/core/src/main/java/edu/harvard/med/screensaver/io/parseutil/CsvSetColumn.java $
// $Id: CsvSetColumn.java 6946 2012-01-13 18:24:30Z seanderickson1 $
//
// Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.screensaver.io.parseutil;
import java.util.List;
import com.google.common.collect.Lists;
import edu.harvard.med.screensaver.io.DataExporter;
import edu.harvard.med.screensaver.io.ParseException;
public abstract class CsvListColumn<E> extends CsvColumn<List<E>>
{
public CsvListColumn(String name, int col, boolean isRequired)
{
super(name, col, isRequired);
}
@Override
protected List<E> parseField(String value) throws ParseException
{
List<E> list = Lists.newArrayList();
if (value != null) {
String[] values = value.split(DataExporter.LIST_DELIMITER, -1);
for (String v : values) {
E val = parseElement(v.trim());
// No duplicate checks in lists: use CsvSetColumn<E> if you want a unique list
list.add(val);
}
}
return list;
}
abstract protected E parseElement(String value);
}