Class DeferredViewTable.TableReference

All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable, com.fishlib.base.reference.SimpleReference<Table>, LivenessManager, LivenessNode, LivenessReferent, Serializable
Direct Known Subclasses:
DeferredViewTable.SimpleTableReference, SourceTable.QueryTableReference
Enclosing class:
DeferredViewTable

public abstract static class DeferredViewTable.TableReference
extends LivenessArtifact
implements com.fishlib.base.reference.SimpleReference<Table>
The table reference hides the table underlying table from us.
See Also:
Serialized Form
  • Method Details

    • get

      public abstract Table get()
      Returns the table in a form that the user can run queries on it. This may be as simple as returning a reference, but for amorphous tables, this means we need to do the work to instantiate it.
      Specified by:
      get in interface com.fishlib.base.reference.SimpleReference<Table>
      Returns:
    • getDefinition

      public abstract TableDefinition getDefinition()
      Get the definition, without instantiating it.
      Returns:
      The definition of the table we are referring to
    • getSize

      public abstract long getSize()
      What size should the uninitialized table return.
      Returns:
    • getWithWhere

      Get the table in a form that the user can run queries on it. All of the filters that can be run efficiently should be run before instantiating the full table should be run. Other filters are returned in the remainingFilters field.
      Parameters:
      selectFilters - filters to maybe apply before returning the table
      Returns:
      the instantiated table and a set of filters that were not applied.
    • selectDistinct

      public Table selectDistinct​(SelectColumn[] columns)
      If possible to execute a selectDistinct without instantiating the full table, then do so. Otherwise return null.
      Parameters:
      columns - the columns to selectDistinct
      Returns:
      null if the operation can not be performed on an uninstantiated table, otherwise a new table with the distinct values from strColumns.
    • clear

      public final void clear()
      Specified by:
      clear in interface com.fishlib.base.reference.SimpleReference<Table>
    • 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