package nl.helixsoft.recordstream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nl.helixsoft.util.StringUtils;
public class DefaultRecordMetaData implements RecordMetaData
{
private final String[] columns;
private final Map<String, Integer> index = new HashMap<String, Integer>();
public DefaultRecordMetaData(String[] columns)
{
this.columns = columns;
refreshIndex();
}
private void refreshIndex()
{
index.clear();
for (int i = 0; i < columns.length; ++i)
{
index.put (columns[i], i);
}
}
public DefaultRecordMetaData(List<String> list)
{
this.columns = list.toArray(new String[0]);
for (int i = 0; i < columns.length; ++i)
{
index.put (columns[i], i);
}
}
public int getNumCols()
{
return columns.length;
}
public String getColumnName(int i)
{
return columns[i];
}
public int getColumnIndex(String name)
{
if (!index.containsKey(name))
throw new IllegalArgumentException("Column '" + name + "' doesn't exist, there are " + columns.length + " options [" + StringUtils.join (",", columns) + "]");
return index.get(name);
}
@Override
public boolean hasColumnName(String name)
{
return index.containsKey(name);
}
@Override
public void setColumnName(int colIx, String value)
{
columns[colIx] = value;
refreshIndex();
}
}