/*
* Copyright (c) JForum Team. All rights reserved.
*
* The software in this package is published under the terms of the LGPL
* license a copy of which has been included with this distribution in the
* license.txt file.
*
* The JForum Project
* http://www.jforum.net
*/
package net.jforum.util;
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.SQLException;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
/**
* Runs a batch of sql statements
* @author Rafael Steil
*/
public class JDBCLoader {
private static final Logger logger = Logger.getLogger(JDBCLoader.class);
private Session session;
public JDBCLoader(Session session) {
this.session = session;
}
/**
* The sql file to load, relative to the classpath
* @param sqlfile
*/
public void run(String sqlfile) {
BufferedReader reader = null;
FileReader fileReader = null;
try {
fileReader = new FileReader(this.getClass().getResource(sqlfile).getFile());
reader = new BufferedReader(fileReader);
String line = null;
while ((line = reader.readLine()) != null) {
if (!StringUtils.isEmpty(line)) {
logger.debug("JDBCLoader: [Running] " + line);
this.runStatement(line);
}
}
}
catch (Exception e) {
throw new RuntimeException(e);
}
finally {
if (fileReader != null) {
try { fileReader.close(); }
catch (Exception e) {}
}
if (reader != null) {
try { reader.close(); }
catch (Exception e) {}
}
}
}
private void runStatement(String sql) throws SQLException {
SQLQuery query = session.createSQLQuery(sql);
query.executeUpdate();
}
}