package net.sourceforge.mayfly.datastore;
import net.sourceforge.mayfly.MayflyException;
import net.sourceforge.mayfly.util.CaseInsensitiveString;
import net.sourceforge.mayfly.util.ImmutableMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class TupleMapper {
private Map columnToCell;
public TupleMapper() {
columnToCell = new HashMap();
}
public TupleMapper(Row initial) {
this();
for (Iterator iter = initial.columnNames(); iter.hasNext();) {
CaseInsensitiveString name = (CaseInsensitiveString) iter.next();
columnToCell.put(name, initial.cell(name));
}
}
public void put(Column column, Cell cell) {
put(column.columnName(), cell);
}
public void put(String columnName, Cell cell) {
put(new CaseInsensitiveString(columnName), cell);
}
private Cell put(CaseInsensitiveString column, Cell cell) {
return (Cell) columnToCell.put(column, cell);
}
public void add(String column, Cell cell) {
add(new CaseInsensitiveString(column), cell);
}
public void add(CaseInsensitiveString columnCase, Cell cell) {
if (put(columnCase, cell) != null) {
throw new MayflyException(
"duplicate column " + columnCase);
}
}
public boolean hasColumn(CaseInsensitiveString column) {
return columnToCell.containsKey(column);
}
public Row asRow() {
return new Row(new ImmutableMap(columnToCell));
}
}