Search in sources :

Example 1 with AliasAndManaDriverHelper

use of net.sourceforge.sqlexplorer.util.AliasAndManaDriverHelper in project tdq-studio-se by Talend.

the class SqlexplorerService method loadManagedDriver.

/**
 * Load the driver by lib management system , which will configure the SQL Explorer driver classpath from xml.
 *
 * @param dbType
 * @param dbVersion
 * @param driverClassName
 * @param userName. the userName is used a special case :it MSSQL with empty userName.
 */
private void loadManagedDriver(DatabaseConnection dbConn) {
    String dbType = dbConn.getDatabaseType();
    String dbVersion = dbConn.getDbVersionString();
    String driverClassName = JavaSqlFactory.getDriverClass(dbConn);
    if (dbType == null || driverClassName == null) {
        return;
    }
    DriverManager driverManager = SQLExplorerPlugin.getDefault().getDriverModel();
    AliasAndManaDriverHelper aliasManaHelper = AliasAndManaDriverHelper.getInstance();
    String manaDriverId = aliasManaHelper.joinManagedDriverId(dbType, driverClassName, dbVersion);
    ManagedDriver manDr = driverManager.getDriver(manaDriverId);
    if (manDr != null && !manDr.isDriverClassLoaded()) {
        // "librariesIndex.xml".
        try {
            List<String> jarNames = EDatabaseVersion4Drivers.getDrivers(dbType, dbVersion);
            if (jarNames.isEmpty() && "JDBC".equals(dbType)) {
                jarNames.add(dbConn.getDriverJarPath());
            }
            LinkedList<String> driverJarRealPaths = aliasManaHelper.getDriverJarRealPaths(jarNames);
            if (!driverJarRealPaths.isEmpty()) {
                manDr.getJars().clear();
                manDr.getJars().addAll(driverJarRealPaths);
            }
            manDr.registerSQLDriver(dbConn);
        } catch (Exception e) {
            log.error(e);
        }
    }
}
Also used : ManagedDriver(net.sourceforge.sqlexplorer.dbproduct.ManagedDriver) AliasAndManaDriverHelper(net.sourceforge.sqlexplorer.util.AliasAndManaDriverHelper) DriverManager(net.sourceforge.sqlexplorer.dbproduct.DriverManager) PartInitException(org.eclipse.ui.PartInitException) MalformedURLException(java.net.MalformedURLException)

Example 2 with AliasAndManaDriverHelper

use of net.sourceforge.sqlexplorer.util.AliasAndManaDriverHelper in project tdq-studio-se by Talend.

the class SqlexplorerService method addConnetionAliasToSQLPlugin.

@Override
public void addConnetionAliasToSQLPlugin(ModelElement... dataproviders) {
    SQLExplorerPlugin sqlPlugin = SQLExplorerPlugin.getDefault();
    AliasManager aliasManager = sqlPlugin.getAliasManager();
    DriverManager driverManager = sqlPlugin.getDriverModel();
    List<String> tdqSupportDBType = MetadataConnectionUtils.getTDQSupportDBTemplate();
    // if all dataproviders are not supported on DQ side,don't save files SQLAliases.xml and
    // SQLDrivers.xml.Otherwise,save it.
    AliasAndManaDriverHelper aliasManaDriverHelper = AliasAndManaDriverHelper.getInstance();
    for (ModelElement dataProvider : dataproviders) {
        try {
            Connection connection = SwitchHelpers.CONNECTION_SWITCH.doSwitch(dataProvider);
            // MOD bug mzhao filter the other connections except database connection.
            if (connection != null && connection instanceof DatabaseConnection) {
                // TDQ-8379 do nothing if the database type isn't supproted on DQ side.
                DatabaseConnection dbConn = ((DatabaseConnection) connection);
                String databaseType = dbConn.getDatabaseType();
                if (!tdqSupportDBType.contains(databaseType)) {
                    continue;
                }
                // only new Alias when it is not in aliasManager
                Alias alias = aliasManager.getAlias(dataProvider.getName());
                String url = JavaSqlFactory.getURL(connection);
                // if the alias is not null and the url is same with the connection, this means the alias is already
                // exist; if the alias is not null but hte url is not same with the connection, this means the
                // connection has been overwrite , need to rebuild the alias
                boolean aliasExist = alias != null && StringUtils.equals(url, alias.getUrl());
                if (!aliasExist) {
                    if (alias == null) {
                        alias = new Alias(dataProvider.getName());
                    }
                    String user = JavaSqlFactory.getUsername(connection);
                    // MOD gdbu 2011-3-17 bug 19539
                    String password = JavaSqlFactory.getPassword(connection);
                    // ~19539
                    // user should not be null
                    // $NON-NLS-1$
                    user = user == null ? "" : user;
                    // password should not be null
                    // $NON-NLS-1$
                    password = password == null ? "" : password;
                    // is serialized correctly.
                    assert user != null;
                    assert password != null;
                    User previousUser = new User(user, password);
                    previousUser.setDatabaseConnection(dbConn);
                    alias.setDefaultUser(previousUser);
                    alias.setAutoLogon(false);
                    alias.setConnectAtStartup(true);
                    alias.setUrl(url);
                    ManagedDriver manDr = aliasManaDriverHelper.getManaDriverByConnection(dbConn);
                    if (manDr == null) {
                        manDr = aliasManaDriverHelper.createNewManagerDriver(dbConn);
                        driverManager.addDriver(manDr);
                    } else if (!manDr.isDriverClassLoaded()) {
                        this.loadDriverByLibManageSystem(dbConn);
                    }
                    if (manDr != null) {
                        alias.setDriver(manDr);
                    }
                }
                if (!aliasManager.contains(alias) && alias.getName() != null) {
                    aliasManager.addAlias(alias);
                }
                // MOD Qiongli TDQ-6166 just put once for every Alias
                if (sqlPlugin.getPropertyFile().get(alias) == null) {
                    sqlPlugin.getPropertyFile().put(alias, getPropertyFile(dataProvider));
                }
                aliasManager.modelChanged();
            }
        } catch (Throwable e) {
            // MOD scorreia 2010-07-24 catch all exceptions
            log.error(e, e);
            continue;
        }
    }
}
Also used : User(net.sourceforge.sqlexplorer.dbproduct.User) ManagedDriver(net.sourceforge.sqlexplorer.dbproduct.ManagedDriver) AliasAndManaDriverHelper(net.sourceforge.sqlexplorer.util.AliasAndManaDriverHelper) DatabaseConnection(org.talend.core.model.metadata.builder.connection.DatabaseConnection) IMetadataConnection(org.talend.core.model.metadata.IMetadataConnection) Connection(org.talend.core.model.metadata.builder.connection.Connection) AliasManager(net.sourceforge.sqlexplorer.dbproduct.AliasManager) ModelElement(orgomg.cwm.objectmodel.core.ModelElement) Alias(net.sourceforge.sqlexplorer.dbproduct.Alias) DatabaseConnection(org.talend.core.model.metadata.builder.connection.DatabaseConnection) DriverManager(net.sourceforge.sqlexplorer.dbproduct.DriverManager) SQLExplorerPlugin(net.sourceforge.sqlexplorer.plugin.SQLExplorerPlugin)

Aggregations

DriverManager (net.sourceforge.sqlexplorer.dbproduct.DriverManager)2 ManagedDriver (net.sourceforge.sqlexplorer.dbproduct.ManagedDriver)2 AliasAndManaDriverHelper (net.sourceforge.sqlexplorer.util.AliasAndManaDriverHelper)2 MalformedURLException (java.net.MalformedURLException)1 Alias (net.sourceforge.sqlexplorer.dbproduct.Alias)1 AliasManager (net.sourceforge.sqlexplorer.dbproduct.AliasManager)1 User (net.sourceforge.sqlexplorer.dbproduct.User)1 SQLExplorerPlugin (net.sourceforge.sqlexplorer.plugin.SQLExplorerPlugin)1 PartInitException (org.eclipse.ui.PartInitException)1 IMetadataConnection (org.talend.core.model.metadata.IMetadataConnection)1 Connection (org.talend.core.model.metadata.builder.connection.Connection)1 DatabaseConnection (org.talend.core.model.metadata.builder.connection.DatabaseConnection)1 ModelElement (orgomg.cwm.objectmodel.core.ModelElement)1