public class MockFileDatabase extends java.lang.Object implements MockDataProvider
MockDataProvider.
This data provider reads a database model from a text file, as documented in
the below sample file:
# Comments start off with a hash
# Statement strings have no prefix and should be ended with a semi-colon
select 'A' from dual;
# Statements may be followed by results, using >
> A
> -
> A
# Statements should be followed by "@ rows: [N]" indicating the update count
@ rows: 1
# New statements can be listed int his file
select 'A', 'B' from dual;
> A B
> - -
> A B
@ rows: 1
# Beware of the exact syntax (e.g. using quotes)
select "TABLE1"."ID1", "TABLE1"."NAME1" from "TABLE1";
> ID1 NAME1
> --- -----
> 1 X
> 2 Y
@ rows: 2
# Statements can return several results
> F1 F2 F3 is a bit more complex
> --- -- ----------------------------
> 1 2 and a string containing data
> 1.1 x another string
@ rows: 2
> A B "C D"
> - - -----
> x y z
@ rows: 1
Results can be loaded using several techniques:
>, then
DSLContext.fetchFromTXT(String) is usedThis implementation is still very experimental and not officially supported!
| Constructor and Description |
|---|
MockFileDatabase(java.io.File file) |
MockFileDatabase(java.io.File file,
java.lang.String encoding) |
MockFileDatabase(java.io.InputStream stream) |
MockFileDatabase(java.io.InputStream stream,
java.lang.String encoding) |
MockFileDatabase(java.io.Reader reader) |
MockFileDatabase(java.lang.String string) |
| Modifier and Type | Method and Description |
|---|---|
MockResult[] |
execute(MockExecuteContext ctx)
Execution callback for a JDBC query execution.
|
MockFileDatabase |
nullLiteral(java.lang.String literal)
Specify the
null literal, i.e. the string that should be
parsed as a null reference, rather than as the string
itself. |
java.util.Map<java.lang.String,java.util.List<MockResult>> |
queries()
Deprecated.
- Experimental: Do not use. Subject to change.
|
public MockFileDatabase(java.io.File file)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase(java.io.File file,
java.lang.String encoding)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase(java.io.InputStream stream)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase(java.io.InputStream stream,
java.lang.String encoding)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase(java.io.Reader reader)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase(java.lang.String string)
throws java.io.IOException
java.io.IOExceptionpublic MockFileDatabase nullLiteral(java.lang.String literal)
null literal, i.e. the string that should be
parsed as a null reference, rather than as the string
itself.DSLContext.fetchFromTXT(String, String)@Deprecated public java.util.Map<java.lang.String,java.util.List<MockResult>> queries()
public MockResult[] execute(MockExecuteContext ctx) throws java.sql.SQLException
MockDataProvider
This callback will be called by MockStatement upon the various
statement execution methods. These include:
Statement.execute(String)Statement.execute(String, int)Statement.execute(String, int[])Statement.execute(String, String[])Statement.executeBatch()Statement.executeQuery(String)Statement.executeUpdate(String)Statement.executeUpdate(String, int)Statement.executeUpdate(String, int[])Statement.executeUpdate(String, String[])PreparedStatement.execute()PreparedStatement.executeQuery()PreparedStatement.executeUpdate()The various execution modes are unified into this simple method. Implementations should adhere to this contract:
MockStatement does not distinguish between "static" and
"prepared" statements. However, a non-empty
MockExecuteContext.bindings() is a strong indicator for a
PreparedStatement.MockStatement does not distinguish between "batch" and
"single" statements. However...
MockExecuteContext.batchSQL() with more than one SQL string
is a strong indicator for a "multi-batch statement", as understood by
jOOQ's DSLContext.batch(Query...).MockExecuteContext.batchBindings() with more than one bind
variable array is a strong indicator for a "single-batch statement", as
understood by jOOQ's DSLContext.batch(Query).MockResult objects
as batch executions. In other words, you should guarantee that:
int multiSize = context.getBatchSQL().length;
int singleSize = context.getBatchBindings().length;
assertEquals(result.length, Math.max(multiSize, singleSize))
This holds true also for non-batch executions (where both sizes are equal
to 1)
Statement.getMoreResults().ResultQuery.fetchMany()Statement.RETURN_GENERATED_KEYS) are
requested from this execution, you can also add MockResult.data
to your result, in addition to the affected MockResult.rows. The
relevant flag is passed from MockStatement to any of these
properties:
MockResult's first Record. If OUT parameters are
requested, implementors must ensure the presence of such a
Record.execute in interface MockDataProviderctx - The execution context.null or an empty
MockResult[] is returned, this has the same effect
as returning
new MockResult[] { new MockResult(-1, null) }java.sql.SQLException - A SQLException that is passed through
to jOOQ.Copyright © 2018. All Rights Reserved.