Class ReinterpretedColumn<S,D>

java.lang.Object
io.deephaven.engine.table.impl.select.ReinterpretedColumn<S,D>
All Implemented Interfaces:
Selectable, SelectColumn

public class ReinterpretedColumn<S,D> extends Object implements SelectColumn
Allows ColumnSource reinterpretation via view-type (TableOperations.view(java.lang.String...) and TableOperations.updateView(java.lang.String...)) Table operations.

TODO: If we come up with other valid, useful reinterpretations, it would be trivial to create a general purpose syntax for use in view()/updateView() column expressions.

The syntax I have in mind is: "<ColumnNameB>=<ColumnNameA>.as(<ClassName>)" "<ColumnName>.as(<ClassName>)"

Making this work would consist of any one of: 1. Adding a V1 version and updating SelectColumnFactory and SelectColumnAdaptor 2. Adding the appropriate if-regex-matches to realColumn selection in V2 SwitchColumn 3. Creating a V2-native SelectColumnFactory

  • Constructor Details

    • ReinterpretedColumn

      public ReinterpretedColumn(@NotNull @NotNull String sourceName, @NotNull @NotNull Class<S> sourceDataType, @NotNull @NotNull String destName, @NotNull @NotNull Class<D> destDataType, Object... reinterpParams)
      Create a ReinterpretedColumn that attempts to convert the source column into the destination type, optionally with parameters.
      Parameters:
      sourceName - the name of the Source column within the table
      sourceDataType - the type of the source column
      destName - the name of the desired destination column
      destDataType - the type to try to convert to
      reinterpParams - a varargs set of parameters for the arguments if required.
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • initInputs

      public List<String> initInputs(TrackingRowSet rowSet, Map<String,? extends ColumnSource<?>> columnsOfInterest)
      Description copied from interface: SelectColumn
      Initialize the column from the provided set of underlying columns and row set.
      Specified by:
      initInputs in interface SelectColumn
      Parameters:
      rowSet - the base row set
      columnsOfInterest - the input columns
      Returns:
      a list of columns on which the result of this is dependent
    • initDef

      public List<String> initDef(@NotNull @NotNull Map<String,ColumnDefinition<?>> columnDefinitionMap)
      Description copied from interface: SelectColumn
      Initialize any internal column definitions from the provided initial. Any formulae will be compiled immediately using the QueryCompiler in the current ExecutionContext.
      Specified by:
      initDef in interface SelectColumn
      Parameters:
      columnDefinitionMap - the starting set of column definitions; valid for this call only
      Returns:
      a list of columns on which the result of this is dependent
    • getReturnedType

      public Class<?> getReturnedType()
      Description copied from interface: SelectColumn
      Get the data type stored in the resultant column.
      Specified by:
      getReturnedType in interface SelectColumn
      Returns:
      the type
    • getReturnedComponentType

      public Class<?> getReturnedComponentType()
      Description copied from interface: SelectColumn
      Get the data component type stored in the resultant column.
      Specified by:
      getReturnedComponentType in interface SelectColumn
      Returns:
      the component type
    • getColumns

      public List<String> getColumns()
      Description copied from interface: SelectColumn
      Get a list of the names of columns used in this SelectColumn. Behavior is undefined if none of the init* methods have been called yet.
      Specified by:
      getColumns in interface SelectColumn
      Returns:
      the columns used in this SelectColumn
    • getColumnArrays

      public List<String> getColumnArrays()
      Description copied from interface: SelectColumn
      Get a list of the names of column arrays used in this SelectColumn. Behavior is undefined if none of the init* methods have been called yet.
      Specified by:
      getColumnArrays in interface SelectColumn
      Returns:
      the list of column arrays used
    • getDataView

      @NotNull public @NotNull ColumnSource<D> getDataView()
      Description copied from interface: SelectColumn
      Get a ColumnSource that can be used to access the data on demand.
      Specified by:
      getDataView in interface SelectColumn
      Returns:
      a ColumnSource
    • getLazyView

      @NotNull public @NotNull ColumnSource<D> getLazyView()
      Description copied from interface: SelectColumn
      Returns a lazily computed view of this column.
      Specified by:
      getLazyView in interface SelectColumn
      Returns:
      a lazily computed column source
    • getName

      public String getName()
      Description copied from interface: SelectColumn
      Get the name of the resultant column.
      Specified by:
      getName in interface SelectColumn
      Returns:
      the name of the column
    • getMatchPair

      public MatchPair getMatchPair()
      Description copied from interface: SelectColumn
      Get a MatchPair for this column, if applicable.
      Specified by:
      getMatchPair in interface SelectColumn
      Returns:
    • newDestInstance

      public WritableColumnSource<?> newDestInstance(long size)
      Description copied from interface: SelectColumn
      Create a new WritableColumnSource. The returned column source must be capable of handling updates.
      Specified by:
      newDestInstance in interface SelectColumn
      Parameters:
      size - A hint as to the number of rows that will be used
      Returns:
      a new WritableColumnSource
    • newFlatDestInstance

      public WritableColumnSource<?> newFlatDestInstance(long size)
      Description copied from interface: SelectColumn
      Create a new immutable WritableColumnSource. The returned column source should be flat, and need not handle updates.
      Specified by:
      newFlatDestInstance in interface SelectColumn
      Parameters:
      size - A hint as to the number of rows that will be used
      Returns:
      a new WritableColumnSource
    • isRetain

      public boolean isRetain()
      Specified by:
      isRetain in interface SelectColumn
      Returns:
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • isStateless

      public boolean isStateless()
      Description copied from interface: SelectColumn
      Returns true if this column is stateless (i.e. one row does not depend on the order of evaluation for another row).
      Specified by:
      isStateless in interface SelectColumn
    • copy

      public ReinterpretedColumn<S,D> copy()
      Description copied from interface: SelectColumn
      Create a copy of this SelectColumn.
      Specified by:
      copy in interface SelectColumn
      Returns:
      an independent copy of this SelectColumn.