/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.server.preference.family;
import net.codjo.segmentation.server.util.SegmentationUtil;
/**
* Une Row de donn�es.
*/
public class Row {
private Object[] values;
private String[] columnNames;
public Row(String[] columnNames) {
this(columnNames, new Object[columnNames.length]);
}
public Row(String[] columnNames, Object[] values) {
if (columnNames.length != values.length) {
throw new IllegalArgumentException("Nombre de colonnes et de valeurs diff�rentes");
}
this.columnNames = columnNames;
this.values = values;
}
public Object getColumnValue(String tableName, String columnName) {
return values[findColumnIndex(tableName, columnName)];
}
public Object getColumnValue(int index) {
return values[index];
}
public void setColumnValue(int index, Object value) {
values[index] = value;
}
public int findColumnIndex(String tableName, String columnName) {
String realName = SegmentationUtil.determineFullColumnName(tableName, columnName);
for (int i = 0; i < columnNames.length; i++) {
String name = columnNames[i];
if (name.equals(realName)) {
return i;
}
}
throw new IllegalArgumentException("Colonne " + tableName + "." + columnName + " est introuvable");
}
public String[] getColumnNames() {
return columnNames;
}
@Override
public String toString() {
StringBuffer buffer = new StringBuffer("row{");
for (int i = 0; i < columnNames.length; i++) {
if (i != 0) {
buffer.append(", ");
}
buffer.append(columnNames[i]).append("=").append(values[i]);
}
return buffer.append("}").toString();
}
}