// ============================================================================ // // Copyright (C) 2006-2016 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.cwm.management.api; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.List; import org.apache.log4j.Logger; import org.talend.core.model.metadata.IMetadataConnection; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.cwm.db.connection.ConnectionUtils; import org.talend.dq.analysis.parameters.DBConnectionParameter; import org.talend.dq.helper.ParameterUtil; import org.talend.metadata.managment.model.MetadataFillFactory; import org.talend.utils.sugars.ReturnCode; import org.talend.utils.sugars.TypedReturnCode; /** * @author zshen * * @deprecated don't should use this class to test please use MetadataFillFactory.getDBInstance().fillUIConnParams() * instead of it. * */ @Deprecated public class ConnectionService { private static Logger log = Logger.getLogger(ConnectionService.class); 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; } }