Author: tomdz
Date: Sat Oct 29 11:15:55 2005
New Revision: 329463

URL: http://svn.apache.org/viewcvs?rev=329463&view=rev
Log:
Added ability to specify username & password when creating a platform instance 
for a given data source (fixes DDLUTILS-34)

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java?rev=329463&r1=329462&r2=329463&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/Platform.java Sat Oct 29 
11:15:55 2005
@@ -66,7 +66,7 @@
      * @return The model reader

      */

     public JdbcModelReader getModelReader();

-

+    

     /**

      * Returns the data source that this platform uses to access the database.

      * 

@@ -80,6 +80,34 @@
      * @param dataSource The data source

      */

     public void setDataSource(DataSource dataSource);

+

+    /**

+     * Returns the username that this platform shall use to access the 
database.

+     * 

+     * @return The username

+     */

+    public String getUsername();

+

+    /**

+     * Sets the username that this platform shall use to access the database.

+     * 

+     * @param username The username

+     */

+    public void setUsername(String username);

+

+    /**

+     * Returns the password that this platform shall use to access the 
database.

+     * 

+     * @return The password

+     */

+    public String getPassword();

+

+    /**

+     * Sets the password that this platform shall use to access the database.

+     * 

+     * @param password The password

+     */

+    public void setPassword(String password);

 

     /**

      * Returns a (new) JDBC connection from the data source.


Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java?rev=329463&r1=329462&r2=329463&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java 
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java Sat Oct 
29 11:15:55 2005
@@ -90,7 +90,8 @@
     /**

      * Creates a new platform for the specified database. This is a shortcut 
method that uses

      * [EMAIL PROTECTED] PlatformUtils#determineDatabaseType(String, String)} 
to determine the parameter

-     * for [EMAIL PROTECTED] #createNewPlatformInstance(String)}.

+     * for [EMAIL PROTECTED] #createNewPlatformInstance(String)}. Note that no 
database connection is

+     * established when using this method.

      * 

      * @param jdbcDriver        The jdbc driver

      * @param jdbcConnectionUrl The connection url

@@ -115,6 +116,27 @@
         Platform platform = createNewPlatformInstance(new 
PlatformUtils().determineDatabaseType(dataSource));

 

         platform.setDataSource(dataSource);

+        return platform;

+    }

+

+    /**

+     * Creates a new platform for the specified database. This is a shortcut 
method that uses

+     * [EMAIL PROTECTED] PlatformUtils#determineDatabaseType(DataSource)} to 
determine the parameter

+     * for [EMAIL PROTECTED] #createNewPlatformInstance(String)}. Note that 
this method sets the data source

+     * at the returned platform instance (method [EMAIL PROTECTED] 
Platform#setDataSource(DataSource)}).

+     * 

+     * @param dataSource The data source for the database

+     * @param username   The user name to use for connecting to the database

+     * @param password   The password to use for connecting to the database

+     * @return The platform or <code>null</code> if the database is not 
supported

+     */

+    public static synchronized Platform createNewPlatformInstance(DataSource 
dataSource, String username, String password) throws DdlUtilsException

+    {

+        Platform platform = createNewPlatformInstance(new 
PlatformUtils().determineDatabaseType(dataSource, username, password));

+

+        platform.setDataSource(dataSource);

+        platform.setUsername(username);

+        platform.setPassword(password);

         return platform;

     }

 


Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java?rev=329463&r1=329462&r2=329463&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java Sat Oct 
29 11:15:55 2005
@@ -218,11 +218,32 @@
      */

     public String determineDatabaseType(DataSource dataSource) throws 
DynaSqlException

     {

+        return determineDatabaseType(dataSource, null, null);

+    }

+

+    /**

+     * Tries to determine the database type for the given data source. Note 
that this will establish

+     * a connection to the database.

+     * 

+     * @param dataSource The data source

+     * @param username   The user name to use for connecting to the database

+     * @param password   The password to use for connecting to the database

+     * @return The database type or <code>null</code> if the database type 
couldn't be determined

+     */

+    public String determineDatabaseType(DataSource dataSource, String 
username, String password) throws DynaSqlException

+    {

         Connection connection = null;

 

         try

         {

-            connection = dataSource.getConnection();

+            if (username != null)

+            {

+                connection = dataSource.getConnection(username, password);

+            }

+            else

+            {

+                connection = dataSource.getConnection();

+            }

             

             DatabaseMetaData metaData = connection.getMetaData();

 


Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java
URL: 
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java?rev=329463&r1=329462&r2=329463&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java 
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/util/JdbcSupport.java Sat 
Oct 29 11:15:55 2005
@@ -42,48 +42,75 @@
     private final Log _log = LogFactory.getLog(JdbcSupport.class);
     /** The data source. */
     private DataSource _dataSource;
+    /** The username for accessing the database. */
+    private String _username;
+    /** The password for accessing the database. */
+    private String _password;
     /** The names of the currently borrowed connections (for debugging). */
     private HashSet _openConnectionNames = new HashSet();
 
+    // Properties
+    
//-------------------------------------------------------------------------     
           
+    
     /**
-     * Creates a new instance without a data source.
+     * Returns the data source used for communicating with the database.
+     * 
+     * @return The data source
      */
-    public JdbcSupport()
+    public DataSource getDataSource()
     {
+        return _dataSource;
     }
 
     /**
-     * Creates a new instance that uses the given data source for talking to
-     * the database.
+     * Sets the DataSource used for communicating with the database.
      * 
      * @param dataSource The data source
      */
-    public JdbcSupport(DataSource dataSource)
+    public void setDataSource(DataSource dataSource)
     {
         _dataSource = dataSource;
     }
 
-    // Properties
-    
//-------------------------------------------------------------------------     
           
-    
+
     /**
-     * Returns the data source used for communicating with the database.
+     * Returns the username used to access the database.
      * 
-     * @return The data source
+     * @return The username
      */
-    public DataSource getDataSource()
+    public String getUsername()
     {
-        return _dataSource;
+        return _username;
     }
 
     /**
-     * Sets the DataSource used for communicating with the database.
+     * Sets the username to be used to access the database.
      * 
-     * @param dataSource The data source
+     * @param username The username
      */
-    public void setDataSource(DataSource dataSource)
+    public void setUsername(String username)
     {
-        _dataSource = dataSource;
+        _username = username;
+    }
+
+    /**
+     * Returns the password used to access the database.
+     * 
+     * @return The password
+     */
+    public String getPassword()
+    {
+        return _password;
+    }
+
+    /**
+     * Sets the password to be used to access the database.
+     * 
+     * @param password The password
+     */
+    public void setPassword(String password)
+    {
+        _password = password;
     }
 
     // Implementation methods    
@@ -98,8 +125,16 @@
     {
         try
         {
-            Connection connection = getDataSource().getConnection();
+            Connection connection = null;
 
+            if (_username == null)
+            {
+                connection = getDataSource().getConnection();
+            }
+            else
+            {
+                connection = getDataSource().getConnection(_username, 
_password);
+            }
             if (_log.isDebugEnabled())
             {
                 String connName = connection.toString();


Reply via email to