package org.codehaus.mojo.dbupgrade.generic; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.io.IOUtils; import org.codehaus.mojo.dbupgrade.DBUpgradeException; import org.codehaus.mojo.dbupgrade.sqlexec.SQLExec; /* * Copyright 2000-2010 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ /** * Submit the resource to jdbc in one shot. Use this to execute SQL function/store procedure * @author dtran * */ public class DBUpgradeUsingSQLNoParser extends AbstractDBUpgrade { private String sqlResouceName; public DBUpgradeUsingSQLNoParser( String sqlResourceName ) { this.sqlResouceName = sqlResourceName; } public void upgradeDB( SQLExec sqlexec, String dialect ) throws DBUpgradeException { InputStream is = null; Statement statement = null; String sql = null; try { is = DBUpgradeUsingSQL.class.getClassLoader().getResourceAsStream( this.sqlResouceName ); sql = IOUtils.toString( is ); statement = sqlexec.getConnection().createStatement(); statement.setEscapeProcessing( false ); if ( statement.execute( sql ) ) { //we expect a false return since the execution has no result set throw new DBUpgradeException( "Unable execute SQL Statement:" + sql ); } } catch ( IOException e ) { throw new DBUpgradeException( "Unable load SQL Statement from resource:" + sqlResouceName, e ); } catch ( SQLException e ) { throw new DBUpgradeException( "Unable execute SQL Statement:" + sql, e ); } finally { DbUtils.closeQuietly( statement ); } } public String toString() { return "DBUpgradeUsingSQLNoParser:" + sqlResouceName; } }