-
- All Known Subinterfaces:
BindContext,BindingGetResultSetContext<U>,BindingGetSQLInputContext<U>,BindingGetStatementContext<U>,BindingRegisterContext<U>,BindingSetSQLOutputContext<U>,BindingSetStatementContext<U>,BindingSQLContext<U>,Context<C>,DSLContext,ExecuteContext,Meta,Migration,MigrationContext,RecordContext,RenderContext,ResourceManagingScope,TransactionContext,VisitContext
- All Known Implementing Classes:
DefaultDSLContext
public interface ScopeScope implementations provide access to a variety of objects that are available from a given scope.The scope of the various objects contained in this type (e.g.
configuration(),settings(), etc.) are implementation dependent and will be specified by the concrete subtype ofScope. Examples of such scope types are:ExecuteContext: A scope that covers a single execution of aQueryContext: A scope that covers a single traversal of aQueryPartexpression tree to produce a SQL string and / or a list of bind variables.VisitContext: A scope that that covers a single traversal of aQueryPartexpression tree (just likeContext), in the presence of at least oneVisitListener.RecordContext: A scope that covers a single record operation, such asUpdatableRecord.store().TransactionContext: A scope that covers the execution (or nesting) of a single transaction.
One of
Scope's most interesting features for client code implementing any SPI is thedata()map, which provides access to aMapwhere client code can register user-defined values for the entire lifetime of a scope. For instance, in anExecuteListenerimplementation that measures time for fetching data, it is perfectly possible to store timestamps in that map:class FetchTimeMeasuringListener extends DefaultExecuteListener { @Override public void fetchStart(ExecuteContext ctx) { // Put any arbitrary object in this map: ctx.data("org.jooq.example.fetch-start-time", System.nanoTime()); } @Override public void fetchEnd(ExecuteContext ctx) { // Retrieve that object again in a later step: Long startTime = (Long) ctx.data("org.jooq.example.fetch-start-time"); System.out.println("Time taken: " + (System.nanoTime() - startTime) / 1000 / 1000.0 + " ms"); } }- Author:
- Lukas Eder
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description Configurationconfiguration()The configuration of the current scope.Map<Object,Object>data()Get all custom data from thisScope.Objectdata(Object key)Get some custom data from thisScope.Objectdata(Object key, Object value)Set some custom data to thisScope.SQLDialectdialect()TheSQLDialectwrapped by this context.DSLContextdsl()Wrap theconfiguration()in aDSLContext, providing access to the configuration-contextual DSL to construct executable queries.SQLDialectfamily()TheSQLDialect.family()wrapped by this context.Settingssettings()The settings wrapped by this context.
-
-
-
Method Detail
-
configuration
Configuration configuration()
The configuration of the current scope.
-
dsl
DSLContext dsl()
Wrap theconfiguration()in aDSLContext, providing access to the configuration-contextual DSL to construct executable queries.
-
settings
Settings settings()
The settings wrapped by this context.This method is a convenient way of accessing
configuration().settings().
-
dialect
SQLDialect dialect()
TheSQLDialectwrapped by this context.This method is a convenient way of accessing
configuration().dialect().
-
family
SQLDialect family()
TheSQLDialect.family()wrapped by this context.This method is a convenient way of accessing
configuration().family().
-
data
Map<Object,Object> data()
Get all custom data from thisScope.This is custom data that was previously set to the context using
data(Object, Object). Use custom data if you want to pass data toQueryPartobjects for a givenScope.- Returns:
- The custom data. This is never
null
-
data
Object data(Object key)
Get some custom data from thisScope.This is custom data that was previously set to the context using
data(Object, Object). Use custom data if you want to pass data toQueryPartobjects for a givenScope- Parameters:
key- A key to identify the custom data- Returns:
- The custom data or
nullif no such data is contained in thisScope
-
data
Object data(Object key, Object value)
Set some custom data to thisScope.This is custom data that was previously set to the context using
data(Object, Object). Use custom data if you want to pass data toQueryPartobjects for a givenScope.- Parameters:
key- A key to identify the custom datavalue- The custom data- Returns:
- The previously set custom data or
nullif no data was previously set for the given key
-
-