Class TableSupplier

All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, Serializable, InvocationHandler

@ScriptApi
public class TableSupplier
extends LivenessArtifact
implements InvocationHandler
TableSupplier creates a Proxy to a Table with a list of Table operations to be applied when a filter method is called.

Example usage:

 import com.illumon.iris.db.v2.TableSupplier
 t=db.t("LearnDeephaven", "StockTrades").where("Date=`2017-08-21`")
 // The build method will start building a table supplier, you can chain any number of methods as you would with a normal table
 supplier = TableSupplier.build(t).where("Exchange=`Arca`")

 // The complete method marks the supplier is ready to use.  The next filter method (e.g. where) will cause the operations to be applied
 complete = TableSupplier.complete(supplier)

 // t2 is actually t.where("USym=`GOOG`").where("Exchange=`Arca`")
 t2 = complete.where("USym=`GOOG`")

 // Widgets that support one click will complete the supplier automatically
 import com.illumon.iris.console.utils.PivotWidgetBuilder
 pw = PivotWidgetBuilder.pivot(supplier, "USym", "Exchange", "Last").addValueColumns("Size", "ExchangeId").requireFilteredColumns("USym").avg().across().down().show()
 p = plot(“Test”,oneClick(supplier,“USym”),“Timestamp”,“ExchangeId”).show()
 import com.illumon.iris.console.utils.oneclick.LiveOneClickTable
 toc = LiveOneClickTable.oneClickTable(supplier, "USym")

 // Note that a method that returns a TableMap (e.g. byExternal) will end the chain and return a map that will perform the operations on each table
 supplier2 = TableSupplier.build(t).update("A=Exchange")
 import com.illumon.iris.console.utils.LiveTableMapSelector
 sel = new LiveTableMapSelector(supplier2.byExternal("USym", "Exchange"), true)
 
See Also:
Serialized Form
  • Method Details

    • build

      @ScriptApi public static Table build​(Table sourceTable)
      Use to start the construction of a Table Supplier.
      Parameters:
      sourceTable - the source table
      Returns:
      a Proxy that will supply a table
    • complete

      @ScriptApi public static Table complete​(Table maybeSupplier)
      Sets a Table Supplier to be complete. This means that the supplier will generate a table the next time a filter operation is called. This method has no affect on Tables that are not suppliers.
      Parameters:
      maybeSupplier - a Table that may be a supplier
      Returns:
      a completed Supplier or unaltered Table
    • getAppliedEmptyTable

      @ScriptApi public static Table getAppliedEmptyTable​(Table maybeSupplier)
      Gets an empty version of the supplied table with all current operations applied to it. If the Table is not a Table Supplier then this will return the table unaltered.
      Parameters:
      maybeSupplier - a Table that may be a supplier
      Returns:
      an applied empty table or an unaltered table
    • invoke

      public Object invoke​(Object proxy, Method method, Object[] args) throws Throwable
      Specified by:
      invoke in interface InvocationHandler
      Throws:
      Throwable
    • initializeTransientFieldsForLiveness

      @VisibleForTesting public final void initializeTransientFieldsForLiveness()
      Package-private for Serializable sub-classes to use in readObject only. Public to allow unit tests in another package to work around mock issues where the constructor is never invoked.
    • tryRetainReference

      public final boolean tryRetainReference()
      Description copied from interface: LivenessReferent
      If this referent is "live", behave as LivenessReferent.retainReference() and return true. Otherwise, returns false rather than throwing an exception.
      Specified by:
      tryRetainReference in interface LivenessReferent
      Returns:
      True if this referent was retained, false otherwise
    • dropReference

      public final void dropReference()
      Description copied from interface: LivenessReferent
      Drop a previously-retained reference to this referent.
      Specified by:
      dropReference in interface LivenessReferent
    • getWeakReference

      public WeakReference<? extends LivenessReferent> getWeakReference()
      Description copied from interface: LivenessReferent
      Get a WeakReference to this referent. This may be cached, or newly created.
      Specified by:
      getWeakReference in interface LivenessReferent
      Returns:
      A new or cached reference to this referent
    • tryManage

      public final boolean tryManage​(@NotNull LivenessReferent referent)
      Description copied from interface: LivenessManager
      Attempt to add the specified referent to this manager.
      Specified by:
      tryManage in interface LivenessManager
      Parameters:
      referent - The referent to add
      Returns:
      Whether the referent was in fact added
    • destroy

      protected void destroy()

      Attempt to release (destructively when necessary) resources held by this object. This may render the object unusable for subsequent operations. Implementations should be sure to call super.destroy().

      This is intended to only ever be used as a side effect of decreasing the reference count to 0.

    • onReferenceCountAtZero

      protected final void onReferenceCountAtZero()
      Description copied from class: ReferenceCounted
      Callback method that will be invoked when the reference count returns to zero.
      Specified by:
      onReferenceCountAtZero in class ReferenceCounted