1 /* $Id: DriverWrapper.java 413 2011-07-28 23:05:11Z dobashi $
\r
2 * created: 2005/05/24
\r
5 package com.lavans.luz2.sql;
\r
7 import java.sql.Connection;
\r
8 import java.sql.Driver;
\r
9 import java.sql.DriverManager;
\r
10 import java.sql.DriverPropertyInfo;
\r
11 import java.sql.SQLException;
\r
12 import java.util.Properties;
\r
14 import org.apache.commons.logging.Log;
\r
15 import org.apache.commons.logging.LogFactory;
\r
16 import org.w3c.dom.Element;
\r
17 import org.w3c.dom.Node;
\r
18 import org.w3c.dom.NodeList;
\r
20 import com.lavans.luz2.util.Config;
\r
24 * DBManagerを直接使用できない環境でClusterConnectionを使用するためのラッパー。
\r
25 * lavansutil.xmlのdatabase-defaultに定義したDB接続情報でConnectionを返す。
\r
27 * DriverWrapperを使用する場合はlavansutil.xmlの設定ではなく
\r
32 public class DriverWrapper implements Driver{
\r
34 private static final Log logger = LogFactory.getLog(DriverWrapper.class);
\r
39 private static final String CONFIG_FILE ="lavansutil.xml";
\r
44 private static final String CONFIG_SECTION="database";
\r
47 * DriverWrapperを呼び出す側で設定する接続url
\r
49 private static final String DRIVER_URL="jdbc:lavans";
\r
52 private Driver driver = null;
\r
56 DriverManager.registerDriver(new DriverWrapper());
\r
57 } catch (Exception e) {
\r
58 logger.error("driver resgister failed.", e);
\r
60 e.printStackTrace();
\r
67 public DriverWrapper() {
\r
68 Element conf = (Element)Config.getInstance(CONFIG_FILE).getNode(CONFIG_SECTION);
\r
69 NodeList nodeList = conf.getChildNodes();
\r
70 String driverName = null;
\r
71 for(int i=0; i<nodeList.getLength(); i++){
\r
72 if((nodeList.item(i).getNodeType()==Node.TEXT_NODE) ||
\r
73 (nodeList.item(i).getNodeType()==Node.COMMENT_NODE) ){
\r
76 Element dbConf = (Element)nodeList.item(i);
\r
77 String name = dbConf.getNodeName();
\r
78 if(name.equals("default")){
\r
79 driverName = dbConf.getAttribute("driver");
\r
85 if(driverName==null){
\r
86 logger.error("database-default設定情報が見つからない。");
\r
91 driver = (Driver)Class.forName(driverName).newInstance();
\r
92 logger.debug("load success.["+ driver.getClass().getName() +"]");
\r
93 }catch (Exception e) {
\r
94 logger.error("load failed.["+ driver.getClass().getName() +"]", e);
\r
102 * @throws java.sql.SQLException
\r
104 public Connection connect(String arg0, Properties arg1) throws SQLException {
\r
105 logger.debug("DriverWrapper#connect()");
\r
106 return DBManager.getConnection();
\r
110 * 接続urlを受け付けるかどうかの判定。
\r
113 * @throws java.sql.SQLException
\r
115 public boolean acceptsURL(String url) throws SQLException {
\r
116 logger.debug("DriverWrapper#acceptsURL()");
\r
117 return url.startsWith(DRIVER_URL);
\r
122 * @see java.lang.Object#equals(java.lang.Object)
\r
125 public boolean equals(Object arg0) {
\r
126 return driver.equals(arg0);
\r
131 public int getMajorVersion() {
\r
132 return driver.getMajorVersion();
\r
137 public int getMinorVersion() {
\r
138 return driver.getMinorVersion();
\r
144 * @throws java.sql.SQLException
\r
146 public DriverPropertyInfo[] getPropertyInfo(String arg0, Properties arg1)
\r
147 throws SQLException {
\r
148 return driver.getPropertyInfo(arg0, arg1);
\r
151 * @see java.lang.Object#hashCode()
\r
154 public int hashCode() {
\r
155 return driver.hashCode();
\r
160 public boolean jdbcCompliant() {
\r
161 return driver.jdbcCompliant();
\r
164 * @see java.lang.Object#toString()
\r
166 // public String toString() {
\r
167 // return driver.toString();
\r