private void initMetaData() {
List<DataColumn> cols = table.getColumns();
cachedMetaData = new MetaData[cols.size()];
cachedFieldNames = new String[cachedMetaData.length];
for (int i=0; i<cachedMetaData.length; i++) {
DataColumn col = cols.get(i);
//TODO if the column name changes, my cache is invalidated!!!
cachedMetaData[i] = new MetaData(col.getName(), col.getType());
cachedFieldNames[i] = col.getName();
}
}