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:
  • 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