/*
* The Spring Framework is published under the terms
* of the Apache Software License.
*/
package org.springframework.autobuilds.ant;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
/**
* HsqlShutdown
*
* Custom ANT task to perform a clean shutdown of an hsql db instance. Only
* handles HSQL Server mode.
*
* @author Darren Davison
*/
public class HsqlShutdown extends Task {
// task attribs & defaults
private String url = "jdbc:hsqldb:hsql://localhost:9001";
private String user = "sa";
private String password = "";
private boolean compact = false;
/**
* @see org.apache.tools.ant.Task#execute()
*/
public void execute() throws BuildException {
super.execute();
Connection con = null;
Statement stmt = null;
try {
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection(url, user, password);
stmt = con.createStatement();
stmt.execute("SHUTDOWN" + (compact ? " COMPACT" : ""));
} catch (ClassNotFoundException e) {
throw new BuildException("Failed to load HSQL driver - ensure hsqldb.jar is on the classpath");
} catch (SQLException e) {
throw new BuildException("Failed to connect to HSQL server instance: " + e.getMessage());
}
finally {
try {
if (stmt != null) stmt.close();
if (con != null) con.close();
} catch (SQLException sqle_) {}
}
}
/**
* @see org.apache.tools.ant.Task#getDescription()
*/
public String getDescription() {
return "Shutdown a running hsqldb instance cleanly";
}
/**
* @param b
*/
public void setCompact(boolean b) {
compact = b;
}
/**
* @param string
*/
public void setPassword(String string) {
password = string;
}
/**
* @param string
*/
public void setUser(String string) {
user = string;
}
/**
* @param string
*/
public void setUrl(String string) {
url = string;
}
}