1 package com.quantum.adapters;
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Comparator;
6 import java.util.HashMap;
11 * Basically this Factory is a Singleton that is used to return the proper adapter
14 public class AdapterFactory {
16 static class ComparatorImpl implements Comparator {
18 public int compare(Object arg0, Object arg1) {
19 DatabaseAdapter adapter0 = (DatabaseAdapter) arg0;
20 DatabaseAdapter adapter1 = (DatabaseAdapter) arg1;
22 if (adapter0 == null && adapter0 != null) {
24 } else if (adapter0 != null && adapter1 == null) {
26 } else if (adapter0 == null && adapter1 == null) {
29 return adapter0.getDisplayName().compareTo(adapter1.getDisplayName());
34 public static final String GENERIC = "GENERIC"; //$NON-NLS-1$
35 public static final String HSQLDB = "HSQLDB"; //$NON-NLS-1$
36 public static final String ORACLE = "ORACLE"; //$NON-NLS-1$
37 public static final String POSTGRES = "POSTGRES"; //$NON-NLS-1$
38 public static final String MYSQL = "MYSQL"; //$NON-NLS-1$
39 public static final String DB2 = "DB2"; //$NON-NLS-1$
40 public static final String DB2AS400 = "DB2AS400"; //$NON-NLS-1$
41 public static final String ADABASD = "ADABASD"; //$NON-NLS-1$
42 public static final String INFORMIX = "INFORMIX"; //$NON-NLS-1$
43 public static final String REDBRICK = "REDBRICK"; //$NON-NLS-1$
44 public static final String POINTBASE = "POINTBASE"; //$NON-NLS-1$
45 public static final String SYBASE = "SYBASE"; //$NON-NLS-1$
47 private static final Map DRIVER_MAP = Collections.synchronizedMap(new HashMap());
50 DRIVER_MAP.put("com.ddtek.jdbc.informix.InformixDriver", AdapterFactory.INFORMIX);
51 DRIVER_MAP.put("com.ddtek.jdbc.db2.DB2Driver", AdapterFactory.DB2);
52 DRIVER_MAP.put("com.ddtek.jdbc.oracle.OracleDriver", AdapterFactory.ORACLE);
53 DRIVER_MAP.put("com.ddtek.jdbc.sqlserver.SQLServerDriver", AdapterFactory.GENERIC);
54 DRIVER_MAP.put("com.ddtek.jdbc.sybase.SybaseDriver", AdapterFactory.SYBASE);
55 DRIVER_MAP.put("com.ibm.as400.access.AS400JDBCDriver", AdapterFactory.DB2AS400);
56 DRIVER_MAP.put("COM.ibm.db2.jdbc.app.DB2Driver", AdapterFactory.DB2);
57 DRIVER_MAP.put("COM.ibm.db2.jdbc.net.DB2Driver", AdapterFactory.DB2);
58 DRIVER_MAP.put("com.inet.ora.OraDriver", AdapterFactory.ORACLE);
59 DRIVER_MAP.put("com.inet.drda.DRDADriver", AdapterFactory.DB2);
60 DRIVER_MAP.put("com.inet.syb.SybDriver", AdapterFactory.SYBASE);
61 DRIVER_MAP.put("com.inet.tds.TdsDriver", AdapterFactory.GENERIC);
62 DRIVER_MAP.put("com.informix.jdbc.IfxDriver", AdapterFactory.INFORMIX);
63 DRIVER_MAP.put("com.microsoft.jdbc.sqlserver.SQLServerDriver", AdapterFactory.GENERIC);
64 DRIVER_MAP.put("com.mysql.jdbc.Driver", AdapterFactory.MYSQL);
65 DRIVER_MAP.put("com.pointbase.jdbc.jdbcUniversalDriver", AdapterFactory.POINTBASE);
66 DRIVER_MAP.put("com.sybase.jdbcx.SybDriver", AdapterFactory.SYBASE);
67 DRIVER_MAP.put("oracle.jdbc.driver.OracleDriver", AdapterFactory.ORACLE);
68 DRIVER_MAP.put("org.gjt.mm.mysql.Driver", AdapterFactory.MYSQL);
69 DRIVER_MAP.put("org.hsqldb.jdbcDriver", AdapterFactory.HSQLDB);
70 DRIVER_MAP.put("org.postgresql.Driver", AdapterFactory.POSTGRES);
71 DRIVER_MAP.put("weblogic.jdbc.informix.InformixDriver", AdapterFactory.INFORMIX);
72 DRIVER_MAP.put("weblogic.jdbc.sqlserver.SybaseDriver", AdapterFactory.SYBASE);
75 private static AdapterFactory instance;
77 private Map adapters = Collections.synchronizedMap(new HashMap());
79 private AdapterFactory() {
80 addAdapter(new GenericAdapter(GENERIC));
81 addAdapter(new GenericAdapter(HSQLDB));
82 addAdapter(new OracleAdapter());
83 addAdapter(new DB2Adapter());
84 addAdapter(new DB2AS400Adapter());
85 addAdapter(new PostgresAdapter());
86 addAdapter(new GenericAdapter(MYSQL));
87 addAdapter(new AdabasDAdapter());
88 addAdapter(new GenericAdapter(INFORMIX));
89 addAdapter(new RedBrickAdapter());
90 addAdapter(new GenericAdapter(SYBASE));
91 addAdapter(new GenericAdapter(POINTBASE));
93 private void addAdapter(DatabaseAdapter adapter) {
94 this.adapters.put(adapter.getType(), adapter);
97 public static synchronized AdapterFactory getInstance() {
98 if (instance == null) {
99 instance = new AdapterFactory();
104 public DatabaseAdapter getAdapter(String type){
105 DatabaseAdapter result = (DatabaseAdapter) this.adapters.get(type);
106 if (result == null) {
107 result = (DatabaseAdapter) this.adapters.get(GENERIC);
109 return result == null ? null : result;
112 public DatabaseAdapter[] getDriverList() {
113 List list = new ArrayList(this.adapters.values());
114 Collections.sort(list, new ComparatorImpl());
115 return (DatabaseAdapter[]) list.toArray(new DatabaseAdapter[list.size()]);
120 * @param driverClassName
121 * @return the adapter type, or null if the adapter type is not known
123 public String getAdapterType(String driverClassName) {
124 return (String) DRIVER_MAP.get(driverClassName);