\r
import java.sql.Connection;\r
import java.sql.DriverManager;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Statement;\r
\r
import org.apache.log4j.Logger;\r
\r
*/\r
abstract class CdmDataSourceBase implements ICdmDataSource {\r
private static final Logger logger = Logger.getLogger(CdmDataSourceBase.class);\r
+\r
\r
- \r
+ private Connection getConnection() {\r
\r
+ Connection mConn = null;\r
+ try {\r
+ IDatabaseType dbType = getDatabaseType().getDatabaseType();\r
+ String classString = dbType.getClassString();\r
+ Class.forName(classString);\r
+ String mUrl = dbType.getConnectionString(this);\r
+ mConn = DriverManager.getConnection(mUrl, getUsername(), getPassword());\r
+ } catch (ClassNotFoundException e) {\r
+ logger.error("Database driver class could not be loaded\n" + "Exception: " + e.toString());\r
+ } catch(SQLException e) {\r
+ logger.error("Problems with database connection\n" + "Exception: " + e.toString());\r
+ }\r
+ return mConn;\r
+ }\r
+\r
+ \r
/* (non-Javadoc)\r
* @see eu.etaxonomy.cdm.database.ICdmDataSource#testConnection()\r
*/\r
- public boolean testConnection() {\r
+ public boolean testConnection() throws DataSourceNotFoundException {\r
+\r
+ IDatabaseType dbType = getDatabaseType().getDatabaseType();\r
+ String classString = dbType.getClassString();\r
try {\r
- IDatabaseType dbType = getDatabaseType().getDatabaseType();\r
- String classString = dbType.getClassString();\r
Class.forName(classString);\r
- \r
String mUrl = dbType.getConnectionString(this);\r
Connection mConn = DriverManager.getConnection(mUrl, getUsername(), getPassword());\r
if (mConn != null){\r
return true;\r
- }else{\r
- return false;\r
}\r
- } catch (Exception e) {\r
- logger.warn(e.getMessage());\r
- return false;\r
+ } catch (ClassNotFoundException e) {\r
+ throw new DataSourceNotFoundException(e);\r
+ } catch (SQLException e) {\r
+ throw new DataSourceNotFoundException(e);\r
+ }\r
+ return false;\r
+ }\r
+\r
+ \r
+ /**\r
+ * Executes a query and returns the ResultSet.\r
+ * @return ResultSet for the query.\r
+ */\r
+ public ResultSet executeQuery (String query) {\r
+\r
+ ResultSet rs;\r
+ try {\r
+ if (query == null){\r
+ return null;\r
+ }\r
+ Connection mConn = getConnection();\r
+ Statement mStmt = mConn.createStatement();\r
+ rs = mStmt.executeQuery(query);\r
+ return rs;\r
+ } catch(SQLException e) {\r
+ logger.error("Problems when executing query \n " + query + " \n" + "Exception: " + e);\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * Executes an update\r
+ * @return return code\r
+ */\r
+ public int executeUpdate (String sqlUpdate) {\r
+ \r
+ int result;\r
+ try {\r
+ if (sqlUpdate == null){\r
+ return 0;\r
+ }\r
+ Connection mConn = getConnection();\r
+ Statement mStmt = mConn.createStatement();\r
+ result = mStmt.executeUpdate(sqlUpdate);\r
+ return result;\r
+ } catch(SQLException e) {\r
+ logger.error("Problems when executing update\n " + sqlUpdate + " \n" + "Exception: " + e);\r
+ return 0;\r
}\r
}\r
}\r