(no commit message)
[cdmlib.git] / cdmlibrary / src / main / java / eu / etaxonomy / cdm / database / DatabaseTypeEnum.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.database;
5
6 import java.util.ArrayList;
7 import java.util.List;
8
9 import org.apache.log4j.Logger;
10
11 import eu.etaxonomy.cdm.database.types.HSqlDbDatabaseType;
12 import eu.etaxonomy.cdm.database.types.IDatabaseType;
13 import eu.etaxonomy.cdm.database.types.MySQLDatabaseType;
14 import eu.etaxonomy.cdm.database.types.OdbcDatabaseType;
15 import eu.etaxonomy.cdm.database.types.PostgreSQLDatabaseType;
16 import eu.etaxonomy.cdm.database.types.SqlServerDatabaseType;
17
18 /**
19 * @author a.mueller
20 *
21 */
22 public enum DatabaseTypeEnum {
23 HSqlDb(1),
24 MySQL(2),
25 ODBC(3),
26 PostgreSQL(4),
27 SqlServer(5)
28 ;
29
30 /**
31 * Constructor
32 * @param i
33 */
34 private DatabaseTypeEnum(int i) {
35 switch(i)
36 {
37 case 1:
38 this.dbType = new HSqlDbDatabaseType(); break;
39 case 2:
40 this.dbType = new MySQLDatabaseType(); break;
41 case 3:
42 this.dbType = new OdbcDatabaseType(); break;
43 case 4:
44 this.dbType = new PostgreSQLDatabaseType(); break;
45 case 5:
46 this.dbType = new SqlServerDatabaseType(); break;
47 default:
48 //TODO Exception
49 }
50 }
51
52 //Logger
53 private static final Logger logger = Logger.getLogger(DatabaseTypeEnum.class);
54 protected IDatabaseType dbType;
55
56
57 /**
58 * @return
59 */
60 public String getName(){
61 return dbType.getName();
62 }
63
64 /**
65 * @return
66 */
67 public String getDriverClassName(){
68 return dbType.getClassString();
69 }
70
71 /**
72 * @return
73 */
74 public String getUrl(){
75 return dbType.getUrlString();
76 }
77
78 /**
79 * @return
80 */
81 public String getHibernateDialect(){
82 return dbType.getHibernateDialect();
83 }
84
85 /**
86 * @return
87 */
88 public int getDefaultPort(){
89 return dbType.getDefaultPort();
90 }
91
92 /**
93 * returns the connection string
94 * @param server the server, e.g. IP-Address
95 * @param database the database name on the server (e.g. "testDB")
96 * @param port the port number
97 * @return the connection string
98 */
99 public String getConnectionString(String server, String database, int port){
100 String result = dbType.getConnectionString(server, database, port);
101 logger.debug("Connection String: " + result);
102 return result;
103 }
104
105
106 /**
107 * returns the connection string (using the default port)
108 * @param server the server, e.g. IP-Address
109 * @param database the database name on the server (e.g. "testDB")
110 * @return the connection string
111 */
112 public String getConnectionString(String server, String database){
113 String result = dbType.getConnectionString(server, database);
114 logger.debug("Connection String: " + result);
115 return result;
116 }
117
118 /**
119 * Returns a List of all available DatabaseEnums.
120 * @return List of DatabaseEnums
121 */
122 public static List<DatabaseTypeEnum> getAllTypes(){
123 List<DatabaseTypeEnum> result = new ArrayList<DatabaseTypeEnum>();
124 for (DatabaseTypeEnum dbEnum : DatabaseTypeEnum.values()){
125 result.add(dbEnum);
126 }
127 return result;
128 }
129
130 /**
131 * Returns the DatabaseTypeEnum to a given DriverClass
132 * @param strDriverClass
133 * @return the according DatabaseTypeEnum. Null if the driver class does not exist.
134 */
135 public static DatabaseTypeEnum getDatabaseEnumByDriverClass(String strDriverClass){
136 for (DatabaseTypeEnum dbEnum : DatabaseTypeEnum.values()){
137 if (dbEnum.getDriverClassName().equals(strDriverClass)){
138 return dbEnum;
139 }
140 }
141 logger.warn("Unknown driver class " + strDriverClass==null ? "null" : strDriverClass);
142 return null;
143 }
144
145 }
146