/* * 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; } }