public class ResourceDatabasePopulator extends java.lang.Object implements DatabasePopulator
addScript(org.springframework.core.io.Resource)
to add a single SQL script location.
addScripts(org.springframework.core.io.Resource...)
to add multiple SQL script locations.
populate(java.sql.Connection)
or execute(javax.sql.DataSource)
to initialize or clean up the
database using the configured scripts.
DatabasePopulatorUtils
,
ScriptUtils
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 clean up the database.
|
void |
addScripts(Resource... scripts)
Add multiple scripts to execute to initialize or clean up the database.
|
private void |
assertContentsOfScriptArray(Resource... scripts) |
private EncodedResource |
encodeScript(Resource script)
EncodedResource is not a sub-type of Resource . |
void |
execute(javax.sql.DataSource dataSource)
Execute this
ResourceDatabasePopulator against the given
DataSource . |
(package private) java.util.List<Resource> |
getScripts() |
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 single-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 clean up 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 the configured 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 clean up the database
(never null
)public 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; may
be null
or empty to indicate platform encodingscripts
- the scripts to execute to initialize or clean up the database
(never null
)public void addScript(Resource script)
script
- the path to an SQL script (never null
)public void addScripts(Resource... scripts)
scripts
- the scripts to execute (never null
)public void setScripts(Resource... scripts)
scripts
- the scripts to execute (never null
)public void setSqlScriptEncoding(java.lang.String sqlScriptEncoding)
sqlScriptEncoding
- the encoding used in scripts; may be null
or empty to indicate platform encodingaddScript(Resource)
public void setSeparator(java.lang.String separator)
Defaults to ";"
if not specified and falls back to "\n"
as a last resort; may be set to ScriptUtils.EOF_STATEMENT_SEPARATOR
to signal that each script contains a single statement without a separator.
separator
- the script statement separatorpublic void setCommentPrefix(java.lang.String commentPrefix)
Defaults to "--"
.
commentPrefix
- the prefix for single-line commentspublic void setBlockCommentStartDelimiter(java.lang.String blockCommentStartDelimiter)
Defaults to "/*"
.
blockCommentStartDelimiter
- the start delimiter for block comments
(never null
or empty)setBlockCommentEndDelimiter(java.lang.String)
public void setBlockCommentEndDelimiter(java.lang.String blockCommentEndDelimiter)
Defaults to "*/"
.
blockCommentEndDelimiter
- the end delimiter for block comments
(never null
or empty)setBlockCommentStartDelimiter(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 a non-embedded database 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 a 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 use; never null
ScriptException
- in all other error casesexecute(DataSource)
public void execute(javax.sql.DataSource dataSource) throws ScriptException
ResourceDatabasePopulator
against the given
DataSource
.
Delegates to DatabasePopulatorUtils.execute(org.springframework.jdbc.datasource.init.DatabasePopulator, javax.sql.DataSource)
.
dataSource
- the DataSource
to execute against (never null
)ScriptException
- if an error occurspopulate(Connection)
final java.util.List<Resource> getScripts()
private EncodedResource encodeScript(Resource script)
EncodedResource
is not a sub-type of Resource
. Thus we
always need to wrap each script resource in an EncodedResource
using the configured encoding.script
- the script to wrap (never null
)private void assertContentsOfScriptArray(Resource... scripts)