public static TypedReturnCode<Connection> createConnection(DBConnectionParameter parameter) { TypedReturnCode<Connection> tReturnCode = new TypedReturnCode<Connection>(false); MetadataFillFactory instance = null; instance = MetadataFillFactory.getDBInstance(); IMetadataConnection metaConnection = instance.fillUIParams(ParameterUtil.toMap(parameter)); ReturnCode rc = instance.createConnection(metaConnection); if (rc.isOk()) { Connection dbConn = instance.fillUIConnParams(metaConnection, null); DatabaseMetaData dbMetadata = null; List<String> packageFilter = ConnectionUtils.getPackageFilter(parameter); java.sql.Connection sqlConn = null; try { if (rc instanceof TypedReturnCode) { @SuppressWarnings("rawtypes") Object sqlConnObject = ((TypedReturnCode) rc).getObject(); if (sqlConnObject instanceof java.sql.Connection) { sqlConn = (java.sql.Connection) sqlConnObject; dbMetadata = org.talend.utils.sql.ConnectionUtils.getConnectionMetadata(sqlConn); } } instance.fillCatalogs(dbConn, dbMetadata, packageFilter); instance.fillSchemas(dbConn, dbMetadata, packageFilter); tReturnCode.setObject(dbConn); } catch (SQLException e) { log.error(e, e); // Need to add a dialog for report the reson of error } finally { if (sqlConn != null) { ConnectionUtils.closeConnection(sqlConn); } } } else { tReturnCode.setMessage(rc.getMessage()); tReturnCode.setOk(false); } return tReturnCode; }