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);
}
}
}
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;
}
}
}
Aggregations