//////////////////////////////////////////////
// This file was generated by PowerDesigner //
//////////////////////////////////////////////
// Package declaration
package db;
// Imports
import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;
// The database manager is in charge of loading database driver, connecting to a database,
// performing queries and handling errors using JDBC functions.
public class DbManager {
// Load JDBC driver
public boolean loadDriver() {
try {
// Force the JDBC driver to be loaded
error = false;
errorStr = null;
String status = "Loading the JDBC driver: " + DEFAULT_JDBCDRIVER + "...";
showStatus(status);
Class.forName(DEFAULT_JDBCDRIVER);
return true;
}
catch (Exception e) {
error = true;
errorStr = "Unable to load the JDBC driver " + DEFAULT_JDBCDRIVER + ". " +
e.toString();
e.printStackTrace(System.out);
return false;
}
}
// Connect to the database
public boolean connect() {
try {
// Do we need to reconnect?
if (isConnected() && !needReconnect) {
return true;
}
// Disconnect the old connection
if (isConnected()) {
if (!disconnect()) {
return false;
}
}
// Generate the URL for the database
String urlStr = url;
if (database.length() > 0) {
if (url.equalsIgnoreCase("jdbc:odbc")) {
url += ":";
}
else {
url += "/";
}
url += database;
}
// Set connection properties
Properties props = new Properties();
props.put("user", user);
props.put("password", password);
// Connect to the database at that URL.
error = false;
errorStr = null;
showStatus("Connecting to: " + url + "...");
DriverManager.setLoginTimeout(DEFAULT_TIMEOUT);
connection = DriverManager.getConnection(url, props);
// Create default statement
statement = connection.createStatement();
needReconnect = false;
return true;
}
catch (SQLException sqle) {
error = true;
errorStr = sqle.toString() + ". Restart connection.";
connection = null;
return false;
}
catch (Exception e) {
connection = null;
catchEx(e);
return false;
}
}
// Disconnect the database
public boolean disconnect() {
try {
error = false;
errorStr = null;
closeStatement();
if (connection != null) {
connection.close();
connection = null;
}
needReconnect = true;
return true;
}
catch (Exception e) {
catchEx(e);
return false;
}
}
// Execute a query
public boolean executeQuery(String query) {
if (statement != null) {
try {
error = false;
errorStr = null;
showStatus("Executing query: " + query);
statement.setQueryTimeout(DEFAULT_TIMEOUT);
boolean restype = statement.execute(query);
return restype;
}
catch (SQLException sqle) {
catchSQLEx(sqle);
return false;
}
catch (Exception e) {
catchEx(e);
return false;
}
}
return false;
}
// Close the statement
public boolean closeStatement() {
try {
error = false;
errorStr = null;
if (statement != null) {
statement.close();
statement = null;
}
return true;
}
catch (Exception e) {
catchEx(e);
return false;
}
}
// Catch exception
public void catchEx(Exception e) {
e.printStackTrace();
error = true;
errorStr = "Unexpected Exception: " + e.toString();
}
// Catch SQL exception
public void catchSQLEx(SQLException sqle) {
error = true;
errorStr = sqle.toString() + " Cancelling...";
try {
statement.cancel();
}
catch (SQLException sqle2) {
errorStr = sqle2.toString() + " after " + sqle.toString();
}
}
// Test if the database connection is established
public boolean isConnected() {
if (connection != null) {
return true;
}
else {
return false;
}
}
// Get URL
public String getUrl() {
return url;
}
// Set URL
public void setUrl(String newUrl) {
if (!newUrl.equalsIgnoreCase(this.url)) {
needReconnect = true;
}
this.url = newUrl;
}
// Get user name
public String getUser() {
return user;
}
// Set user name
public void setUser(String newUser) {
if (!newUser.equalsIgnoreCase(this.user)) {
needReconnect = true;
}
this.user = newUser;
}
// Get password
public String getPassword() {
return password;
}
// Set password
public void setPassword(String newPassword) {
if (!newPassword.equalsIgnoreCase(this.password)) {
needReconnect = true;
}
this.password = newPassword;
}
// Get database
public String getDatabase() {
return database;
}
// Set database
public void setDatabase(String newDatabase) {
if (!newDatabase.equalsIgnoreCase(this.database)) {
needReconnect = true;
}
this.database = newDatabase;
}
// Get statement
public Statement getStatement() {
return statement;
}
// Set statement
public Connection getConnection() {
return connection;
}
// Get error text
public String getErrorStr() {
return errorStr;
}
// Test if there is an error
public boolean hasError() {
return error;
}
// Display message in the standard output
private void showStatus(String s) {
System.out.println(s);
}
// Default JDBC driver name.
// For Sybase jConnect: "com.sybase.jdbc2.jdbc.SybDriver"
// For JDBC/ODBC: "sun.jdbc.odbc.JdbcOdbcDriver"
// For Oracle: "oracle.jdbc.driver.OracleDriver"
static final String DEFAULT_JDBCDRIVER = "com.sybase.jdbc2.jdbc.SybDriver";
// Time out delay
static final int DEFAULT_TIMEOUT = 10;
// Connection object
private Connection connection = null;
// Statement object
private Statement statement = null;
// Error code
private boolean error = false;
// Error text
private String errorStr = "";
// JDBC database URL
private String url = "";
// User name
private String user = "";
// Password
private String password = "";
// Database name
private String database = "";
// Need reconnect indicator
private boolean needReconnect = true;
}