- java.lang.Object
 - 
- org.jooq.tools.jdbc.MockFileDatabase
 
 
- 
- All Implemented Interfaces:
 MockDataProvider
public class MockFileDatabase extends Object implements MockDataProvider
A file-basedMockDataProvider.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:
- When results are prefixed with 
>, thenDSLContext.fetchFromTXT(String)is used - In the future, other types of result sources will be supported, such as CSV, XML, JSON
 
- Author:
 - Lukas Eder, Samy Deghou
 
 
- 
- 
Constructor Summary
Constructors Constructor Description MockFileDatabase(File file)MockFileDatabase(File file, String encoding)MockFileDatabase(InputStream stream)MockFileDatabase(InputStream stream, String encoding)MockFileDatabase(Reader reader)MockFileDatabase(String string)MockFileDatabase(Source source)MockFileDatabase(MockFileDatabaseConfiguration configuration) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description MockResult[]execute(MockExecuteContext ctx)Execution callback for a JDBC query execution.MockFileDatabasenullLiteral(String literal)Deprecated.- UseMockFileDatabaseConfiguration.nullLiteral(String)instead.Map<String,List<MockResult>>queries()Deprecated.- Experimental: Do not use. 
 - 
 
- 
- 
Constructor Detail
- 
MockFileDatabase
public MockFileDatabase(File file) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(File file, String encoding) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(InputStream stream) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(InputStream stream, String encoding) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(Reader reader) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(String string) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(Source source) throws IOException
- Throws:
 IOException
 
- 
MockFileDatabase
public MockFileDatabase(MockFileDatabaseConfiguration configuration) throws IOException
- Throws:
 IOException
 
 - 
 
- 
Method Detail
- 
nullLiteral
@Deprecated public MockFileDatabase nullLiteral(String literal)
Deprecated.- UseMockFileDatabaseConfiguration.nullLiteral(String)instead.Specify thenullliteral, i.e. the string that should be parsed as anullreference, rather than as the string itself.- See Also:
 DSLContext.fetchFromTXT(String, String)
 
- 
queries
@Deprecated public Map<String,List<MockResult>> queries()
Deprecated.- Experimental: Do not use. Subject to change. 
- 
execute
public MockResult[] execute(MockExecuteContext ctx) throws SQLException
Description copied from interface:MockDataProviderExecution callback for a JDBC query execution.This callback will be called by
MockStatementupon 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:
MockStatementdoes not distinguish between "static" and "prepared" statements. However, a non-emptyMockExecuteContext.bindings()is a strong indicator for aPreparedStatement.MockStatementdoes not distinguish between "batch" and "single" statements. However...- A 
MockExecuteContext.batchSQL()with more than one SQL string is a strong indicator for a "multi-batch statement", as understood by jOOQ'sDSLContext.batch(Query...). - A 
MockExecuteContext.batchBindings()with more than one bind variable array is a strong indicator for a "single-batch statement", as understood by jOOQ'sDSLContext.batch(Query). 
- A 
 - It is recommended to return as many 
MockResultobjects 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) - You may also return more than one result for non-batch executions.
 This is useful for procedure calls with several result sets.
 
- In JDBC, such additional result sets can be obtained with
 
Statement.getMoreResults(). - In jOOQ, such additional result sets can be obtained with
 
ResultQuery.fetchMany() 
 - In JDBC, such additional result sets can be obtained with
 
 - If generated keys (
Statement.RETURN_GENERATED_KEYS) are requested from this execution, you can also addMockResult.datato your first result, in addition to the affectedMockResult.rows. The relevant flag is passed fromMockStatementto any of these properties: - OUT parameters from stored procedures are generated from the first
 
MockResult's firstRecord. If OUT parameters are requested, implementors must ensure the presence of such aRecord. 
- Specified by:
 executein interfaceMockDataProvider- Parameters:
 ctx- The execution context.- Returns:
 - The execution results. If a 
nullor an emptyMockResult[]is returned, this has the same effect as returningnew MockResult[] { new MockResult(-1, null) } - Throws:
 SQLException- ASQLExceptionthat is passed through to jOOQ.
 
 - 
 
 -