/* * Created on Nov 19, 2004 */ package org.apache.tools.ant.taskdefs; import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.PrintStream; import java.io.StringReader; import java.sql.SQLException; import java.util.StringTokenizer; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.SQLExec.DelimiterType; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * @author it-kevin * */ public class SQLExecTest extends TestCase { private boolean keepformat = false; private String delimiterType = DelimiterType.NORMAL; private String delimiter = ";"; private StringReader srOne; private StringReader srTwo; private PrintStream out; private String sqlToRun = "SELECT '--', '--' FROM USERS; --comment"; private String testSQL = "INSERT INTO mandator (mandator_id, mandator_name, description) VALUES (0,'--','');"; /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); srOne = new StringReader(sqlToRun); srTwo = new StringReader(testSQL); } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } protected String runStatementsOrig(Reader r) throws SQLException, IOException { StringBuffer sql = new StringBuffer(); String line; BufferedReader in = new BufferedReader(r); line = in.readLine(); if (!keepformat) { line = line.trim(); } line = new Project().replaceProperties(line); if (!keepformat) { if (line.startsWith("//")) { return "//"; } if (line.startsWith("--")) { return "--"; } StringTokenizer st = new StringTokenizer(line); if (st.hasMoreTokens()) { String token = st.nextToken(); if ("REM".equalsIgnoreCase(token)) { return "rem"; } } } if (!keepformat) { sql.append(" " + line); } else { sql.append("\n" + line); } // SQL defines "--" as a comment to EOL // and in Oracle it may contain a hint // so we cannot just remove it, instead we must end it if (!keepformat) { if (line.indexOf("--") >= 0) { sql.append("\n"); } } return sql.toString(); } protected String runStatementsNew(Reader r) throws SQLException, IOException { StringBuffer sql = new StringBuffer(); String line; BufferedReader in = new BufferedReader(r); line = in.readLine(); if (!keepformat) { line = line.trim(); } line = new Project().replaceProperties(line); if (!keepformat) { if (line.startsWith("//")) { return "//"; } if (line.startsWith("--")) { return "--"; } StringTokenizer st = new StringTokenizer(line); if (st.hasMoreTokens()) { String token = st.nextToken(); if ("REM".equalsIgnoreCase(token)) { return "rem"; } } } if (!keepformat) { sql.append(" " + line); } else { sql.append("\n" + line); } // SQL defines "--" as a comment to EOL // and in Oracle it may contain a hint // so we cannot just remove it, instead we must end it if (!keepformat) { if (line.indexOf("--") >= 0) { sql.append("\n"); } } return sql.toString(); } /** * Constructor for SQLExecTest. * @param arg0 */ public SQLExecTest(String arg0) { super(arg0); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new SQLExecTest("testRunStatements")); return suite; } public void testRunStatements() { try { assertEquals(" "+testSQL+"\n", runStatementsNew(srTwo)); } catch (Exception e) { e.printStackTrace(); fail(); } } }