use of net.sourceforge.sqlexplorer.dbproduct.AliasManager 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