2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.database
;
12 import java
.util
.ArrayList
;
13 import java
.util
.List
;
15 import javax
.sql
.DataSource
;
17 import org
.apache
.log4j
.Logger
;
18 import org
.hibernate
.dialect
.Dialect
;
20 import eu
.etaxonomy
.cdm
.database
.types
.H2DatabaseType
;
21 import eu
.etaxonomy
.cdm
.database
.types
.HSqlDbDatabaseType
;
22 import eu
.etaxonomy
.cdm
.database
.types
.IDatabaseType
;
23 import eu
.etaxonomy
.cdm
.database
.types
.MySQLDatabaseType
;
24 import eu
.etaxonomy
.cdm
.database
.types
.OdbcDatabaseType
;
25 import eu
.etaxonomy
.cdm
.database
.types
.OracleDatabaseType
;
26 import eu
.etaxonomy
.cdm
.database
.types
.PostgreSQLDatabaseType
;
27 import eu
.etaxonomy
.cdm
.database
.types
.SqlServer2005DatabaseType
;
28 import eu
.etaxonomy
.cdm
.database
.types
.SybaseDatabaseType
;
34 public enum DatabaseTypeEnum
{
49 private static final String P6SPY_DRIVER_CLASS_NAME
= "com.p6spy.engine.spy.P6SpyDriver";
50 private boolean useP6Spy
= false;
54 * @return the useP6Spy
56 public boolean isUseP6Spy() {
61 * @param useP6Spy the useP6Spy to set
63 public void setUseP6Spy(boolean useP6Spy
) {
64 this.useP6Spy
= useP6Spy
;
71 private DatabaseTypeEnum(int i
) {
75 this.dbType
= new HSqlDbDatabaseType(); break;
77 this.dbType
= new MySQLDatabaseType(); break;
79 this.dbType
= new OdbcDatabaseType(); break;
81 this.dbType
= new PostgreSQLDatabaseType(); break;
83 this.dbType
= new OracleDatabaseType(); break;
85 // this.dbType = new SqlServer2000DatabaseType(); break;
87 this.dbType
= new SqlServer2005DatabaseType(); break;
89 this.dbType
= new SybaseDatabaseType(); break;
91 this.dbType
= new H2DatabaseType(); break;
97 public IDatabaseType
getDatabaseType(){
102 private static final Logger logger
= Logger
.getLogger(DatabaseTypeEnum
.class);
103 protected IDatabaseType dbType
;
109 public String
getName(){
110 return dbType
.getName();
116 public String
getDriverClassName(){
118 return P6SPY_DRIVER_CLASS_NAME
;
121 return dbType
.getClassString();
126 * Returns the DataSource class that that the datasource needs to create a spring bean
127 * @return the DataSource class
129 public Class
<?
extends DataSource
> getDataSourceClass(){
130 return dbType
.getDataSourceClass();
136 public String
getUrl(){
137 return dbType
.getUrlString();
143 public String
getHibernateDialectCanonicalName(){
144 return dbType
.getHibernateDialectCanonicalName();
150 public int getDefaultPort(){
151 return dbType
.getDefaultPort();
155 * returns the connection string
156 * @param server the server, e.g. IP-Address
157 * @param database the database name on the server (e.g. "testDB")
158 * @param port the port number
159 * @return the connection string
161 public String
getConnectionString(ICdmDataSource cdmDataSource
){
162 String result
= dbType
.getConnectionString(cdmDataSource
);
163 logger
.debug("Connection String: " + result
);
168 * Returns the {@link Dialect hiberante dialect} used for this database type.
169 * @return hibernate dialect
171 public Dialect
getHibernateDialect(){
172 Dialect result
= dbType
.getHibernateDialect();
177 * Returns the Name of the initialization method to be used when a hibernate datasource is created for this database
178 * @return String name of the init method
180 public String
getInitMethod(){
181 String result
= dbType
.getInitMethod();
182 logger
.debug("InitMethod: " + result
);
187 * Returns the Name of the destroying method to be used when a hibernate datasource representing this database is destroyed
188 * @return String name of the destroy method
190 public String
getDestroyMethod(){
191 String result
= dbType
.getDestroyMethod();
192 logger
.debug("DestroyMethod: " + result
);
197 * Returns a List of all available DatabaseEnums.
198 * @return List of DatabaseEnums
200 public static List
<DatabaseTypeEnum
> getAllTypes(){
201 List
<DatabaseTypeEnum
> result
= new ArrayList
<DatabaseTypeEnum
>();
202 for (DatabaseTypeEnum dbEnum
: DatabaseTypeEnum
.values()){
209 * Returns the DatabaseTypeEnum to a given DriverClass
210 * @param strDriverClass
211 * @return the according DatabaseTypeEnum. Null if the driver class does not exist.
213 public static DatabaseTypeEnum
getDatabaseEnumByDriverClass(String strDriverClass
){
214 for (DatabaseTypeEnum dbEnum
: DatabaseTypeEnum
.values()){
215 if (dbEnum
.getDriverClassName().equals(strDriverClass
)){
219 logger
.warn("Unknown driver class " + strDriverClass
==null ?
"null" : strDriverClass
);