public class ResourceDatabasePopulator extends java.lang.Object implements DatabasePopulator
Call addScript(Resource)
to add a single SQL script location.
Call addScripts(Resource...)
to add multiple SQL script locations.
Call setSqlScriptEncoding(String)
to set the encoding for all added
scripts.
DatabasePopulatorUtils
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
blockCommentEndDelimiter |
private java.lang.String |
blockCommentStartDelimiter |
private java.lang.String |
commentPrefix |
private boolean |
continueOnError |
private boolean |
ignoreFailedDrops |
private java.util.List<Resource> |
scripts |
private java.lang.String |
separator |
private java.lang.String |
sqlScriptEncoding |
Constructor and Description |
---|
ResourceDatabasePopulator()
Construct a new
ResourceDatabasePopulator with default settings. |
ResourceDatabasePopulator(boolean continueOnError,
boolean ignoreFailedDrops,
java.lang.String sqlScriptEncoding,
Resource... scripts)
Construct a new
ResourceDatabasePopulator with the supplied values. |
ResourceDatabasePopulator(Resource... scripts)
Construct a new
ResourceDatabasePopulator with default settings
for the supplied scripts. |
Modifier and Type | Method and Description |
---|---|
void |
addScript(Resource script)
Add a script to execute to initialize or populate the database.
|
void |
addScripts(Resource... scripts)
Add multiple scripts to execute to initialize or populate the database.
|
private EncodedResource |
encodeScript(Resource script)
EncodedResource is not a sub-type of Resource . |
void |
populate(java.sql.Connection connection)
Populate, initialize, or clean up the database using the provided JDBC
connection.
|
void |
setBlockCommentEndDelimiter(java.lang.String blockCommentEndDelimiter)
Set the end delimiter that identifies block comments within the SQL
scripts.
|
void |
setBlockCommentStartDelimiter(java.lang.String blockCommentStartDelimiter)
Set the start delimiter that identifies block comments within the SQL
scripts.
|
void |
setCommentPrefix(java.lang.String commentPrefix)
Set the prefix that identifies line comments within the SQL scripts.
|
void |
setContinueOnError(boolean continueOnError)
Flag to indicate that all failures in SQL should be logged but not cause a failure.
|
void |
setIgnoreFailedDrops(boolean ignoreFailedDrops)
Flag to indicate that a failed SQL
DROP statement can be ignored. |
void |
setScripts(Resource... scripts)
Set the scripts to execute to initialize or populate the database,
replacing any previously added scripts.
|
void |
setSeparator(java.lang.String separator)
Specify the statement separator, if a custom one.
|
void |
setSqlScriptEncoding(java.lang.String sqlScriptEncoding)
Specify the encoding for SQL scripts, if different from the platform encoding.
|
private java.util.List<Resource> scripts
private java.lang.String sqlScriptEncoding
private java.lang.String separator
private java.lang.String commentPrefix
private java.lang.String blockCommentStartDelimiter
private java.lang.String blockCommentEndDelimiter
private boolean continueOnError
private boolean ignoreFailedDrops
public ResourceDatabasePopulator()
ResourceDatabasePopulator
with default settings.public ResourceDatabasePopulator(Resource... scripts)
ResourceDatabasePopulator
with default settings
for the supplied scripts.scripts
- the scripts to execute to initialize or populate the databasepublic ResourceDatabasePopulator(boolean continueOnError, boolean ignoreFailedDrops, java.lang.String sqlScriptEncoding, Resource... scripts)
ResourceDatabasePopulator
with the supplied values.continueOnError
- flag to indicate that all failures in SQL should be
logged but not cause a failureignoreFailedDrops
- flag to indicate that a failed SQL DROP
statement can be ignoredsqlScriptEncoding
- the encoding for the supplied SQL scripts, if
different from the platform encoding; may be null
scripts
- the scripts to execute to initialize or populate the databasepublic void addScript(Resource script)
script
- the path to an SQL scriptpublic void addScripts(Resource... scripts)
scripts
- the scripts to executepublic void setScripts(Resource... scripts)
scripts
- the scripts to executepublic void setSqlScriptEncoding(java.lang.String sqlScriptEncoding)
sqlScriptEncoding
- the encoding used in scriptsaddScript(Resource)
public void setSeparator(java.lang.String separator)
Default is ";".
separator
- the statement separatorpublic void setCommentPrefix(java.lang.String commentPrefix)
Default is "--".
commentPrefix
- the prefix for single-line commentspublic void setBlockCommentStartDelimiter(java.lang.String blockCommentStartDelimiter)
Default is "/*".
blockCommentStartDelimiter
- the start delimiter for block commentssetBlockCommentEndDelimiter(java.lang.String)
public void setBlockCommentEndDelimiter(java.lang.String blockCommentEndDelimiter)
Default is "*/".
blockCommentEndDelimiter
- the end delimiter for block commentssetBlockCommentStartDelimiter(java.lang.String)
public void setContinueOnError(boolean continueOnError)
Defaults to false
.
continueOnError
- true
if script execution should continue on errorpublic void setIgnoreFailedDrops(boolean ignoreFailedDrops)
DROP
statement can be ignored.
This is useful for non-embedded databases whose SQL dialect does not support an
IF EXISTS
clause in a DROP
statement.
The default is false
so that if the populator runs accidentally, it will
fail fast if the script starts with a DROP
statement.
ignoreFailedDrops
- true
if failed drop statements should be ignoredpublic void populate(java.sql.Connection connection) throws ScriptException
Concrete implementations may throw an SQLException
if
an error is encountered but are strongly encouraged to throw a
specific ScriptException
instead. For example, Spring's
ResourceDatabasePopulator
and DatabasePopulatorUtils
wrap
all SQLExceptions
in ScriptExceptions
.
populate
in interface DatabasePopulator
connection
- the JDBC connection to use to populate the db; already
configured and ready to useScriptException
- in all other error casesDatabasePopulatorUtils.execute(org.springframework.jdbc.datasource.init.DatabasePopulator, javax.sql.DataSource)
private EncodedResource encodeScript(Resource script)
EncodedResource
is not a sub-type of Resource
. Thus we
always need to wrap each script resource in an encoded resource.