package prefuse.data.column; import java.util.Date; import prefuse.data.DataTypeException; import prefuse.data.event.ColumnListener; import prefuse.data.parser.DataParser; /** * Interface for a data column in a table. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public interface Column { // ------------------------------------------------------------------------ // Column Metadata /** * Returns the number of rows in this data column * @return the number of rows */ public int getRowCount(); /** * Sets the number of rows in this data column * @param nrows the number of rows */ public void setMaximumRow(int nrows); /** * Indicates if the values in this column are read-only. * @return true if the values can not be edited, false otherwise */ public boolean isReadOnly(); /** * Sets if the values in this column are read-only * @param readOnly true to ensure the values can not be edited, * false otherwise */ public void setReadOnly(boolean readOnly); /** * Indicates if the value at the given row can be edited. * @param row the row to check * @return true is the value can be modified, false otherwise */ public boolean isCellEditable(int row); /** * Returns the most specific superclass for the values in the column * @return the Class of the column's data values */ public Class getColumnType(); /** * Get the data parser used to map String values to and from the values * stored by this Column. * @return the DataParser used by this Column */ public DataParser getParser(); /** * Set the data parser used to map String values to and from the values * stored by this Column. * @param parser the DataParser to use */ public void setParser(DataParser parser); // ------------------------------------------------------------------------ // Listener Methods /** * Adds a listener to be notified when this column changes * @param listener the ColumnListener to add */ public void addColumnListener(ColumnListener listener); /** * Removes a listener, causing it to no longer be notified of changes * @param listener the ColumnListener to remove */ public void removeColumnListener(ColumnListener listener); // ------------------------------------------------------------------------ // Data Access Methods /** * Returns the default value for rows that have not been set explicitly. */ public Object getDefaultValue(); /** * Reverts the specified row back to the column's default value. * @param row */ public void revertToDefault(int row); /** * Indicates if the get method can be called without * an exception being thrown for the given type. * @param type the Class of the data type to check * @return true if the type is supported by this column, false otherwise */ public boolean canGet(Class type); /** * Indicates if the set method can be called without * an exception being thrown for the given type. * @param type the Class of the data type to check * @return true if the type is supported by this column, false otherwise */ public boolean canSet(Class type); /** * Get the data value at the specified row * @param row the row from which to retrieve the value * @return the data value */ public Object get(int row); /** * Set the data value at the specified row * @param val the value to set * @param row the row at which to set the value */ public void set(Object val, int row) throws DataTypeException; // ------------------------------------------------------------------------ // Data Type Convenience Methods // because java's type system can be tedious at times... // -- int ----------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the int type. * @return true if getInt is supported, false otherwise */ public boolean canGetInt(); /** * Indicates if convenience set method can be called without * an exception being thrown for the int type. * @return true if setInt is supported, false otherwise */ public boolean canSetInt(); /** * Get the data value at the specified row as an integer * @param row the row from which to retrieve the value * @return the data value as an integer * @throws DataTypeException if this column does not * support the integer type */ public int getInt(int row) throws DataTypeException; /** * Set the data value at the specified row as an integer * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the integer type */ public void setInt(int val, int row) throws DataTypeException; // -- long ---------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the long type. * @return true if getLong is supported, false otherwise */ public boolean canGetLong(); /** * Indicates if convenience set method can be called without * an exception being thrown for the long type. * @return true if setLong is supported, false otherwise */ public boolean canSetLong(); /** * Get the data value at the specified row as a long * @param row the row from which to retrieve the value * @return the data value as a long * @throws DataTypeException if this column does not * support the long type */ public long getLong(int row) throws DataTypeException; /** * Set the data value at the specified row as a long * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the long type */ public void setLong(long val, int row) throws DataTypeException; // -- float --------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the float type. * @return true if getFloat is supported, false otherwise */ public boolean canGetFloat(); /** * Indicates if convenience set method can be called without * an exception being thrown for the float type. * @return true if setFloat is supported, false otherwise */ public boolean canSetFloat(); /** * Get the data value at the specified row as a float * @param row the row from which to retrieve the value * @return the data value as a float * @throws DataTypeException if this column does not * support the float type */ public float getFloat(int row) throws DataTypeException; /** * Set the data value at the specified row as a float * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the float type */ public void setFloat(float val, int row) throws DataTypeException; // -- double -------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the double type. * @return true if getDouble is supported, false otherwise */ public boolean canGetDouble(); /** * Indicates if convenience set method can be called without * an exception being thrown for the double type. * @return true if setDouble is supported, false otherwise */ public boolean canSetDouble(); /** * Get the data value at the specified row as a double * @param row the row from which to retrieve the value * @return the data value as a double * @throws DataTypeException if this column does not * support the double type */ public double getDouble(int row) throws DataTypeException; /** * Set the data value at the specified row as a double * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the double type */ public void setDouble(double val, int row) throws DataTypeException; // -- boolean ------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the boolean type. * @return true if getBoolean is supported, false otherwise */ public boolean canGetBoolean(); /** * Indicates if convenience set method can be called without * an exception being thrown for the boolean type. * @return true if setBoolean is supported, false otherwise */ public boolean canSetBoolean(); /** * Get the data value at the specified row as a boolean * @param row the row from which to retrieve the value * @return the data value as a boolean * @throws DataTypeException if this column does not * support the boolean type */ public boolean getBoolean(int row) throws DataTypeException; /** * Set the data value at the specified row as a boolean * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the boolean type */ public void setBoolean(boolean val, int row) throws DataTypeException; // -- String -------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the String type. * @return true if getString is supported, false otherwise */ public boolean canGetString(); /** * Indicates if convenience set method can be called without * an exception being thrown for the String type. * @return true if setString is supported, false otherwise */ public boolean canSetString(); /** * Get the data value at the specified row as a String * @param row the row from which to retrieve the value * @return the data value as a String * @throws DataTypeException if this column does not * support the String type */ public String getString(int row) throws DataTypeException; /** * Set the data value at the specified row as a String * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the String type */ public void setString(String val, int row) throws DataTypeException; // -- Date ---------------------------------------------------------------- /** * Indicates if convenience get method can be called without * an exception being thrown for the Date type. * @return true if getDate is supported, false otherwise */ public boolean canGetDate(); /** * Indicates if convenience set method can be called without * an exception being thrown for the Date type. * @return true if setDate is supported, false otherwise */ public boolean canSetDate(); /** * Get the data value at the specified row as a Date * @param row the row from which to retrieve the value * @return the data value as a Date * @throws DataTypeException if this column does not * support the Date type */ public Date getDate(int row) throws DataTypeException; /** * Set the data value at the specified row as a Date * @param val the value to set * @param row the row at which to set the value * @throws DataTypeException if this column does not * support the Date type */ public void setDate(Date val, int row) throws DataTypeException; } // end of interface Column