package es.icarto.gvsig.navtableforms.gui.tables.model;
import org.apache.log4j.Logger;
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
import com.iver.cit.gvsig.exceptions.layers.ReloadLayerException;
import com.iver.cit.gvsig.fmap.core.IRow;
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
import es.icarto.gvsig.navtableforms.gui.tables.filter.IRowFilter;
@SuppressWarnings("serial")
public class VectorialTableModel extends BaseTableModel {
private static final Logger logger = Logger
.getLogger(VectorialTableModel.class);
protected FLyrVect layer;
public VectorialTableModel(FLyrVect layer, String[] colNames,
String[] colAliases) {
super(colNames, colAliases);
this.layer = layer;
initMetadata();
}
public VectorialTableModel(FLyrVect layer, String[] colNames,
String[] colAliases, IRowFilter filter) {
super(colNames, colAliases, filter);
this.layer = layer;
initMetadata();
}
@Override
public Object getValueAt(int row, int col) {
try {
return layer.getRecordset().getFieldValue(rowIndexes.get(row),
layer.getRecordset().getFieldIndexByName(colNames[col]));
} catch (ReadDriverException e) {
e.printStackTrace();
return null;
}
}
@Override
protected int getModelRowCount() {
try {
return (int) layer.getRecordset().getRowCount();
} catch (ReadDriverException e) {
e.printStackTrace();
return 0;
}
}
@Override
protected IRow getSourceRow(int row) {
try {
return layer.getSource().getFeature(row);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public void reloadUnderlyingData() {
try {
layer.reload();
} catch (ReloadLayerException e) {
logger.error(e.getStackTrace(), e);
}
}
}