/*
* ButlerTest.java
*
* Created on November 28, 2004, 10:55 AM
*/
package test.butler;
/**
*
* @author johnz
*/
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import javax.sql.*;
import butler.sql.driver.*;
import butler.sql.util.*;
import butler.service.*;
import butler.sql.metadata.Catalog;
import butler.sql.metadata.Database;
import butler.sql.metadata.DatabaseBroker;
import butler.sql.metadata.Schema;
//import nz.co.transparent.client.util.Configuration;
//import nz.co.transparent.client.util.Constants;
import nz.co.transparent.client.util.Configuration;
import nz.co.transparent.client.util.Constants;
import org.apache.commons.dbcp.BasicDataSource;
/**
* Implmentation of DatabaseBroker.
* This implementation creates Database objects from a configuration
* file.
*
* Configuration file consists of {key:value} pairs.
*
* @author John Zoetebier
*/
public class ClientDatabaseBroker
extends DatabaseBroker {
private Schema _schema;
private Database _database;
private String _user;
private String _pwd;
/**
* Constructor for test purposes
* Credentails are loaded from config.properties file
*/
public ClientDatabaseBroker()
throws Exception {
loadCredentialsFromConfig();
loadDataSource();
System.out.println("Schema name = " + _schema.getName());
}
/**
* Constructor for production purposes
*/
public ClientDatabaseBroker(String user, String password)
throws Exception {
_user = user;
_pwd = password;
loadDataSource();
}
private void loadDataSource()
throws Exception {
_database = new Database("tsclient");
Catalog catalog = new Catalog("default");
catalog.setDatabase(_database);
_database.getCatalogs().put("", catalog);
_schema = new Schema("APP", catalog);
catalog.getSchemas().put("APP", _schema);
_schema.setCatalog(catalog);
// Initialize connection URI from configuration file
String connectURI;
if (Configuration.getProperty("server.mode", Constants.SERVER_MODE).equalsIgnoreCase("server")) {
connectURI =
"jdbc:mckoi://"
+ Configuration.getProperty("server.name", "localhost")
+ ":"
+ Configuration.getProperty("server.port", "9157");
} else {
String fileSeparator = System.getProperty("file.separator");
String clientDir = Configuration.getProperty("client.dir", ".");
String dbConfig = clientDir + fileSeparator + "resource" + fileSeparator + "db.conf";
connectURI = "jdbc:mckoi:local://" + dbConfig;
}
//connectURI = "jdbc:hsqldb:c:/home/frebe/dev/zoetebier/sql/zoetebier";
String jar = null;
String driver = "com.mckoi.JDBCDriver";
//String driver = "org.hsqldb.jdbcDriver";
String url = connectURI;
BasicDataSource basicDS = new BasicDataSource();
basicDS.setDriverClassName(driver);
basicDS.setUsername(_user);
basicDS.setPassword(_pwd);
basicDS.setUrl(connectURI);
basicDS.setDefaultAutoCommit(false);
//
// basicDS.setMaxActive(Integer.parseInt(Configuration.getProperty("dbcp.maxactive", "100")));
// basicDS.setMaxWait(Integer.parseInt(Configuration.getProperty("dbcp.maxwait", "30000")));
//
// if (Configuration.getProperty("dbcp.maxidle", "").equals("")) {
// int maxIdle = Integer.parseInt(Configuration.getProperty("dbcp.maxactive", "100"));
// maxIdle = maxIdle / 5;
// Configuration.setProperty("dbcp.maxidle", new Integer(maxIdle).toString());
// Configuration.storeConfiguration();
// }
//
// basicDS.setMaxIdle(Integer.parseInt(Configuration.getProperty("dbcp.maxidle", "50")));
// basicDS.setMinIdle(Integer.parseInt(Configuration.getProperty("dbcp.minidle", "1")));
_database.setDataSource( new PooledDataSource(basicDS));
}
/**
* Sets the current user name.
*/
private void setUser(String user) { _user = user; }
/**
* Sets the current user password.
*/
private void setPassword(String pwd) { _pwd = pwd; }
/**
* Load credentials from configuration file
* For TESTING purposes ONLY
* Production environment: setUserName() and serPassword()
*
*
*/
private void loadCredentialsFromConfig() {
// Load DataSourceHandler credentials from configuration file
setUser(Configuration.getProperty("login.username", ""));
setPassword(Configuration.getProperty("login.password", ""));
return;
}
public Schema getDefaultSchema() {
return _schema;
}
}