package prefuse.data.tuple;
import java.util.Date;
import prefuse.data.Graph;
import prefuse.data.Schema;
import prefuse.data.Table;
import prefuse.data.Tuple;
/**
* Tuple implementation that pulls values from a backing data Table.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class TableTuple implements Tuple {
protected Table m_table;
protected int m_row;
/**
* Initialize a new TableTuple for the given table and row. Tuples are
* automatically generated by {@link TupleManager} instances, and
* so application code should never need to invoke this method.
* @param table the data Table
* @param graph ignored by this class
* @param row the table row index
*/
protected void init(Table table, Graph graph, int row) {
m_table = table;
m_row = m_table.isValidRow(row) ? row : -1;
}
/**
* @see prefuse.data.Tuple#getSchema()
*/
public Schema getSchema() {
return m_table.getSchema();
}
/**
* @see prefuse.data.Tuple#getTable()
*/
public Table getTable() {
return m_table;
}
/**
* @see prefuse.data.Tuple#getRow()
*/
public int getRow() {
return m_row;
}
// ------------------------------------------------------------------------
// Index Checking
/**
* @see prefuse.data.Tuple#isValid()
*/
public boolean isValid() {
return m_row != -1;
}
/**
* Invalidates this tuple. Called by an enclosing table when a row
* is deleted.
*/
void invalidate() {
m_row = -1;
}
/**
* Internal validity check. Throw an exception if the tuple is not valid.
*/
private void validityCheck() {
if ( m_row == -1 ) {
throw new IllegalStateException("This tuple is no longer valid. " +
"It has been deleted from its table");
}
}
// ------------------------------------------------------------------------
// Column Methods
/**
* @see prefuse.data.Tuple#getColumnType(java.lang.String)
*/
public Class getColumnType(String field) {
return m_table.getColumnType(field);
}
/**
* @see prefuse.data.Tuple#getColumnType(int)
*/
public Class getColumnType(int col) {
return m_table.getColumnType(col);
}
/**
* @see prefuse.data.Tuple#getColumnIndex(java.lang.String)
*/
public int getColumnIndex(String field) {
return m_table.getColumnNumber(field);
}
/**
* @see prefuse.data.Tuple#getColumnCount()
*/
public int getColumnCount() {
return m_table.getColumnCount();
}
/**
* @see prefuse.data.Tuple#getColumnName(int)
*/
public String getColumnName(int col) {
return m_table.getColumnName(col);
}
// ------------------------------------------------------------------------
// Data Access Methods
/**
* @see prefuse.data.Tuple#canGet(java.lang.String, java.lang.Class)
*/
public boolean canGet(String field, Class type) {
return m_table.canGet(field, type);
}
/**
* @see prefuse.data.Tuple#canSet(java.lang.String, java.lang.Class)
*/
public boolean canSet(String field, Class type) {
return m_table.canSet(field, type);
}
/**
* @see prefuse.data.Tuple#get(java.lang.String)
*/
public final Object get(String field) {
validityCheck();
return m_table.get(m_row, field);
}
/**
* @see prefuse.data.Tuple#set(java.lang.String, java.lang.Object)
*/
public final void set(String field, Object value) {
validityCheck();
m_table.set(m_row, field, value);
}
/**
* @see prefuse.data.Tuple#get(int)
*/
public final Object get(int idx) {
validityCheck();
return m_table.get(m_row, idx);
}
/**
* @see prefuse.data.Tuple#set(int, java.lang.Object)
*/
public final void set(int idx, Object value) {
validityCheck();
m_table.set(m_row, idx, value);
}
/**
* @see prefuse.data.Tuple#getDefault(java.lang.String)
*/
public Object getDefault(String field) {
validityCheck();
return m_table.getDefault(field);
}
/**
* @see prefuse.data.Tuple#revertToDefault(java.lang.String)
*/
public void revertToDefault(String field) {
validityCheck();
m_table.revertToDefault(m_row, field);
}
// ------------------------------------------------------------------------
// Convenience Data Access Methods
/**
* @see prefuse.data.Tuple#canGetInt(java.lang.String)
*/
public final boolean canGetInt(String field) {
return m_table.canGetInt(field);
}
/**
* @see prefuse.data.Tuple#canSetInt(java.lang.String)
*/
public final boolean canSetInt(String field) {
return m_table.canSetInt(field);
}
/**
* @see prefuse.data.Tuple#getInt(java.lang.String)
*/
public final int getInt(String field) {
validityCheck();
return m_table.getInt(m_row, field);
}
/**
* @see prefuse.data.Tuple#setInt(java.lang.String, int)
*/
public final void setInt(String field, int val) {
validityCheck();
m_table.setInt(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getInt(int)
*/
public final int getInt(int col) {
validityCheck();
return m_table.getInt(m_row, col);
}
/**
* @see prefuse.data.Tuple#setInt(int, int)
*/
public final void setInt(int col, int val) {
validityCheck();
m_table.setInt(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetLong(java.lang.String)
*/
public final boolean canGetLong(String field) {
return m_table.canGetLong(field);
}
/**
* @see prefuse.data.Tuple#canSetLong(java.lang.String)
*/
public final boolean canSetLong(String field) {
return m_table.canSetLong(field);
}
/**
* @see prefuse.data.Tuple#getLong(java.lang.String)
*/
public final long getLong(String field) {
validityCheck();
return m_table.getLong(m_row, field);
}
/**
* @see prefuse.data.Tuple#setLong(java.lang.String, long)
*/
public final void setLong(String field, long val) {
validityCheck();
m_table.setLong(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getLong(int)
*/
public final long getLong(int col) {
validityCheck();
return m_table.getLong(m_row, col);
}
/**
* @see prefuse.data.Tuple#setLong(int, long)
*/
public final void setLong(int col, long val) {
validityCheck();
m_table.setLong(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetFloat(java.lang.String)
*/
public final boolean canGetFloat(String field) {
return m_table.canGetFloat(field);
}
/**
* @see prefuse.data.Tuple#canSetFloat(java.lang.String)
*/
public final boolean canSetFloat(String field) {
return m_table.canSetFloat(field);
}
/**
* @see prefuse.data.Tuple#getFloat(java.lang.String)
*/
public final float getFloat(String field) {
validityCheck();
return m_table.getFloat(m_row, field);
}
/**
* @see prefuse.data.Tuple#setFloat(java.lang.String, float)
*/
public final void setFloat(String field, float val) {
validityCheck();
m_table.setFloat(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getFloat(int)
*/
public final float getFloat(int col) {
validityCheck();
return m_table.getFloat(m_row, col);
}
/**
* @see prefuse.data.Tuple#setFloat(int, float)
*/
public final void setFloat(int col, float val) {
validityCheck();
m_table.setFloat(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetDouble(java.lang.String)
*/
public final boolean canGetDouble(String field) {
return m_table.canGetDouble(field);
}
/**
* @see prefuse.data.Tuple#canSetDouble(java.lang.String)
*/
public final boolean canSetDouble(String field) {
return m_table.canSetDouble(field);
}
/**
* @see prefuse.data.Tuple#getDouble(java.lang.String)
*/
public final double getDouble(String field) {
validityCheck();
return m_table.getDouble(m_row, field);
}
/**
* @see prefuse.data.Tuple#setDouble(java.lang.String, double)
*/
public final void setDouble(String field, double val) {
validityCheck();
m_table.setDouble(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getDouble(int)
*/
public final double getDouble(int col) {
validityCheck();
return m_table.getDouble(m_row, col);
}
/**
* @see prefuse.data.Tuple#setDouble(int, double)
*/
public final void setDouble(int col, double val) {
validityCheck();
m_table.setDouble(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetBoolean(java.lang.String)
*/
public final boolean canGetBoolean(String field) {
return m_table.canGetBoolean(field);
}
/**
* @see prefuse.data.Tuple#canSetBoolean(java.lang.String)
*/
public final boolean canSetBoolean(String field) {
return m_table.canSetBoolean(field);
}
/**
* @see prefuse.data.Tuple#getBoolean(java.lang.String)
*/
public final boolean getBoolean(String field) {
validityCheck();
return m_table.getBoolean(m_row, field);
}
/**
* @see prefuse.data.Tuple#setBoolean(java.lang.String, boolean)
*/
public final void setBoolean(String field, boolean val) {
validityCheck();
m_table.setBoolean(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getBoolean(int)
*/
public final boolean getBoolean(int col) {
validityCheck();
return m_table.getBoolean(m_row, col);
}
/**
* @see prefuse.data.Tuple#setBoolean(java.lang.String, boolean)
*/
public final void setBoolean(int col, boolean val) {
validityCheck();
m_table.setBoolean(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetString(java.lang.String)
*/
public final boolean canGetString(String field) {
return m_table.canGetString(field);
}
/**
* @see prefuse.data.Tuple#canSetString(java.lang.String)
*/
public final boolean canSetString(String field) {
return m_table.canSetString(field);
}
/**
* @see prefuse.data.Tuple#getString(java.lang.String)
*/
public final String getString(String field) {
validityCheck();
return m_table.getString(m_row, field);
}
/**
* @see prefuse.data.Tuple#setString(java.lang.String, java.lang.String)
*/
public final void setString(String field, String val) {
validityCheck();
m_table.setString(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getString(int)
*/
public final String getString(int col) {
validityCheck();
return m_table.getString(m_row, col);
}
/**
* @see prefuse.data.Tuple#setString(int, java.lang.String)
*/
public final void setString(int col, String val) {
validityCheck();
m_table.setString(m_row, col, val);
}
// --------------------------------------------------------------
/**
* @see prefuse.data.Tuple#canGetDate(java.lang.String)
*/
public final boolean canGetDate(String field) {
return m_table.canGetDate(field);
}
/**
* @see prefuse.data.Tuple#canSetDate(java.lang.String)
*/
public final boolean canSetDate(String field) {
return m_table.canSetDate(field);
}
/**
* @see prefuse.data.Tuple#getDate(java.lang.String)
*/
public final Date getDate(String field) {
validityCheck();
return m_table.getDate(m_row, field);
}
/**
* @see prefuse.data.Tuple#setDate(java.lang.String, java.util.Date)
*/
public final void setDate(String field, Date val) {
validityCheck();
m_table.setDate(m_row, field, val);
}
/**
* @see prefuse.data.Tuple#getDate(int)
*/
public final Date getDate(int col) {
validityCheck();
return m_table.getDate(m_row, col);
}
/**
* @see prefuse.data.Tuple#setDate(java.lang.String, java.util.Date)
*/
public final void setDate(int col, Date val) {
validityCheck();
m_table.setDate(m_row, col, val);
}
// ------------------------------------------------------------------------
/**
* @see java.lang.Object#toString()
*/
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("Tuple[");
for ( int i=0; i<getColumnCount(); ++i ) {
if ( i > 0 ) sb.append(',');
try {
sb.append(get(i).toString());
} catch ( Exception e ) {
sb.append("?");
}
}
sb.append("]");
return sb.toString();
}
} // end of class TableTuple