// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.core.database.conn.version; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.talend.core.database.EDatabaseTypeName; import org.talend.core.database.conn.DatabaseConnConstants; /** * cli class global comment. Detailled comment */ public enum EDatabaseVersion4Drivers { // access ACCESS_2003(new DbVersion4Drivers(EDatabaseTypeName.ACCESS, "Access 2003", "Access_2003")), //$NON-NLS-1$ //$NON-NLS-2$ ACCESS_2007(new DbVersion4Drivers(EDatabaseTypeName.ACCESS, "Access 2007", "Access_2007")), //$NON-NLS-1$ //$NON-NLS-2$ // oracle ORACLE_11(new DbVersion4DriversForOracle11(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN, EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_RAC }, "Oracle 11", "ORACLE_11", new String[] { DbVersion4DriversForOracle11.DRIVER_1_5, //$NON-NLS-1$ //$NON-NLS-2$ DbVersion4DriversForOracle11.DRIVER_1_6 })), ORACLE_10(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN, EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_RAC }, "Oracle 10", "ORACLE_10", "ojdbc14-10g.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ORACLE_9(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN, EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_RAC }, "Oracle 9", "ORACLE_9", "ojdbc14-9i.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ ORACLE_8(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN, EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_RAC }, "Oracle 8", "ORACLE_8", "ojdbc12-8i.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // AS400 AS400_V5R4_V6R1(new DbVersion4Drivers(EDatabaseTypeName.AS400, "V5R4 to V6R1", "V5R4 to V6R1", "jt400_V5R3.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ AS400_V5R2_V5R4(new DbVersion4Drivers(EDatabaseTypeName.AS400, "V5R2 to V5R4", "V5R2 to V5R4", "jt400_V5R2.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // INTERBASE(new DbVersion4Drivers(EDatabaseTypeName.INTERBASE, "interclient.jar")), //$NON-NLS-1$ // HSQLDB(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB, "hsqldb.jar")), //$NON-NLS-1$ HSQLDB_IN_PROGRESS(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB_IN_PROGRESS, "hsqldb.jar")), //$NON-NLS-1$ HSQLDB_SERVER(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB_SERVER, "hsqldb.jar")), //$NON-NLS-1$ HSQLDB_WEBSERVER(new DbVersion4Drivers(EDatabaseTypeName.HSQLDB_WEBSERVER, "hsqldb.jar")), //$NON-NLS-1$ // JAVADB_EMBEDED(new DbVersion4Drivers(EDatabaseTypeName.JAVADB_EMBEDED, "derby.jar")), //$NON-NLS-1$ SQLITE(new DbVersion4Drivers(EDatabaseTypeName.SQLITE, "sqlitejdbc-v056.jar")), //$NON-NLS-1$ FIREBIRD(new DbVersion4Drivers(EDatabaseTypeName.FIREBIRD, "jaybird-full-2.1.1.jar")), //$NON-NLS-1$ TERADATA(new DbVersion4Drivers(EDatabaseTypeName.TERADATA, new String[] { "terajdbc4.jar", "tdgssconfig.jar", "tdgssjava.jar" })), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ JAVADB_DERBYCLIENT(new DbVersion4Drivers(EDatabaseTypeName.JAVADB_DERBYCLIENT, "derbyclient.jar")), //$NON-NLS-1$ NETEZZA(new DbVersion4Drivers(EDatabaseTypeName.NETEZZA, "nzjdbc.jar")), //$NON-NLS-1$ INFORMIX(new DbVersion4Drivers(EDatabaseTypeName.INFORMIX, "ifxjdbc.jar")), //$NON-NLS-1$ SAS_9_1(new DbVersion4Drivers(EDatabaseTypeName.SAS, "SAS 9.1", "SAS_9.1", new String[] { "sas.core.jar", //$NON-NLS-1$ "sas.intrnet.javatools.jar", "sas.svc.connection.jar" })), //$NON-NLS-1$ //$NON-NLS-2$ SAS_9_2(new DbVersion4Drivers(EDatabaseTypeName.SAS, "SAS 9.2", "SAS_9.2", new String[] { "sas.core.jar", "sas.security.sspi.jar", "sas.svc.connection.jar" })), //$NON-NLS-1$ //$NON-NLS-2$ // MYSQL, add for 9594 MYSQL_5(new DbVersion4Drivers(EDatabaseTypeName.MYSQL, "MySQL 5", "MYSQL_5", "mysql-connector-java-5.1.0-bin.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ MYSQL_4(new DbVersion4Drivers(EDatabaseTypeName.MYSQL, "MySQL 4", "MYSQL_4", "mysql-connector-java-3.1.14-bin.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // add for 9594 MSSQL(new DbVersion4Drivers(EDatabaseTypeName.MSSQL, "jtds-1.2.5.jar")), //$NON-NLS-1$ MSSQL2005(new DbVersion4Drivers(EDatabaseTypeName.MSSQL05_08, "MSSQL2005", "MSSQL_2005", new String[] { "sqljdbc.jar", "sqljdbc4.jar" })), //$NON-NLS-1$ MSSQL2008(new DbVersion4Drivers(EDatabaseTypeName.MSSQL05_08, "MSSQL2008", "MSSQL_2008", new String[] { "sqljdbc.jar", "sqljdbc4.jar" })), //$NON-NLS-1$ VERTICA_5(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 5", "VERTICA_5", "vertica_4.1.14_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ VERTICA_4_1(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 4.1", "VERTICA_4_1", "vertica_4.1.7_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ VERTICA_4(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 4", "VERTICA_4", "vertica_4.0_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ VERTICA_3(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 3", "VERTICA_3", "vertica_3.0_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ VERTICA_3_5(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 3.5", "VERTICA_3.5", "vertica_3.5_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ // for bug 0017930 GREENPLUM(new DbVersion4Drivers(EDatabaseTypeName.GREENPLUM, "postgresql-8.3-603.jdbc3.jar")), //$NON-NLS-1$ PSQL(new DbVersion4Drivers(EDatabaseTypeName.PSQL, "postgresql-8.3-603.jdbc3.jar")), //$NON-NLS-1$ PLUSPSQL(new DbVersion4Drivers(EDatabaseTypeName.PLUSPSQL, "postgresql-8.3-603.jdbc3.jar")), //$NON-NLS-1$ IBMDB2(new DbVersion4Drivers(EDatabaseTypeName.IBMDB2, new String[] { "db2jcc.jar", "db2jcc_license_cu.jar", //$NON-NLS-1$ //$NON-NLS-2$ "db2jcc_license_cisuz.jar" })), //$NON-NLS-1$ IBMDB2ZOS(new DbVersion4Drivers(EDatabaseTypeName.IBMDB2ZOS, new String[] { "db2jcc.jar", "db2jcc_license_cu.jar", //$NON-NLS-1$ //$NON-NLS-2$ "db2jcc_license_cisuz.jar" })), //$NON-NLS-1$ SYBASEASE(new DbVersion4Drivers(EDatabaseTypeName.SYBASEASE, "jconn3.jar")), //$NON-NLS-1$ SYBASEIQ(new DbVersion4Drivers(EDatabaseTypeName.SYBASEIQ, "jconn3.jar")), //$NON-NLS-1$ // for bug 0013127 PARACCEL(new DbVersion4Drivers(EDatabaseTypeName.PARACCEL, "paraccel-jdbc.jar")), //$NON-NLS-1$ VECTORWISE(new DbVersion4Drivers(EDatabaseTypeName.VECTORWISE, "iijdbc.jar")), //$NON-NLS-1$ EXASOL(new DbVersion4Drivers(EDatabaseTypeName.EXASOL, "jdbc14.jar")), //$NON-NLS-1$ MAXDB(new DbVersion4Drivers(EDatabaseTypeName.MAXDB, "sapdbc.jar")), //$NON-NLS-1$ INGRES(new DbVersion4Drivers(EDatabaseTypeName.INGRES, "iijdbc.jar")), //$NON-NLS-1$ HIVE(new DbVersion4Drivers(EDatabaseTypeName.HIVE, new String[] { "hive-jdbc-0.7.1.jar", "hive-metastore-0.7.1.jar", "hive-exec-0.7.1.jar", "hive-service-0.7.1.jar", "libfb303.jar", "hadoop-core-0.20.203.0.jar", "commons-logging-1.0.4.jar", "log4j-1.2.15.jar", "slf4j-api-1.6.1.jar", "slf4j-log4j12-1.6.1.jar" })), HBASE(new DbVersion4Drivers(EDatabaseTypeName.HBASE, new String[] { "hadoop-core-0.20.2-cdh3u0.jar", "hbase-0.90.1-cdh3u0.jar", "zookeeper-3.3.3-cdh3u0.jar", "commons-lang3-3.0.jar", "commons-logging-1.1.1.jar", "log4j-1.2.16.jar" })); private DbVersion4Drivers dbVersionBean; EDatabaseVersion4Drivers(DbVersion4Drivers dbVersionBean) { this.dbVersionBean = dbVersionBean; } public String getVersionDisplay() { return this.dbVersionBean.getVersionDisplayName(); } public String getVersionValue() { return this.dbVersionBean.getVersionValue(); } public Set<String> getProviderDrivers() { return this.dbVersionBean.getDrivers(); } private List<EDatabaseTypeName> getSupportDbTypes() { return this.dbVersionBean.getDbTypes(); } public boolean supportDatabase(EDatabaseTypeName dbType) { if (dbType != null) { return getSupportDbTypes().contains(dbType); } return false; } public boolean supportDatabase(String dbType) { if (dbType != null) { for (EDatabaseTypeName type : getSupportDbTypes()) { if (type.getXmlName().equalsIgnoreCase(dbType) || type.getDisplayName().equalsIgnoreCase(dbType)) { return true; } } } return false; } public static EDatabaseVersion4Drivers indexOfByVersionDisplay(String displayName) { return indexOf(displayName, true); } public static EDatabaseVersion4Drivers indexOfByVersion(String value) { return indexOf(value, false); } private static EDatabaseVersion4Drivers indexOf(String name, boolean display) { if (name != null) { for (EDatabaseVersion4Drivers version : EDatabaseVersion4Drivers.values()) { if (display) { if (name.equalsIgnoreCase(version.getVersionDisplay())) { return version; } } else { if (name.equalsIgnoreCase(version.getVersionValue())) { return version; } } } } return null; } public static List<EDatabaseVersion4Drivers> indexOfByDbType(String dbType) { List<EDatabaseVersion4Drivers> v4dList = new ArrayList<EDatabaseVersion4Drivers>(); if (dbType != null) { for (EDatabaseVersion4Drivers v4d : EDatabaseVersion4Drivers.values()) { if (v4d.supportDatabase(dbType)) { v4dList.add(v4d); } } } return v4dList; } public static String getDbVersionName(final EDatabaseTypeName dbType, final String driverName) { if (dbType != null) { return getDbVersionName(dbType.getXmlName(), driverName); } else { return getDbVersionName((String) null, driverName); } } public static String getDbVersionName(final String dbType, final String driverName) { for (EDatabaseVersion4Drivers v4d : EDatabaseVersion4Drivers.values()) { if (driverName != null && dbType != null) { if (v4d.getProviderDrivers().contains(driverName) && v4d.supportDatabase(dbType)) { return v4d.getVersionValue(); } } else if (driverName != null && dbType == null) { if (v4d.getProviderDrivers().contains(driverName)) { return v4d.getVersionValue(); } } else if (driverName == null && dbType != null) { if (v4d.supportDatabase(dbType)) { return v4d.getVersionValue(); } } } return null; } public static String getDriversStr(final String dbType, final String version) { List<String> drivers = getDrivers(dbType, version); StringBuffer sb = new StringBuffer(); for (int i = 0; i < drivers.size(); i++) { String str = drivers.get(i); if (str != null && !DatabaseConnConstants.EMPTY.equals(str.trim())) { if (i < drivers.size() - 1) { sb.append(str); sb.append(';'); } else { sb.append(str); } } } return sb.toString(); } public static List<String> getDrivers(final String dbType, final String version) { List<String> drivers = new ArrayList<String>(); for (EDatabaseVersion4Drivers v4d : EDatabaseVersion4Drivers.values()) { if (dbType != null) { if (v4d.supportDatabase(dbType)) { if (version == null || v4d.getVersionValue() == null || version.equals("")) { // add all for this db // type drivers.addAll(v4d.getProviderDrivers()); } else // check both db type and version value. if (version.equalsIgnoreCase(v4d.getVersionValue())) { drivers.addAll(v4d.getProviderDrivers()); } } } else { // only check the version value if (version != null && version.equalsIgnoreCase(v4d.getVersionValue())) { drivers.addAll(v4d.getProviderDrivers()); } } } return drivers; } public static boolean containTypeAndVersion(final String dbType, final String version) { if (version == null) { return false; } for (EDatabaseVersion4Drivers v4d : EDatabaseVersion4Drivers.values()) { if (v4d.supportDatabase(dbType)) { if (version.equalsIgnoreCase(v4d.getVersionValue())) { return true; } } } return false; } }