package com.esri;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
/**
*/
public class ColumnParser
{
private final Log m_log = LogFactory.getLog(getClass());
private final Pattern m_pattern = Pattern.compile(":");
public ColumnParser()
{
}
public static ColumnParser newInstance()
{
return new ColumnParser();
}
public List<ColumnInterface> parseColumn(final String text)
{
return parseColumns(new String[]{text});
}
public List<ColumnInterface> parseColumns(final String[] textArr)
{
final List<ColumnInterface> list = new ArrayList<ColumnInterface>();
for (final String text : textArr)
{
parseColumn(list, text);
}
return list;
}
private void parseColumn(
final List<ColumnInterface> list,
final String text)
{
final String[] items = m_pattern.split(text);
if (items.length == 3)
{
list.add(new ColumnDouble(items[0], items[1], items[2]));
}
else if (items.length == 4)
{
switch (items[3].charAt(0))
{
case 'f':
list.add(new ColumnFloat(items[0], items[1], items[2]));
break;
case 'l':
list.add(new ColumnLong(items[0], items[1], items[2]));
break;
case 'i':
list.add(new ColumnInt(items[0], items[1], items[2]));
break;
default:
list.add(new ColumnDouble(items[0], items[1], items[2]));
}
}
else
{
m_log.warn("Expecting 3 or 4 items in '" + text + "' when split by comma");
}
}
}