/**
 * 
 */
package org.jboss.test.cluster.web.persistent;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

/**
 * Trivial DataSource impl that doesn't pool connections, simply creates them
 * from a {@link Driver}.
 *
 * @author Brian Stansberry
 * 
 * @version $Revision: $
 */
public class MockDataSource implements DataSource
{
   private PrintWriter logWriter;
   private int loginTimeout;
   
   private final Driver driver;
   private final String jdbcUrl;
   private final String userName;
   private final String password;
   
   public MockDataSource(Driver driver, String url, String username, String password)
   {
      this.driver = driver;
      this.jdbcUrl = url;
      this.userName = username;
      this.password = password;
   }
   public Connection getConnection() throws SQLException
   {
      return getConnection(this.userName, this.password);
   }

   public Connection getConnection(String username, String password) throws SQLException
   {
      Properties props = new Properties();
      if (username != null)
      {
         props.put("user", username);
      }
      if (password != null)
      {
         props.put("password", password);
      }
      Connection conn = driver.connect(this.jdbcUrl, props);
      return conn;
   }

   public PrintWriter getLogWriter() throws SQLException
   {
      return this.logWriter;
   }

   public int getLoginTimeout() throws SQLException
   {
      return this.loginTimeout;
   }

   public void setLogWriter(PrintWriter out) throws SQLException
   {
      this.logWriter = out;
   }

   public void setLoginTimeout(int seconds) throws SQLException
   {
      this.loginTimeout = seconds;
   }

   public boolean isWrapperFor(Class<?> iface) throws SQLException
   {
      return false;
   }
   
   public <T> T unwrap(Class<T> iface) throws SQLException
   {
      throw new SQLException("No wrapper");
   }

}
