# Class BeanStarTable

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

All Implemented Interfaces:
  `Closeable, 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
Author:
  Mark Taylor (Starlink)

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`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.
`String[]`
`getColumnProperties()`
Returns an array of the property names which correspond to the columns of this table.
`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(String name, ValueInfo info)`
Resets the metadata for a column representing a property with a given name.
`void`
`setColumnProperties(String[] propNames)`
Fixes the columns which are to be used for this table.
`void`
`setData(Object[] data)`
Populates this model with items.

### Methods inherited from class RandomStarTable

`getRowAccess, getRowSequence, isRandom`

### Methods inherited from class AbstractStarTable

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

### Methods inherited from class Object

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

### Methods inherited from interface StarTable

`getParameterByName, setParameter`

## Constructor Details

### BeanStarTable

public BeanStarTable(Class<?> clazz) throws 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:
  `IntrospectionException`

## Method Details

### setData

public void setData(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 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(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 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(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 Object getCell(long irow, int icol) throws 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:
  `IOException` - if there is an error reading the data