# Class SyntheticRowSubset

java.lang.Object
uk.ac.starlink.topcat.RowSubset
uk.ac.starlink.topcat.SyntheticRowSubset

public class SyntheticRowSubset extends RowSubset
A `RowSubset` which uses an algebraic expression based on the values of other columns in the same row to decide whether a row is included or not.

The engine used for expression evaluation is the GNU Java Expressions Library (JEL).

Author:
  Mark Taylor (Starlink)
See Also:
  - JEL

## Nested Class Summary

### Nested classes/interfaces inherited from class RowSubset

`RowSubset.Key`

## Field Summary

### Fields inherited from class RowSubset

`ALL, NONE`

## Constructor Summary

Constructors
Constructor
Description
`SyntheticRowSubset(String name, TopcatModel tcModel, String expression)`
Constructs a new synthetic subset given a table and an algebraic expression.

## Method Summary

Modifier and Type
Method
Description
`String`
`getExpression()`
Returns the text of the expression used by this subset.
`String`
`getMaskId()`
Returns the mask identifier by which the content of this subset is recognised.
`boolean`
`isIncluded(long lrow)`
Indicates whether a given row is in the subset or not.
`void`
`setExpression(String expression)`
Sets the expression to use for this subset.

### Methods inherited from class RowSubset

`getKey, getName, setKey, setName, toString`

### Methods inherited from class Object

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

## Constructor Details

### SyntheticRowSubset

public SyntheticRowSubset(String name, TopcatModel tcModel, String expression) throws gnu.jel.CompilationException
Constructs a new synthetic subset given a table and an algebraic expression.

Parameters:
  `name` - the name to use for the new RowSubset
  `tcModel` - context for JEL expression evaluation
  `expression` - the algebraic expression
Throws:
  `gnu.jel.CompilationException`

## Method Details

### setExpression

public void setExpression(String expression) throws gnu.jel.CompilationException
Sets the expression to use for this subset.

Parameters:
  `expression` - JEL expression
Throws:
  `gnu.jel.CompilationException`

### getExpression

public String getExpression()
Returns the text of the expression used by this subset.

Returns:
  expression

### getMaskId

public String getMaskId()
Description copied from class: `RowSubset`
Returns the mask identifier by which the content of this subset is recognised.

In particular this value is used as a `maskId` by the `GuiDataSpec` class, which means that changing it will generally signal to the plotting system that the content of this subset has changed, and thus provoke a replot of layers dependent on it.

The default implementation returns a value determined by the identity of this RowSubset object (`TopcatUtils.identityString(Object)`), but this method may be overridden by subclasses that wish to signal their changes, and in particular provoke replots, according to state. Implementations are not however obliged to make this value reflect their internal state, especially if it would be expensive to do so. Implementations should be fast.

Overrides:
  `getMaskId` in class `RowSubset`
Returns:
  mask content identifier

### isIncluded

public boolean isIncluded(long lrow)
Description copied from class: `RowSubset`
Indicates whether a given row is in the subset or not.

Specified by:
  `isIncluded` in class `RowSubset`
Parameters:
  `lrow` - the index of the row in question
Returns:
  `true` iff row `lrow` is to be included