/**\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
*\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
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
* @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
*/\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
*/\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
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
}\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
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
} 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
}\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
}\r
}\r
}\r
- \r
- \r
+\r
+\r
/**\r
* stops the Hsqldb Server\r
*/\r
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
}\r
this.isSilent = isSilent;\r
}\r
- \r
- \r
+\r
+\r
\r
}\r