// ============================================================================ // // 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.template; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import org.talend.core.database.EDatabaseTypeName; import org.talend.core.database.conn.version.EDatabaseVersion4Drivers; import org.talend.core.language.ECodeLanguage; import org.talend.core.language.LanguageManager; /** * cli class global comment. Detailled comment */ public enum EDatabaseConnTemplate { MYSQL(new DbConnStr(EDatabaseTypeName.MYSQL, // "jdbc:mysql://<host>:<port>/<sid>?<property>", //$NON-NLS-1$ "3306", //$NON-NLS-1$ "noDatetimeStringSync=true")), //$NON-NLS-1$ PSQL(new DbConnStr(EDatabaseTypeName.PSQL, // "jdbc:postgresql://<host>:<port>/<sid>", //$NON-NLS-1$ "5432")), //$NON-NLS-1$ PLUSPSQL(new DbConnStr(EDatabaseTypeName.PLUSPSQL, // "jdbc:postgresql://<host>:<port>/<sid>", //$NON-NLS-1$ "5432")), //$NON-NLS-1$ GREENPLUM(new DbConnStr(EDatabaseTypeName.GREENPLUM, // "jdbc:postgresql://<host>:<port>/<sid>", //$NON-NLS-1$ "5432")), //$NON-NLS-1$ ORACLEFORSID(new DbConnStr(EDatabaseTypeName.ORACLEFORSID, // "jdbc:oracle:thin:@<host>:<port>:<sid>", //$NON-NLS-1$ "1521")), //$NON-NLS-1$ ORACLESN( new DbConnStr( EDatabaseTypeName.ORACLESN, // "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=<host>)(port=<port>))(connect_data=(service_name=<service_name>)))", //$NON-NLS-1$ "1521")), //$NON-NLS-1$ ORACLE_RAC(new DbConnStr(EDatabaseTypeName.ORACLE_RAC, // "<host>")), //$NON-NLS-1$ ORACLE_OCI(new DbConnStr(EDatabaseTypeName.ORACLE_OCI, // "jdbc:oracle:oci8:@<service_name>")), //$NON-NLS-1$ MSSQL(new DbConnStr(EDatabaseTypeName.MSSQL, // "jdbc:jtds:sqlserver://<host>:<port>/<sid>;<property>", //$NON-NLS-1$ "1433")), //$NON-NLS-1$ MSSQL05_08(new DbConnStr(EDatabaseTypeName.MSSQL05_08, // "jdbc:sqlserver://<host>:<port>;DatabaseName=<sid>", //$NON-NLS-1$ "1433")), //$NON-NLS-1$ GODBC(new DbConnStr(EDatabaseTypeName.GODBC, // "jdbc:odbc:<datasource>")), //$NON-NLS-1$ MSODBC(new DbConnStr(EDatabaseTypeName.MSODBC, // "jdbc:odbc:<datasource>")), //$NON-NLS-1$ ACCESS(new DbConnStrForAccess(EDatabaseTypeName.ACCESS, // "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=<filename>", //$NON-NLS-1$ new EDatabaseVersion4Drivers[] { EDatabaseVersion4Drivers.ACCESS_2003, EDatabaseVersion4Drivers.ACCESS_2007 })), SYBASEASE(new DbConnStr(EDatabaseTypeName.SYBASEASE, // "jdbc:sybase:Tds:<host>:<port>/<sid>?<property>", //$NON-NLS-1$ "5001")), //$NON-NLS-1$ IBMDB2(new DbConnStr(EDatabaseTypeName.IBMDB2, // "jdbc:db2://<host>:<port>/<sid>", //$NON-NLS-1$ "50000")), //$NON-NLS-1$ IBMDB2_ZOS(new DbConnStr(EDatabaseTypeName.IBMDB2ZOS, // "jdbc:db2://<host>:<port>/<sid>", //$NON-NLS-1$ "557")), //$NON-NLS-1$ SQLITE(new DbConnStr(EDatabaseTypeName.SQLITE, // "jdbc:sqlite:/<filename>")), //$NON-NLS-1$ INGRES(new DbConnStr(EDatabaseTypeName.INGRES, // "jdbc:ingres://<host>:<port>/<sid>", //$NON-NLS-1$ "II7")), //$NON-NLS-1$ VECTORWISE(new DbConnStr(EDatabaseTypeName.VECTORWISE, // "jdbc:ingres://<host>:<port>/<sid>", //$NON-NLS-1$ "II7")), //$NON-NLS-1$ INTERBASE(new DbConnStr(EDatabaseTypeName.INTERBASE, // "jdbc:interbase://<host>/<sid>")), //$NON-NLS-1$ FIREBIRD(new DbConnStr(EDatabaseTypeName.FIREBIRD, // "jdbc:firebirdsql:<host>/<port>:<filename>", //$NON-NLS-1$ "3050")), //$NON-NLS-1$ INFORMIX(new DbConnStr(EDatabaseTypeName.INFORMIX, // "jdbc:informix-sqli://<host>:<port>/<sid>:informixserver=<datasource>;<property>")), //$NON-NLS-1$ TERADATA(new DbConnStr(EDatabaseTypeName.TERADATA, // "jdbc:teradata://<host>/<sid>,<property>")), //$NON-NLS-1$ //feature 0013719,hywang EXASOL(new DbConnStr(EDatabaseTypeName.EXASOL, // "jdbc:exa:<host>:<port>:schema=<sid>", "8563")), //$NON-NLS-1$ AS400(new DbConnStr(EDatabaseTypeName.AS400, // "jdbc:as400://<host>/<sid>;libraries=<sid>;<property>", //$NON-NLS-1$ null, // "prompt=false")), //$NON-NLS-1$ JAVADB_EMBEDED(new DbConnStr(EDatabaseTypeName.JAVADB_EMBEDED, // "jdbc:derby:<dbRootPath>")), //$NON-NLS-1$ JAVADB_JCCJDBC(new DbConnStr(EDatabaseTypeName.JAVADB_JCCJDBC, // "jdbc:derby:net://<host>:<port>/<sid>", //$NON-NLS-1$ "1527")), //$NON-NLS-1$ JAVADB_DERBYCLIENT(new DbConnStr(EDatabaseTypeName.JAVADB_DERBYCLIENT, // "jdbc:derby://<host>:<port>/<sid>", //$NON-NLS-1$ "1527")), //$NON-NLS-1$ HSQLDB_SERVER(new DbConnStr(EDatabaseTypeName.HSQLDB_SERVER, // "jdbc:hsqldb:hsql://<host>:<port>/<sid>", //$NON-NLS-1$ "9001")), //$NON-NLS-1$ HSQLDB_WEBSERVER(new DbConnStr(EDatabaseTypeName.HSQLDB_WEBSERVER, // "jdbc:hsqldb:http://<host>:<port>/<sid>", //$NON-NLS-1$ "9001")), //$NON-NLS-1$ HSQLDB_IN_PROGRESS(new DbConnStr(EDatabaseTypeName.HSQLDB_IN_PROGRESS, // "jdbc:hsqldb:file:<dbRootPath>/<sid>;<property>", //$NON-NLS-1$ null, "ifexists=true")), //$NON-NLS-1$ MAXDB(new DbConnStr(EDatabaseTypeName.MAXDB, // "jdbc:sapdb://<host>:<port>/<sid>", //$NON-NLS-1$ "7210")), //$NON-NLS-1$ SAS(new DbConnStr(EDatabaseTypeName.SAS, // "jdbc:sasiom://<host>:<port>", //$NON-NLS-1$ "8591")), //$NON-NLS-1$ PARACCEL(new DbConnStr(EDatabaseTypeName.PARACCEL, // "jdbc:paraccel://<host>:<port>/<sid>", //$NON-NLS-1$ "5439")), //$NON-NLS-1$ NETEZZA(new DbConnStr(EDatabaseTypeName.NETEZZA, // "jdbc:netezza://<host>:<port>/<sid>", //$NON-NLS-1$ "5480")), //$NON-NLS-1$ VERTICA(new DbConnStr(EDatabaseTypeName.VERTICA, // "jdbc:vertica://<host>:<port>/<sid>", //$NON-NLS-1$ "5433")), //$NON-NLS-1$ GENERAL_JDBC(new DbConnStrForGeneralJDBC(EDatabaseTypeName.GENERAL_JDBC, // "jdbc:xxx://<xxx>:<xxx>", //$NON-NLS-1$ "xxxx")), //$NON-NLS-1$ HIVE(new DbConnStr(EDatabaseTypeName.HIVE, "jdbc:hive://<host>:<port>/<sid>", //$NON-NLS-1$ "10000")), HBASE(new DbConnStr(EDatabaseTypeName.HBASE, "127.0.0.1", //$NON-NLS-1$ "2181")); private DbConnStr connStr; EDatabaseConnTemplate(DbConnStr connStr) { this.connStr = connStr; } public EDatabaseTypeName getDbType() { return this.connStr.getDbType(); } public String getDBTypeName() { if (getDbType() != null) { return getDbType().getXmlName(); } return null; } public String getDBDisplayName() { if (getDbType() != null) { return getDbType().getDisplayName(); } return null; } // public String getUrlTemplate() { // return getUrlTemplate(null); // } public String getUrlTemplate(EDatabaseVersion4Drivers version) { return this.connStr.getUrlTemplate(version); } // public String getUrlPattern() { // return getUrlPattern(null); // } public String getUrlPattern(EDatabaseVersion4Drivers version) { return this.connStr.getUrlPattern(version); } public String getDefaultPort() { return this.connStr.getDefaultPort(); } public String getAdditionProperty() { return this.connStr.getAdditionProperty(); } public boolean isMultiVersion() { return this.connStr.getDbVersions() != null && this.connStr.getDbVersions().length > 0; } public EDatabaseVersion4Drivers[] getDbVersions() { return this.connStr.getDbVersions(); } public String processStr(EDatabaseVersion4Drivers version, String str) { return this.connStr.processStr(version, str); } public static List<String> getDBTypeDisplay() { return getDBTypes(true, false, true); } // public static List<String> getAllDBTypeDisplay() { // return getDBTypes(true, false, true); // } public static List<String> getDBTypes() { return getDBTypes(true, false, false); } // public static List<String> getAllDBTypes() { // return getDBTypes(true, true, false); // } @SuppressWarnings("unchecked") private static List<String> getDBTypes(boolean sort, boolean all, boolean display) { EDatabaseConnTemplate[] values = EDatabaseConnTemplate.values(); List<String> databaseType = new ArrayList<String>(values.length); for (EDatabaseConnTemplate temp : values) { String typeName = getDBTypeName(temp, display); if (typeName != null) { databaseType.add(typeName); } } if (!all && LanguageManager.getCurrentLanguage() == ECodeLanguage.PERL) { databaseType.remove(getDBTypeName(EDatabaseConnTemplate.MSSQL, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.INGRES, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.INTERBASE, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.INFORMIX, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.FIREBIRD, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.ACCESS, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.TERADATA, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.AS400, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.JAVADB_DERBYCLIENT, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.JAVADB_EMBEDED, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.JAVADB_JCCJDBC, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.HSQLDB_IN_PROGRESS, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.HSQLDB_SERVER, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.HSQLDB_WEBSERVER, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.VERTICA, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.HIVE, display)); databaseType.remove(getDBTypeName(EDatabaseConnTemplate.HBASE, display)); } if (sort) { String[] sortedArray = databaseType.toArray(new String[0]); Arrays.sort(sortedArray, new Comparator() { public int compare(Object o1, Object o2) { if (o1 instanceof String && o2 instanceof String) { return o1.toString().compareTo(o2.toString()); } return 0; } }); return Arrays.asList(sortedArray); } return databaseType; } private static String getDBTypeName(EDatabaseConnTemplate db, boolean display) { return display ? db.getDBDisplayName() : db.getDBTypeName(); } public static EDatabaseConnTemplate indexOfTemplate(String dbType) { if (dbType != null) { for (EDatabaseConnTemplate temp : EDatabaseConnTemplate.values()) { if (temp.getDBTypeName().equals(dbType) || temp.getDBDisplayName().equals(dbType)) { return temp; } } } return null; } public static boolean isSchemaNeeded(String dbType) { EDatabaseConnTemplate template = indexOfTemplate(dbType); if (template != null) { switch (template) { case ORACLEFORSID: case ORACLESN: case ORACLE_OCI: case PSQL: case PLUSPSQL: case GREENPLUM: case PARACCEL: case IBMDB2: case IBMDB2_ZOS: case SYBASEASE: case SAS: case HBASE: return true; default: } } return false; } public static boolean isAddtionParamsNeeded(String dbType) { EDatabaseConnTemplate template = indexOfTemplate(dbType); if (template != null) { switch (template) { case MSSQL: case INFORMIX: case MYSQL: case AS400: // for feature 10655 case ORACLEFORSID: case ORACLESN: case ORACLE_OCI: case SYBASEASE: case HSQLDB_IN_PROGRESS: // for feature 11674 case TERADATA: // for feature 0013719 return true; default: } } return false; } public static boolean isDatabaseNeeded(String dbType) { EDatabaseConnTemplate template = indexOfTemplate(dbType); if (template != null) { switch (template) { case MYSQL: case SYBASEASE: case IBMDB2: case IBMDB2_ZOS: case INGRES: case INTERBASE: case MSSQL: case INFORMIX: case TERADATA: case AS400: case JAVADB_DERBYCLIENT: case JAVADB_EMBEDED: case JAVADB_JCCJDBC: case HSQLDB_WEBSERVER: case HSQLDB_SERVER: case HSQLDB_IN_PROGRESS: case MAXDB: case PSQL: case PLUSPSQL: return true; default: } } return false; } public static String getAdditionProperty(String dbType) { if (isAddtionParamsNeeded(dbType)) { EDatabaseConnTemplate template = indexOfTemplate(dbType); if (template != null) { String additionProperty = template.getAdditionProperty(); if (additionProperty != null) { return additionProperty; } } } return ""; //$NON-NLS-1$ } }