uk.ac.starlink.table

## Class BeanStarTable

- java.lang.Object
- - uk.ac.starlink.table.AbstractStarTable
  - - uk.ac.starlink.table.RandomStarTable
    - - uk.ac.starlink.table.BeanStarTable

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, StarTable

      public class BeanStarTable
      extends RandomStarTable

  StarTable which displays beans. The table is constructed to display beans of a particular class, and each of its rows displays one instance of this class. It has a column for each readable property. As usual, a bean is anything which has likely-looking getter methods, though since this class uses the `java.beans` package any cleverer stuff held in BeanInfos will get used as well/instead.
  Since:
    23 Dec 2004

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BeanStarTable(java.lang.Class<?> clazz)` Constructs a new table which will hold beans which are all instances of a given class.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `getCell(long irow, int icol)` Implementations of this method must be safe for concurrent calls from multiple threads.
    `int` | `getColumnCount()` Returns the number of columns in this table.
    `ColumnInfo` | `getColumnInfo(int icol)` Returns the object describing the data in a given column.
    `java.lang.String[]` | `getColumnProperties()` Returns an array of the property names which correspond to the columns of this table.
    `java.lang.Object[]` | `getData()` Returns the array of objects which this model displays, one per row.
    `long` | `getRowCount()` Implementations must supply a non-negative return value.
    `void` | `setColumnInfo(java.lang.String name, ValueInfo info)` Resets the metadata for a column representing a property with a given name.
    `void` | `setColumnProperties(java.lang.String[] propNames)` Fixes the columns which are to be used for this table.
    `void` | `setData(java.lang.Object[] data)` Populates this model with items.

    - ### Methods inherited from class uk.ac.starlink.table.RandomStarTable

      `getRowAccess, getRowSequence, isRandom`

    - ### Methods inherited from class uk.ac.starlink.table.AbstractStarTable

      `checkedLongToInt, close, getColumnAuxDataInfos, getName, getParameters, getRow, getRowSplittable, getURL, setName, setParameters, setURL`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface uk.ac.starlink.table.StarTable

      `getParameterByName, setParameter`

- - ### Constructor Detail

    - #### BeanStarTable

          public BeanStarTable(java.lang.Class<?> clazz)
                        throws java.beans.IntrospectionException

      Constructs a new table which will hold beans which are all instances of a given class.
      Parameters:
        `clazz` - class of which all beans held by this table are members
      Throws:
        `java.beans.IntrospectionException`

  - ### Method Detail

    - #### setData

          public void setData(java.lang.Object[] data)

      Populates this model with items.
      Parameters:
        `data` - array of items, one for each row. This array's runtime type must match that for which this model was constructed (on pain of ClassCastException)

    - #### getData

          public java.lang.Object[] getData()

      Returns the array of objects which this model displays, one per row. The runtime type of the returned array matches that of the bean class this model displays.
      Returns:
        table data

    - #### getRowCount

          public long getRowCount()

      Description copied from class: `RandomStarTable`
      Implementations must supply a non-negative return value.
      Specified by:
        `getRowCount` in interface `StarTable`
      Specified by:
        `getRowCount` in class `RandomStarTable`
      Returns:
        the number of rows in the table

    - #### getColumnCount

          public int getColumnCount()

      Description copied from interface: `StarTable`
      Returns the number of columns in this table.
      Specified by:
        `getColumnCount` in interface `StarTable`
      Specified by:
        `getColumnCount` in class `AbstractStarTable`
      Returns:
        the number of columns

    - #### getColumnInfo

          public ColumnInfo getColumnInfo(int icol)

      Description copied from interface: `StarTable`
      Returns the object describing the data in a given column.
      Specified by:
        `getColumnInfo` in interface `StarTable`
      Specified by:
        `getColumnInfo` in class `AbstractStarTable`
      Parameters:
        `icol` - the column for which header information is required
      Returns:
        a ValueInfo object for column `icol`

    - #### setColumnInfo

          public void setColumnInfo(java.lang.String name,
                                    ValueInfo info)

      Resets the metadata for a column representing a property with a given name.
      Parameters:
        `name` - property's programmatic name
        `info` - new column metadata

    - #### getColumnProperties

          public java.lang.String[] getColumnProperties()

      Returns an array of the property names which correspond to the columns of this table.
      Returns:
        array of strings giving programmatic names of bean properties, one for each table column

    - #### setColumnProperties

          public void setColumnProperties(java.lang.String[] propNames)

      Fixes the columns which are to be used for this table. `propNames` is an array of the programmatic names of each of the properties of this bean which is used to get a column value.
      Parameters:
        `propNames` - array of programmatic names of properties to be used as columns

    - #### getCell

          public java.lang.Object getCell(long irow,
                                          int icol)
                                   throws java.io.IOException

      Description copied from class: `RandomStarTable`
      Implementations of this method must be safe for concurrent calls from multiple threads.
      Specified by:
        `getCell` in interface `StarTable`
      Specified by:
        `getCell` in class `RandomStarTable`
      Parameters:
        `irow` - the index of the cell's row
        `icol` - the index of the cell's column
      Returns:
        the contents of this cell
      Throws:
        `java.io.IOException` - if there is an error reading the data