# Class JELTable

java.lang.Object
uk.ac.starlink.table.WrapperStarTable
uk.ac.starlink.ttools.jel.JELTable

All Implemented Interfaces:
  `Closeable, AutoCloseable, uk.ac.starlink.table.StarTable`

public class JELTable extends uk.ac.starlink.table.WrapperStarTable
Wrapper table which is constructed entirely of columns defined by JEL expressions based on the base table.

Since:
  1 Sep 2005
Author:
  Mark Taylor

## Field Summary

### Fields inherited from class uk.ac.starlink.table.WrapperStarTable

`baseTable`

## Constructor Summary

Constructors
Constructor
Description
`JELTable(uk.ac.starlink.table.StarTable baseTable, uk.ac.starlink.table.ColumnInfo[] colInfos, String[] exprs)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`static uk.ac.starlink.table.StarTable`
`createJELTable(uk.ac.starlink.table.StarTable baseTable, String[] exprs)`
Creates a JELTable from a base table and a list of column expressions.
`static uk.ac.starlink.table.StarTable`
`createJELTable(uk.ac.starlink.table.StarTable baseTable, uk.ac.starlink.table.ValueInfo[] infos, String[] exprs)`
Convenience factory method.
`Object`
`getCell(long irow, int icol)`
`int`
`getColumnCount()`
`uk.ac.starlink.table.ColumnInfo`
`getColumnInfo(int icol)`
`Object[]`
`getRow(long irow)`
`uk.ac.starlink.table.RowAccess`
`getRowAccess()`
`uk.ac.starlink.table.RowSequence`
`getRowSequence()`
`uk.ac.starlink.table.RowSplittable`
`getRowSplittable()`

### Methods inherited from class uk.ac.starlink.table.WrapperStarTable

`checkedLongToInt, close, getBaseTable, getColumnAuxDataInfos, getName, getParameterByName, getParameters, getRowCount, getURL, isRandom, setName, setParameter, setURL, toString`

### Methods inherited from class Object

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

## Constructor Details

### JELTable

public JELTable(uk.ac.starlink.table.StarTable baseTable, uk.ac.starlink.table.ColumnInfo[] colInfos, String[] exprs) throws gnu.jel.CompilationException
Constructor. The number of columns is the same as the number of elements of `colInfos`, which must be the same as the number of elements in `exprs`. If the `contentClass` attributes of the `colInfos` elements are non-null, they must be compatible with the actual types of the evaluated expressions. If they are not, an `IllegalArgumentException` will be thrown.

Parameters:
  `baseTable` - table which provides both behaviour determining whether random access is available etc, and an evaluation context for the JEL calculations
  `colInfos` - column metadata for each of the columns in this table
  `exprs` - JEL expressions, evaluated in a context determined by `baseTable`, which give the data for this table.
Throws:
  `gnu.jel.CompilationException`

## Method Details

### getColumnCount

public int getColumnCount()

Specified by:
  `getColumnCount` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getColumnCount` in class `uk.ac.starlink.table.WrapperStarTable`

### getColumnInfo

public uk.ac.starlink.table.ColumnInfo getColumnInfo(int icol)

Specified by:
  `getColumnInfo` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getColumnInfo` in class `uk.ac.starlink.table.WrapperStarTable`

### getCell

public Object getCell(long irow, int icol) throws IOException

Specified by:
  `getCell` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getCell` in class `uk.ac.starlink.table.WrapperStarTable`
Throws:
  `IOException`

### getRow

public Object[] getRow(long irow) throws IOException

Specified by:
  `getRow` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getRow` in class `uk.ac.starlink.table.WrapperStarTable`
Throws:
  `IOException`

### getRowSequence

public uk.ac.starlink.table.RowSequence getRowSequence() throws IOException

Specified by:
  `getRowSequence` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getRowSequence` in class `uk.ac.starlink.table.WrapperStarTable`
Throws:
  `IOException`

### getRowAccess

public uk.ac.starlink.table.RowAccess getRowAccess() throws IOException

Specified by:
  `getRowAccess` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getRowAccess` in class `uk.ac.starlink.table.WrapperStarTable`
Throws:
  `IOException`

### getRowSplittable

public uk.ac.starlink.table.RowSplittable getRowSplittable() throws IOException

Specified by:
  `getRowSplittable` in interface `uk.ac.starlink.table.StarTable`
Overrides:
  `getRowSplittable` in class `uk.ac.starlink.table.WrapperStarTable`
Throws:
  `IOException`

### createJELTable

public static uk.ac.starlink.table.StarTable createJELTable(uk.ac.starlink.table.StarTable baseTable, uk.ac.starlink.table.ValueInfo[] infos, String[] exprs) throws uk.ac.starlink.task.ExecutionException
Convenience factory method. It turns all the supplied `infos` into ColumnInfos and rethrows any CompilationException as an ExecutionException.

Parameters:
  `baseTable` - table which provides both behaviour determining whether random access is available etc, and an evaluation context for the JEL calculations
  `infos` - metadata used to construct column metadata
  `exprs` - JEL expressions, evaluated in a context determined by `baseTable`, which give the data for this table
Returns:
  new table
Throws:
  `uk.ac.starlink.task.ExecutionException`

### createJELTable

public static uk.ac.starlink.table.StarTable createJELTable(uk.ac.starlink.table.StarTable baseTable, String[] exprs) throws gnu.jel.CompilationException
Creates a JELTable from a base table and a list of column expressions. If the expressions can be determined to correspond to columns from the base table, the metadata is propagated. Otherwise, column names are constructed from the expression strings.

Parameters:
  `baseTable` - table which provides both behaviour determining whether random access is available etc, and an evaluation context for the JEL calculations
  `exprs` - JEL expressions, evaluated in a context determined by `baseTable`, which give the data for this table
Returns:
  new table
Throws:
  `gnu.jel.CompilationException`