OSDN Git Service

i
[luz/luz.git] / luz2 / src / com / lavans / luz2 / sql / DriverWrapper.java
1 /* $Id: DriverWrapper.java 413 2011-07-28 23:05:11Z dobashi $\r
2  * created: 2005/05/24\r
3  *\r
4  */\r
5 package com.lavans.luz2.sql;\r
6 \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
13 \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
19 \r
20 import com.lavans.luz2.util.Config;\r
21 \r
22 /**\r
23  * Driverラッパークラス。\r
24  * DBManagerを直接使用できない環境でClusterConnectionを使用するためのラッパー。\r
25  * lavansutil.xmlのdatabase-defaultに定義したDB接続情報でConnectionを返す。\r
26  *\r
27  * DriverWrapperを使用する場合はlavansutil.xmlの設定ではなく\r
28  * 渡されたurlを元に\r
29  * @author dobashi\r
30  *\r
31  */\r
32 public class DriverWrapper implements Driver{\r
33         /** Logger */\r
34         private static final Log logger = LogFactory.getLog(DriverWrapper.class);\r
35 \r
36         /**\r
37          * 設定ファイル名。\r
38          */\r
39         private static final String CONFIG_FILE ="lavansutil.xml";\r
40 \r
41         /**\r
42          * 設定ファイルのセクション名。\r
43          */\r
44         private static final String CONFIG_SECTION="database";\r
45 \r
46         /**\r
47          * DriverWrapperを呼び出す側で設定する接続url\r
48          */\r
49         private static final String DRIVER_URL="jdbc:lavans";\r
50 \r
51         /** 処理移譲先 */\r
52         private Driver driver = null;\r
53 \r
54         static{\r
55                 try {\r
56                         DriverManager.registerDriver(new DriverWrapper());\r
57                 } catch (Exception e) {\r
58                         logger.error("driver resgister failed.", e);\r
59 \r
60                         e.printStackTrace();\r
61                 }\r
62         }\r
63 \r
64         /**\r
65          * コンストラクタ\r
66          */\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
74                                 continue;\r
75                         }\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
80                                 break;\r
81                         }\r
82                 }\r
83 \r
84 \r
85                 if(driverName==null){\r
86                         logger.error("database-default設定情報が見つからない。");\r
87                         return;\r
88                 }\r
89 \r
90                 try{\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
95                 }\r
96         }\r
97 \r
98         /**\r
99          * @param arg0\r
100          * @param arg1\r
101          * @return\r
102          * @throws java.sql.SQLException\r
103          */\r
104         public Connection connect(String arg0, Properties arg1) throws SQLException {\r
105                 logger.debug("DriverWrapper#connect()");\r
106                 return DBManager.getConnection();\r
107         }\r
108 \r
109         /**\r
110          * 接続urlを受け付けるかどうかの判定。\r
111          * @param url\r
112          * @return\r
113          * @throws java.sql.SQLException\r
114          */\r
115         public boolean acceptsURL(String url) throws SQLException {\r
116                 logger.debug("DriverWrapper#acceptsURL()");\r
117                 return url.startsWith(DRIVER_URL);\r
118         }\r
119 \r
120         //以下すべてただの委譲メソッド\r
121         /* (非 Javadoc)\r
122          * @see java.lang.Object#equals(java.lang.Object)\r
123          */\r
124         @Override\r
125         public boolean equals(Object arg0) {\r
126                 return driver.equals(arg0);\r
127         }\r
128         /**\r
129          * @return\r
130          */\r
131         public int getMajorVersion() {\r
132                 return driver.getMajorVersion();\r
133         }\r
134         /**\r
135          * @return\r
136          */\r
137         public int getMinorVersion() {\r
138                 return driver.getMinorVersion();\r
139         }\r
140         /**\r
141          * @param arg0\r
142          * @param arg1\r
143          * @return\r
144          * @throws java.sql.SQLException\r
145          */\r
146         public DriverPropertyInfo[] getPropertyInfo(String arg0, Properties arg1)\r
147                         throws SQLException {\r
148                 return driver.getPropertyInfo(arg0, arg1);\r
149         }\r
150         /* (非 Javadoc)\r
151          * @see java.lang.Object#hashCode()\r
152          */\r
153         @Override\r
154         public int hashCode() {\r
155                 return driver.hashCode();\r
156         }\r
157         /**\r
158          * @return\r
159          */\r
160         public boolean jdbcCompliant() {\r
161                 return driver.jdbcCompliant();\r
162         }\r
163         /* (非 Javadoc)\r
164          * @see java.lang.Object#toString()\r
165          */\r
166 //      public String toString() {\r
167 //              return driver.toString();\r
168 //      }\r
169 }\r