@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2011 the original author or authors .
* Copyright 2002 - 2012 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 .
@ -43,6 +43,7 @@ import org.springframework.util.StringUtils;
@@ -43,6 +43,7 @@ import org.springframework.util.StringUtils;
* @author Dave Syer
* @author Juergen Hoeller
* @author Chris Beams
* @author Oliver Gierke
* @since 3 . 0
* /
public class ResourceDatabasePopulator implements DatabasePopulator {
@ -265,7 +266,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
@@ -265,7 +266,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
if ( content [ i ] = = '\'' ) {
inLiteral = ! inLiteral ;
}
if ( ! inLiteral & & script . substring ( i ) . startsWith ( delim ) ) {
if ( ! inLiteral & & startsWithDelimiter ( script , i , delim ) ) {
return true ;
}
}
@ -273,8 +274,29 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
@@ -273,8 +274,29 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
}
/ * *
* Split an SQL script into separate statements delimited with the provided delimiter character .
* Each individual statement will be added to the provided < code > List < / code > .
* Return whether the substring of a given source { @link String } starting at the
* given index starts with the given delimiter .
*
* @param source the source { @link String } to inspect
* @param startIndex the index to look for the delimiter
* @param delim the delimiter to look for
* /
private boolean startsWithDelimiter ( String source , int startIndex , String delim ) {
int endIndex = startIndex + delim . length ( ) ;
if ( source . length ( ) < endIndex ) {
// String is too short to contain the delimiter
return false ;
}
return source . substring ( startIndex , endIndex ) . equals ( delim ) ;
}
/ * *
* Split an SQL script into separate statements delimited with the provided delimiter
* character . Each individual statement will be added to the provided { @code List } .
*
* @param script the SQL script
* @param delim character delimiting each statement ( typically a ';' character )
* @param statements the List that will contain the individual statements
@ -301,7 +323,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
@@ -301,7 +323,7 @@ public class ResourceDatabasePopulator implements DatabasePopulator {
inLiteral = ! inLiteral ;
}
if ( ! inLiteral ) {
if ( script . substring ( i ) . startsWith ( delim ) ) {
if ( startsWithDelimiter ( script , i , delim ) ) {
if ( sb . length ( ) > 0 ) {
statements . add ( sb . toString ( ) ) ;
sb = new StringBuilder ( ) ;