/**\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.util.ArrayList;\r
import java.util.List;\r
\r
+import javax.sql.DataSource;\r
+\r
import org.apache.log4j.Logger;\r
+import org.hibernate.dialect.Dialect;\r
\r
+import eu.etaxonomy.cdm.database.types.H2DatabaseType;\r
import eu.etaxonomy.cdm.database.types.HSqlDbDatabaseType;\r
import eu.etaxonomy.cdm.database.types.IDatabaseType;\r
import eu.etaxonomy.cdm.database.types.MySQLDatabaseType;\r
import eu.etaxonomy.cdm.database.types.OdbcDatabaseType;\r
+import eu.etaxonomy.cdm.database.types.OracleDatabaseType;\r
import eu.etaxonomy.cdm.database.types.PostgreSQLDatabaseType;\r
-import eu.etaxonomy.cdm.database.types.SqlServerDatabaseType;\r
+import eu.etaxonomy.cdm.database.types.SqlServer2005DatabaseType;\r
+import eu.etaxonomy.cdm.database.types.SybaseDatabaseType;\r
\r
/**\r
* @author a.mueller\r
MySQL(2),\r
ODBC(3),\r
PostgreSQL(4),\r
- SqlServer(5)\r
+ Oracle(5),\r
+ //SqlServer2000(6),\r
+ SqlServer2005(7),\r
+ Sybase(8),\r
+ H2(9)\r
;\r
\r
+ /**\r
+ * \r
+ */\r
+ private static final String P6SPY_DRIVER_CLASS_NAME = "com.p6spy.engine.spy.P6SpyDriver";\r
+ private boolean useP6Spy = false;\r
+ \r
+ \r
+ /**\r
+ * @return the useP6Spy\r
+ */\r
+ public boolean isUseP6Spy() {\r
+ return useP6Spy;\r
+ }\r
+\r
+ /**\r
+ * @param useP6Spy the useP6Spy to set\r
+ */\r
+ public void setUseP6Spy(boolean useP6Spy) {\r
+ this.useP6Spy = useP6Spy;\r
+ }\r
+\r
/**\r
* Constructor\r
* @param i\r
this.dbType = new OdbcDatabaseType(); break;\r
case 4:\r
this.dbType = new PostgreSQLDatabaseType(); break;\r
- case 5:\r
- this.dbType = new SqlServerDatabaseType(); break;\r
+ case 5:\r
+ this.dbType = new OracleDatabaseType(); break;\r
+// case 6:\r
+// this.dbType = new SqlServer2000DatabaseType(); break;\r
+ case 7:\r
+ this.dbType = new SqlServer2005DatabaseType(); break;\r
+ case 8:\r
+ this.dbType = new SybaseDatabaseType(); break;\r
+ case 9:\r
+ this.dbType = new H2DatabaseType(); break;\r
default:\r
//TODO Exception\r
}\r
}\r
\r
+ public IDatabaseType getDatabaseType(){\r
+ return dbType;\r
+ }\r
+ \r
//Logger\r
private static final Logger logger = Logger.getLogger(DatabaseTypeEnum.class);\r
protected IDatabaseType dbType;\r
* @return\r
*/\r
public String getDriverClassName(){\r
- return dbType.getClassString();\r
+ if(useP6Spy){\r
+ return P6SPY_DRIVER_CLASS_NAME;\r
+ \r
+ } else {\r
+ return dbType.getClassString(); \r
+ }\r
+ }\r
+ \r
+ /**\r
+ * Returns the DataSource class that the datasource needs to create a spring bean\r
+ * @return the DataSource class\r
+ */\r
+ public Class<? extends DataSource> getDataSourceClass(){\r
+ return dbType.getDataSourceClass();\r
}\r
\r
/**\r
/**\r
* @return\r
*/\r
- public String getHibernateDialect(){\r
- return dbType.getHibernateDialect();\r
+ public String getHibernateDialectCanonicalName(){\r
+ return dbType.getHibernateDialectCanonicalName();\r
}\r
\r
/**\r
* @param port the port number\r
* @return the connection string\r
*/\r
- public String getConnectionString(String server, String database, int port){\r
- String result = dbType.getConnectionString(server, database, port);\r
+ public String getConnectionString(ICdmDataSource cdmDataSource){\r
+ String result = dbType.getConnectionString(cdmDataSource);\r
logger.debug("Connection String: " + result); \r
return result;\r
}\r
- \r
+ \r
+ /**\r
+ * Returns the {@link Dialect hiberante dialect} used for this database type.\r
+ * @return hibernate dialect\r
+ */\r
+ public Dialect getHibernateDialect(){\r
+ Dialect result = dbType.getHibernateDialect();\r
+ return result;\r
+ }\r
\r
/**\r
- * returns the connection string (using the default port)\r
- * @param server the server, e.g. IP-Address\r
- * @param database the database name on the server (e.g. "testDB")\r
- * @return the connection string\r
- */\r
- public String getConnectionString(String server, String database){\r
- String result = dbType.getConnectionString(server, database);\r
- logger.debug("Connection String: " + result); \r
+ * Returns the Name of the initialization method to be used when a hibernate datasource is created for this database\r
+ * @return String name of the init method\r
+ */\r
+ public String getInitMethod(){\r
+ String result = dbType.getInitMethod();\r
+ logger.debug("InitMethod: " + result); \r
+ return result;\r
+ }\r
+ \r
+ /**\r
+ * Returns the Name of the destroying method to be used when a hibernate datasource representing this database is destroyed\r
+ * @return String name of the destroy method\r
+ */\r
+ public String getDestroyMethod(){\r
+ String result = dbType.getDestroyMethod();\r
+ logger.debug("DestroyMethod: " + result); \r
return result;\r
}\r
\r
logger.warn("Unknown driver class " + strDriverClass==null ? "null" : strDriverClass);\r
return null;\r
}\r
+ \r
+ \r
+\r
\r
}\r
\r