Author: cbegin Date: Mon Feb 26 10:07:02 2007 New Revision: 511936 URL: http://svn.apache.org/viewvc?view=rev&rev=511936 Log: Added delimiter configuration for ScriptRunner to support things like SQL Server's "GO" delimiter.
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/jdbc/ScriptRunner.java Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/jdbc/ScriptRunner.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/jdbc/ScriptRunner.java?view=diff&rev=511936&r1=511935&r2=511936 ============================================================================== --- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/jdbc/ScriptRunner.java (original) +++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/common/jdbc/ScriptRunner.java Mon Feb 26 10:07:02 2007 @@ -29,8 +29,7 @@ */ public class ScriptRunner { - //private static final Log log = LogFactory.getLog(ScriptRunner.class); - + private static final String DEFAULT_DELIMITER = ";"; private Connection connection; private String driver; @@ -44,6 +43,9 @@ private PrintWriter logWriter = new PrintWriter(System.out); private PrintWriter errorLogWriter = new PrintWriter(System.err); + private String delimiter = DEFAULT_DELIMITER; + private boolean fullLineDelimiter = false; + /** * Default constructor */ @@ -53,6 +55,11 @@ this.stopOnError = stopOnError; } + public void setDelimiter(String delimiter, boolean fullLineDelimiter) { + this.delimiter = delimiter; + this.fullLineDelimiter = fullLineDelimiter; + } + public ScriptRunner(String driver, String url, String username, String password, boolean autoCommit, boolean stopOnError) { this.driver = driver; this.url = url; @@ -143,8 +150,9 @@ //Do nothing } else if (trimmedLine.length() < 1 || trimmedLine.startsWith("--")) { //Do nothing - } else if (trimmedLine.endsWith(";")) { - command.append(line.substring(0, line.lastIndexOf(";"))); + } else if (!fullLineDelimiter && trimmedLine.endsWith(getDelimiter()) + || fullLineDelimiter && trimmedLine.equals(getDelimiter())) { + command.append(line.substring(0, line.lastIndexOf(getDelimiter()))); command.append(" "); Statement statement = conn.createStatement(); @@ -214,6 +222,10 @@ conn.rollback(); flush(); } + } + + private String getDelimiter() { + return delimiter; } private void print(Object o) {