@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,8 +40,8 @@ public abstract class DatabasePopulatorUtils {
|
||||
* @throws DataAccessException if an error occurs, specifically a {@link ScriptException}
|
||||
*/
|
||||
public static void execute(DatabasePopulator populator, DataSource dataSource) throws DataAccessException {
|
||||
Assert.notNull(populator, "DatabasePopulator must be provided");
|
||||
Assert.notNull(dataSource, "DataSource must be provided");
|
||||
Assert.notNull(populator, "DatabasePopulator must not be null");
|
||||
Assert.notNull(dataSource, "DataSource must not be null");
|
||||
try {
|
||||
Connection connection = DataSourceUtils.getConnection(dataSource);
|
||||
try {
|
||||
@@ -53,11 +53,10 @@ public abstract class DatabasePopulatorUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
catch (Throwable ex) {
|
||||
if (ex instanceof ScriptException) {
|
||||
throw (ScriptException) ex;
|
||||
}
|
||||
|
||||
throw new UncategorizedScriptException("Failed to execute database script", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
|
||||
private List<Resource> scripts = new ArrayList<Resource>();
|
||||
List<Resource> scripts = new ArrayList<Resource>();
|
||||
|
||||
private String sqlScriptEncoding;
|
||||
|
||||
@@ -117,7 +117,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
*/
|
||||
public void addScript(Resource script) {
|
||||
Assert.notNull(script, "Script must not be null");
|
||||
getScripts().add(script);
|
||||
this.scripts.add(script);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +126,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
*/
|
||||
public void addScripts(Resource... scripts) {
|
||||
assertContentsOfScriptArray(scripts);
|
||||
getScripts().addAll(Arrays.asList(scripts));
|
||||
this.scripts.addAll(Arrays.asList(scripts));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,6 +140,11 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
this.scripts = new ArrayList<Resource>(Arrays.asList(scripts));
|
||||
}
|
||||
|
||||
private void assertContentsOfScriptArray(Resource... scripts) {
|
||||
Assert.notNull(scripts, "Scripts array must not be null");
|
||||
Assert.noNullElements(scripts, "Scripts array must not contain null elements");
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the encoding for the configured SQL scripts, if different from the
|
||||
* platform encoding.
|
||||
@@ -220,6 +225,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
this.ignoreFailedDrops = ignoreFailedDrops;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @see #execute(DataSource)
|
||||
@@ -227,10 +233,10 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
@Override
|
||||
public void populate(Connection connection) throws ScriptException {
|
||||
Assert.notNull(connection, "Connection must not be null");
|
||||
for (Resource script : getScripts()) {
|
||||
ScriptUtils.executeSqlScript(connection, encodeScript(script), this.continueOnError,
|
||||
this.ignoreFailedDrops, this.commentPrefix, this.separator, this.blockCommentStartDelimiter,
|
||||
this.blockCommentEndDelimiter);
|
||||
for (Resource script : this.scripts) {
|
||||
EncodedResource encodedScript = new EncodedResource(script, this.sqlScriptEncoding);
|
||||
ScriptUtils.executeSqlScript(connection, encodedScript, this.continueOnError, this.ignoreFailedDrops,
|
||||
this.commentPrefix, this.separator, this.blockCommentStartDelimiter, this.blockCommentEndDelimiter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,28 +250,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
|
||||
* @see #populate(Connection)
|
||||
*/
|
||||
public void execute(DataSource dataSource) throws ScriptException {
|
||||
Assert.notNull(dataSource, "DataSource must not be null");
|
||||
DatabasePopulatorUtils.execute(this, dataSource);
|
||||
}
|
||||
|
||||
final List<Resource> getScripts() {
|
||||
return this.scripts;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link EncodedResource} is not a sub-type of {@link Resource}. Thus we
|
||||
* always need to wrap each script resource in an {@code EncodedResource}
|
||||
* using the configured {@linkplain #setSqlScriptEncoding encoding}.
|
||||
* @param script the script to wrap (never {@code null})
|
||||
*/
|
||||
private EncodedResource encodeScript(Resource script) {
|
||||
Assert.notNull(script, "Script must not be null");
|
||||
return new EncodedResource(script, this.sqlScriptEncoding);
|
||||
}
|
||||
|
||||
private void assertContentsOfScriptArray(Resource... scripts) {
|
||||
Assert.notNull(scripts, "Scripts must not be null");
|
||||
Assert.noNullElements(scripts, "Scripts array must not contain null elements");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user