1717import java .sql .Driver ;
1818import java .sql .SQLException ;
1919import java .sql .Statement ;
20+ import java .util .ArrayList ;
21+ import java .util .Arrays ;
2022import java .util .HashMap ;
23+ import java .util .List ;
2124import java .util .Map ;
2225import java .util .Properties ;
2326import java .util .concurrent .Future ;
@@ -35,7 +38,7 @@ public abstract class JdbcDatabaseContainer<SELF extends JdbcDatabaseContainer<S
3538
3639 private Driver driver ;
3740
38- private String initScriptPath ;
41+ private List < String > initScriptPaths = new ArrayList <>() ;
3942
4043 protected Map <String , String > parameters = new HashMap <>();
4144
@@ -133,8 +136,37 @@ public SELF withConnectTimeoutSeconds(int connectTimeoutSeconds) {
133136 return self ();
134137 }
135138
139+ /**
140+ * Sets a script for initialization.
141+ *
142+ * @param initScriptPath path to the script file
143+ * @return self
144+ */
136145 public SELF withInitScript (String initScriptPath ) {
137- this .initScriptPath = initScriptPath ;
146+ this .initScriptPaths = new ArrayList <>();
147+ this .initScriptPaths .add (initScriptPath );
148+ return self ();
149+ }
150+
151+ /**
152+ * Sets an ordered array of scripts for initialization.
153+ *
154+ * @param initScriptPaths paths to the script files
155+ * @return self
156+ */
157+ public SELF withInitScripts (String ... initScriptPaths ) {
158+ return withInitScripts (Arrays .asList (initScriptPaths ));
159+ }
160+
161+ /**
162+ * Sets an ordered collection of scripts for initialization.
163+ *
164+ * @param initScriptPaths paths to the script files
165+ * @return self
166+ */
167+ public SELF withInitScripts (Iterable <String > initScriptPaths ) {
168+ this .initScriptPaths = new ArrayList <>();
169+ initScriptPaths .forEach (this .initScriptPaths ::add );
138170 return self ();
139171 }
140172
@@ -329,9 +361,7 @@ protected void optionallyMapResourceParameterAsVolume(
329361 * Load init script content and apply it to the database if initScriptPath is set
330362 */
331363 protected void runInitScriptIfRequired () {
332- if (initScriptPath != null ) {
333- ScriptUtils .runInitScript (getDatabaseDelegate (), initScriptPath );
334- }
364+ initScriptPaths .forEach (path -> ScriptUtils .runInitScript (getDatabaseDelegate (), path ));
335365 }
336366
337367 public void setParameters (Map <String , String > parameters ) {
0 commit comments