OSDN Git Service

Merge branch 'temp1'
[luz/luz.git] / src / com / lavans / luz2 / sql / DriverWrapper.java
diff --git a/src/com/lavans/luz2/sql/DriverWrapper.java b/src/com/lavans/luz2/sql/DriverWrapper.java
new file mode 100644 (file)
index 0000000..be24838
--- /dev/null
@@ -0,0 +1,169 @@
+/* $Id: DriverWrapper.java 413 2011-07-28 23:05:11Z dobashi $\r
+ * created: 2005/05/24\r
+ *\r
+ */\r
+package com.lavans.luz2.sql;\r
+\r
+import java.sql.Connection;\r
+import java.sql.Driver;\r
+import java.sql.DriverManager;\r
+import java.sql.DriverPropertyInfo;\r
+import java.sql.SQLException;\r
+import java.util.Properties;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.w3c.dom.Element;\r
+import org.w3c.dom.Node;\r
+import org.w3c.dom.NodeList;\r
+\r
+import com.lavans.luz2.util.Config;\r
+\r
+/**\r
+ * Driverラッパークラス。\r
+ * DBManagerを直接使用できない環境でClusterConnectionを使用するためのラッパー。\r
+ * lavansutil.xmlのdatabase-defaultに定義したDB接続情報でConnectionを返す。\r
+ *\r
+ * DriverWrapperを使用する場合はlavansutil.xmlの設定ではなく\r
+ * 渡されたurlを元に\r
+ * @author dobashi\r
+ *\r
+ */\r
+public class DriverWrapper implements Driver{\r
+       /** Logger */\r
+       private static final Log logger = LogFactory.getLog(DriverWrapper.class);\r
+\r
+       /**\r
+        * 設定ファイル名。\r
+        */\r
+       private static final String CONFIG_FILE ="lavansutil.xml";\r
+\r
+       /**\r
+        * 設定ファイルのセクション名。\r
+        */\r
+       private static final String CONFIG_SECTION="database";\r
+\r
+       /**\r
+        * DriverWrapperを呼び出す側で設定する接続url\r
+        */\r
+       private static final String DRIVER_URL="jdbc:lavans";\r
+\r
+       /** 処理移譲先 */\r
+       private Driver driver = null;\r
+\r
+       static{\r
+               try {\r
+                       DriverManager.registerDriver(new DriverWrapper());\r
+               } catch (Exception e) {\r
+                       logger.error("driver resgister failed.", e);\r
+\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
+\r
+       /**\r
+        * コンストラクタ\r
+        */\r
+       public DriverWrapper() {\r
+               Element conf = (Element)Config.getInstance(CONFIG_FILE).getNode(CONFIG_SECTION);\r
+               NodeList nodeList = conf.getChildNodes();\r
+               String driverName = null;\r
+               for(int i=0; i<nodeList.getLength(); i++){\r
+                       if((nodeList.item(i).getNodeType()==Node.TEXT_NODE) ||\r
+                          (nodeList.item(i).getNodeType()==Node.COMMENT_NODE) ){\r
+                               continue;\r
+                       }\r
+                       Element dbConf = (Element)nodeList.item(i);\r
+                       String name = dbConf.getNodeName();\r
+                       if(name.equals("default")){\r
+                               driverName = dbConf.getAttribute("driver");\r
+                               break;\r
+                       }\r
+               }\r
+\r
+\r
+               if(driverName==null){\r
+                       logger.error("database-default設定情報が見つからない。");\r
+                       return;\r
+               }\r
+\r
+               try{\r
+                       driver = (Driver)Class.forName(driverName).newInstance();\r
+                       logger.debug("load success.["+ driver.getClass().getName() +"]");\r
+               }catch (Exception e) {\r
+                       logger.error("load failed.["+ driver.getClass().getName() +"]", e);\r
+               }\r
+       }\r
+\r
+       /**\r
+        * @param arg0\r
+        * @param arg1\r
+        * @return\r
+        * @throws java.sql.SQLException\r
+        */\r
+       public Connection connect(String arg0, Properties arg1) throws SQLException {\r
+               logger.debug("DriverWrapper#connect()");\r
+               return DBManager.getConnection();\r
+       }\r
+\r
+       /**\r
+        * 接続urlを受け付けるかどうかの判定。\r
+        * @param url\r
+        * @return\r
+        * @throws java.sql.SQLException\r
+        */\r
+       public boolean acceptsURL(String url) throws SQLException {\r
+               logger.debug("DriverWrapper#acceptsURL()");\r
+               return url.startsWith(DRIVER_URL);\r
+       }\r
+\r
+       //以下すべてただの委譲メソッド\r
+       /* (非 Javadoc)\r
+        * @see java.lang.Object#equals(java.lang.Object)\r
+        */\r
+       @Override\r
+       public boolean equals(Object arg0) {\r
+               return driver.equals(arg0);\r
+       }\r
+       /**\r
+        * @return\r
+        */\r
+       public int getMajorVersion() {\r
+               return driver.getMajorVersion();\r
+       }\r
+       /**\r
+        * @return\r
+        */\r
+       public int getMinorVersion() {\r
+               return driver.getMinorVersion();\r
+       }\r
+       /**\r
+        * @param arg0\r
+        * @param arg1\r
+        * @return\r
+        * @throws java.sql.SQLException\r
+        */\r
+       public DriverPropertyInfo[] getPropertyInfo(String arg0, Properties arg1)\r
+                       throws SQLException {\r
+               return driver.getPropertyInfo(arg0, arg1);\r
+       }\r
+       /* (非 Javadoc)\r
+        * @see java.lang.Object#hashCode()\r
+        */\r
+       @Override\r
+       public int hashCode() {\r
+               return driver.hashCode();\r
+       }\r
+       /**\r
+        * @return\r
+        */\r
+       public boolean jdbcCompliant() {\r
+               return driver.jdbcCompliant();\r
+       }\r
+       /* (非 Javadoc)\r
+        * @see java.lang.Object#toString()\r
+        */\r
+//     public String toString() {\r
+//             return driver.toString();\r
+//     }\r
+}\r