001 /* 002 * JBoss DNA (http://www.jboss.org/dna) 003 * See the COPYRIGHT.txt file distributed with this work for information 004 * regarding copyright ownership. Some portions may be licensed 005 * to Red Hat, Inc. under one or more contributor license agreements. 006 * See the AUTHORS.txt file in the distribution for a full listing of 007 * individual contributors. 008 * 009 * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA 010 * is licensed to you under the terms of the GNU Lesser General Public License as 011 * published by the Free Software Foundation; either version 2.1 of 012 * the License, or (at your option) any later version. 013 * 014 * JBoss DNA is distributed in the hope that it will be useful, 015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 017 * Lesser General Public License for more details. 018 * 019 * You should have received a copy of the GNU Lesser General Public 020 * License along with this software; if not, write to the Free 021 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 022 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 023 */ 024 package org.jboss.dna.common.jdbc.provider; 025 026 import java.sql.Connection; 027 import java.sql.DriverManager; 028 029 /** 030 * Default DatabaseMetadataProvider based on driver 031 * 032 * @author <a href="mailto:litsenko_sergey@yahoo.com">Sergiy Litsenko</a> 033 */ 034 public class DefaultDriverDatabaseMetadataProvider extends DefaultDatabaseMetadataProvider 035 implements DriverDatabaseMetadataProvider { 036 // ~ Instance fields ------------------------------------------------------------------ 037 038 private static final long serialVersionUID = -3616979905696406464L; 039 private String driverClassName; 040 private String databaseUrl; 041 private String userName; 042 private String password; 043 044 // ~ Constructors --------------------------------------------------------------------- 045 046 /** 047 * Default constructor 048 */ 049 public DefaultDriverDatabaseMetadataProvider() { 050 } 051 052 /** 053 * Constructor 054 * 055 * @param name the DatabaseMetadataProvider logical name 056 */ 057 public DefaultDriverDatabaseMetadataProvider( String name ) { 058 super(name); 059 } 060 061 // ~ Methods -------------------------------------------------------------------------- 062 063 /** 064 * Opens new database connection based on suppied parameters 065 * 066 * @return new database connection based on suppied parameters 067 * @throws Exception 068 */ 069 @Override 070 protected Connection openConnection() throws Exception { 071 // log debug info 072 if (log.isDebugEnabled()) { 073 log.debug("Loading JDBC driver class: " + getDriverClassName()); 074 } 075 076 // trying to load database driver by name 077 Class.forName(getDriverClassName()); 078 079 // log debug info 080 if (log.isDebugEnabled()) { 081 log.debug("Opening database connection by using driver manager. The URL: " + getDatabaseUrl() + ". The user: " 082 + getUserName()); 083 } 084 085 // opening connection by using Driver manager 086 return DriverManager.getConnection(getDatabaseUrl(), getUserName(), getPassword()); 087 } 088 089 /** 090 * Gets JDBC driver class name 091 * 092 * @return the JDBC driver class name 093 */ 094 public String getDriverClassName() { 095 // return 096 return driverClassName; 097 } 098 099 /** 100 * Sets JDBC driver class name 101 * 102 * @param driverClassName the JDBC driver class name 103 */ 104 public void setDriverClassName( String driverClassName ) { 105 this.driverClassName = driverClassName; 106 } 107 108 /** 109 * Gets database URL as string 110 * 111 * @return database URL as string 112 */ 113 public String getDatabaseUrl() { 114 // return 115 return databaseUrl; 116 } 117 118 /** 119 * Sets the database URL as string 120 * 121 * @param databaseUrl the database URL as string 122 */ 123 public void setDatabaseUrl( String databaseUrl ) { 124 this.databaseUrl = databaseUrl; 125 } 126 127 /** 128 * Gets the user name 129 * 130 * @return the user name 131 */ 132 public String getUserName() { 133 // return 134 return userName; 135 } 136 137 /** 138 * Sets the user name 139 * 140 * @param userName the user name 141 */ 142 public void setUserName( String userName ) { 143 this.userName = userName; 144 } 145 146 /** 147 * Get user's password 148 * 149 * @return user's password 150 */ 151 public String getPassword() { 152 // return 153 return password; 154 } 155 156 /** 157 * Sets the user's password 158 * 159 * @param password the user's password 160 */ 161 public void setPassword( String password ) { 162 this.password = password; 163 } 164 }