Class QueryScope

java.lang.Object
com.illumon.iris.db.tables.select.QueryScope
All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable
Direct Known Subclasses:
QueryScope.StandaloneImpl, QueryScope.SynchronizedScriptSessionImpl, QueryScope.UnsynchronizedScriptSessionImpl

public abstract class QueryScope
extends Object
implements com.fishlib.base.log.LogOutputAppendable
Variable scope used to resolve parameter values during query execution.
  • Field Details

  • Constructor Details

  • Method Details

    • setDefaultInstance

      public static void setDefaultInstance​(@NotNull QueryScope queryScope)
      Sets the default QueryScope to be used in the current context. By default there is a QueryScope.StandaloneImpl created by the static initializer and set as the defaultInstance. The method allows the use of a new or separate instance as the default instance for static methods.
      Parameters:
      queryScope - QueryScope to set as the new default instance.
    • getDefaultInstance

      public static QueryScope getDefaultInstance()
      Retrieve the default QueryScope instance which will be used by static methods.
      Returns:
      QueryScope
    • addParam

      public static <T> void addParam​(String name, T value)
      Adds a parameter to the default instance QueryScope, or updates the value of an existing parameter.
      Type Parameters:
      T - type of the parameter/value.
      Parameters:
      name - String name of the parameter to add.
      value - value to assign to the parameter.
    • addObjectFields

      public static void addObjectFields​(Object object)
      Adds an object's declared fields to the scope.
      Parameters:
      object - object whose fields will be added.
    • getParamValue

      public static <T> T getParamValue​(String name) throws QueryScope.MissingVariableException
      Gets a parameter from the default instance QueryScope.
      Type Parameters:
      T - parameter type.
      Parameters:
      name - parameter name.
      Returns:
      parameter value.
      Throws:
      QueryScope.MissingVariableException - variable name is not defined.
    • getParams

      public final Param[] getParams​(Collection<String> names) throws QueryScope.MissingVariableException
      Get an array of Params by name. See createParam(name) implementations for details.
      Parameters:
      names - parameter names
      Returns:
      A newly-constructed array of newly-constructed Params.
      Throws:
      QueryScope.MissingVariableException - If any of the named scope variables does not exist.
    • getParamNames

      public abstract Set<String> getParamNames()
      Get all known scope variable names.
      Returns:
      A collection of scope variable names.
    • hasParamName

      public abstract boolean hasParamName​(String name)
      Check if the scope has the given name.
      Parameters:
      name - param name
      Returns:
      True iff the scope has the given param name
    • createParam

      protected abstract <T> Param<T> createParam​(String name) throws QueryScope.MissingVariableException
      Get a Param by name.
      Parameters:
      name - parameter name
      Returns:
      newly-constructed Param (name + value-snapshot pair).
      Throws:
      QueryScope.MissingVariableException - If any of the named scope variables does not exist.
    • readParamValue

      public abstract <T> T readParamValue​(String name) throws QueryScope.MissingVariableException
      Get the value of a given scope parameter by name.
      Parameters:
      name - parameter name.
      Returns:
      parameter value.
      Throws:
      QueryScope.MissingVariableException - If no such scope parameter exists.
    • readParamValue

      public abstract <T> T readParamValue​(String name, T defaultValue)
      Get the value of a given scope parameter by name.
      Parameters:
      name - parameter name.
      defaultValue - default parameter value.
      Returns:
      parameter value, or the default parameter value, if the value is not present.
    • putParam

      public abstract <T> void putParam​(String name, T value)
      Add a parameter to the scope.
      Parameters:
      name - parameter name.
      value - parameter value.
    • putRemoteParams

      public abstract void putRemoteParams​(Map<String,​Class> remoteParamMetadata)
      Add remote parameter metadata, for scopes that support this. Note: This is an optional method.
      Parameters:
      remoteParamMetadata - remote parameter metadata.
    • getLocalValuesForRemoteParams

      public abstract Map<String,​Object> getLocalValuesForRemoteParams()
      Get a snapshot of local values for remote parameters, for scopes that support this. Note: This is an optional method.
      Returns:
      A map from name to the current local value for all remote params.
    • putObjectFields

      public abstract void putObjectFields​(Object object)
      Add an object's public members (referenced reflectively, not a shallow copy!) to this scope if supported. Note: This is an optional method.
      Parameters:
      object - object to add public members from.
    • getClientHost

      public final String getClientHost()
      Gets the client host value.
      Returns:
      client host value.
    • setClientHost

      public void setClientHost​(String clientHost)
      Sets the client host value.
      Parameters:
      clientHost - client host value.
    • getQueryName

      public final String getQueryName()
      Gets the query name.
      Returns:
      query name.
    • setQueryName

      public void setQueryName​(String queryName)
      Sets the query name.
      Parameters:
      queryName - query name.
    • append

      public com.fishlib.base.log.LogOutput append​(@NotNull com.fishlib.base.log.LogOutput logOutput)
      Specified by:
      append in interface com.fishlib.base.log.LogOutputAppendable
    • makeScriptSessionImpl

      public static QueryScope makeScriptSessionImpl​(ScriptSession scriptSession)
      Creates a query scope for an interactive console script session.
      Parameters:
      scriptSession - script session
      Returns:
      query scope