SecurityInterceptor added
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / database / LocalHsqldb.java
index c3d16536b0d4cdf21fa78d8136e1c45ca09fd2b3..bde45d8bf12b96d0fcf0eca81852345873e5775f 100644 (file)
@@ -1,20 +1,26 @@
 /**\r
- * \r
- */\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy\r
+* http://www.e-taxonomy.eu\r
+*\r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
 package eu.etaxonomy.cdm.database;\r
 \r
 import java.io.File;\r
+import java.io.IOException;\r
 import java.sql.Connection;\r
 import java.sql.Driver;\r
 import java.sql.DriverManager;\r
 import java.sql.SQLException;\r
 import java.util.Properties;\r
 \r
+import org.apache.commons.dbcp.BasicDataSource;\r
 import org.apache.log4j.Logger;\r
 import org.hsqldb.Server;\r
 import org.springframework.jdbc.CannotGetJdbcConnectionException;\r
-import org.springframework.jdbc.datasource.DriverManagerDataSource;\r
-//import org.springframework.jdbc.datasource.DriverManagerDataSource;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;\r
 \r
@@ -24,11 +30,11 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;
  *\r
  */\r
 \r
-public class LocalHsqldb extends DriverManagerDataSource {\r
+public class LocalHsqldb extends BasicDataSource {\r
        private static final Logger logger = Logger.getLogger(LocalHsqldb.class);\r
-       \r
+\r
        private String sep = System.getProperty("file.separator");\r
-       \r
+\r
        /** url without database name */\r
        protected String pureUrl = "jdbc:hsqldb:hsql://localhost/";\r
        /** database name */\r
@@ -43,10 +49,10 @@ public class LocalHsqldb extends DriverManagerDataSource {
        protected boolean isSilent = true;\r
        /** default driver class name */\r
        protected String DEFAULT_DRIVER_CLASS_NAME = "org.hsqldb.jdbcDriver";\r
-       \r
-       \r
+\r
+\r
        /**\r
-        * \r
+        *\r
         */\r
        public LocalHsqldb() {\r
                setDriverClassName(DEFAULT_DRIVER_CLASS_NAME);\r
@@ -58,7 +64,8 @@ public class LocalHsqldb extends DriverManagerDataSource {
         * @throws CannotGetJdbcConnectionException\r
         */\r
        public LocalHsqldb(String url) throws CannotGetJdbcConnectionException {\r
-               super(url);\r
+               super();\r
+               this.setUrl(url);\r
                setDriverClassName(DEFAULT_DRIVER_CLASS_NAME);\r
        }\r
 \r
@@ -70,7 +77,10 @@ public class LocalHsqldb extends DriverManagerDataSource {
         */\r
        public LocalHsqldb(String url, String username, String password)\r
                        throws CannotGetJdbcConnectionException {\r
-               super(url, username, password);\r
+               super();\r
+               this.setUrl(url);\r
+               this.setUsername(username);\r
+               this.setPassword(password);\r
                this.setDriverClassName(DEFAULT_DRIVER_CLASS_NAME);\r
        }\r
 \r
@@ -83,7 +93,11 @@ public class LocalHsqldb extends DriverManagerDataSource {
         */\r
        public LocalHsqldb(String driverClassName, String url, String username,\r
                        String password) throws CannotGetJdbcConnectionException {\r
-               super(driverClassName, url, username, password);\r
+               super();\r
+               this.setUrl(url);\r
+               this.setUsername(username);\r
+               this.setPassword(password);\r
+               this.setDriverClassName(driverClassName);\r
        }\r
 \r
        public void init(){\r
@@ -91,14 +105,14 @@ public class LocalHsqldb extends DriverManagerDataSource {
                        this.startHsqldbServer();\r
                }\r
        }\r
-       \r
+\r
        public void destroy(){\r
                this.stopHsqldbServer();\r
        }\r
-       \r
+\r
 \r
        /* (non-Javadoc)\r
-        * @see org.springframework.jdbc.datasource.DriverManagerDataSource#getUrl()\r
+        * @see org.springframework.jdbc.datasource.BasicDataSource#getUrl()\r
         */\r
        @Override\r
        public String getUrl() {\r
@@ -106,7 +120,7 @@ public class LocalHsqldb extends DriverManagerDataSource {
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see org.springframework.jdbc.datasource.DriverManagerDataSource#setUrl(java.lang.String)\r
+        * @see org.springframework.jdbc.datasource.BasicDataSource#setUrl(java.lang.String)\r
         */\r
        @Override\r
        public void setUrl(String url) {\r
@@ -146,12 +160,12 @@ public class LocalHsqldb extends DriverManagerDataSource {
                        setComposedUrl();\r
                }\r
        }\r
-       \r
+\r
        private void setComposedUrl(){\r
                setUrl(getPureUrl() + getDbName());\r
        }\r
-       \r
-       //checks if hsqldb-server is started, if not it will be started \r
+\r
+       //checks if hsqldb-server is started, if not it will be started\r
        private void startHsqldbServer(){\r
                try {\r
                        Driver driver = DriverManager.getDriver(getUrl());\r
@@ -166,7 +180,7 @@ public class LocalHsqldb extends DriverManagerDataSource {
                } catch (SQLException e) {\r
                        try {\r
                                //server is probably not runing on the url (or login is wrong !!)\r
-                               logger.info("Start HsqldbServer"); \r
+                               logger.info("Start HsqldbServer");\r
                                hsqldbServer = new Server();\r
                                hsqldbServer.setSilent(this.isSilent);\r
                                if (logger.isDebugEnabled()){\r
@@ -179,7 +193,7 @@ public class LocalHsqldb extends DriverManagerDataSource {
                                        }\r
                                }\r
                                hsqldbServer.setDatabaseName(0, getDbName());\r
-                               hsqldbServer.setDatabasePath(0,  getDatabasePath());\r
+                               hsqldbServer.setDatabasePath(0,  getFilePath());\r
                                hsqldbServer.start();\r
                                hsqldbServer.checkRunning(true);\r
                        } catch (RuntimeException e1) {\r
@@ -187,8 +201,8 @@ public class LocalHsqldb extends DriverManagerDataSource {
                        }\r
                }\r
        }\r
-       \r
-       \r
+\r
+\r
        /**\r
         * stops the Hsqldb Server\r
         */\r
@@ -198,29 +212,33 @@ public class LocalHsqldb extends DriverManagerDataSource {
                        hsqldbServer.stop();\r
                }\r
        }\r
-       \r
+\r
        private static final String getDefaultPath(){\r
-               //String path = System.getProperty("user.dir");\r
-               File path = CdmApplicationUtils.getWritableResourceDir();\r
-               String subPath = File.separator + "hsqlDb" + File.separator + "LocalHsqldb"; \r
-               return  path + subPath;\r
+               try {\r
+                       File path = CdmApplicationUtils.getWritableResourceDir();\r
+                       String subPath = File.separator + "hsqlDb" + File.separator + "LocalHsqldb";\r
+                       return  path + subPath;\r
+               } catch (IOException e) {\r
+                       logger.error(e);\r
+                       throw new RuntimeException(e);\r
+               }\r
        }\r
 \r
        /**\r
         * @return the dbPath\r
         */\r
-       public String getDatabasePath() {\r
+       public String getFilePath() {\r
                return databasePath;\r
        }\r
 \r
        /**\r
         * @param dbPath the dbPath to set\r
         */\r
-       public void setDatabasePath(String databasePath) {\r
+       public void setFilePath(String filePath) {\r
                if (databasePath.endsWith(sep)){\r
                        databasePath = databasePath + "localCdm";\r
                }\r
-               this.databasePath = databasePath;\r
+               this.databasePath = filePath;\r
        }\r
 \r
        /**\r
@@ -253,7 +271,7 @@ public class LocalHsqldb extends DriverManagerDataSource {
                }\r
                this.isSilent = isSilent;\r
        }\r
-       \r
-       \r
+\r
+\r
 \r
 }\r