use of net.sourceforge.sqlexplorer.dbstructure.nodes.SchemaNode in project tdq-studio-se by Talend.
the class SqlexplorerService method findSqlExplorerTableNode.
/*
* (non-Javadoc)
*
* @see
* org.talend.dataprofiler.service.ISqlexplorerService#findSqlExplorerTableNode(org.talend.core.model.metadata.builder
* .connection.Connection, orgomg.cwm.objectmodel.core.Package, java.lang.String, java.lang.String)
*/
@Override
public void findSqlExplorerTableNode(Connection providerConnection, Package parentPackageElement, String tableName, String activeTabName) {
// Open data explore perspective.
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
ITDQRepositoryService service = (ITDQRepositoryService) GlobalServiceRegister.getDefault().getService(ITDQRepositoryService.class);
if (service != null) {
service.changePerspectiveAction(SQLExplorerPluginPerspective.class.getName());
} else {
return;
}
}
Collection<Alias> aliases = SQLExplorerPlugin.getDefault().getAliasManager().getAliases();
String url = JavaSqlFactory.getURL(providerConnection);
User currentUser = null;
for (Alias alias : aliases) {
if (alias.getUrl().equals(url)) {
currentUser = alias.getDefaultUser();
OpenPasswordConnectDialogAction openDlgAction = new OpenPasswordConnectDialogAction(alias, alias.getDefaultUser(), false);
openDlgAction.run();
break;
}
}
// MOD qiongli bug 13093,2010-7-2,show the warning dialog when the table can't be found
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
if (currentUser == null) {
// $NON-NLS-1$
MessageDialog.openWarning(// $NON-NLS-1$
shell, // $NON-NLS-1$
Messages.getString("SqlExplorerBridge.Warning"), // $NON-NLS-1$
Messages.getString("SqlExplorerBridge.MissTable") + tableName);
return;
}
DatabaseNode root = currentUser.getMetaDataSession().getRoot();
root.load();
List<INode> catalogs = root.getCatalogs();
List<INode> schemas = root.getSchemas();
Catalog catalog = SwitchHelpers.CATALOG_SWITCH.doSwitch(parentPackageElement);
Schema schema = SwitchHelpers.SCHEMA_SWITCH.doSwitch(parentPackageElement);
INode catalogOrSchemaNode = null;
// TDQ-12005: fix Exasol/hive(TDQ-11887: hdp20 at least) database can view index/keys well
String findCatalogNodeName = isExasol(url) ? "EXA_DB" : (isHive(url) ? "NoCatalog" : "");
if (!findCatalogNodeName.equals("") && !catalogs.isEmpty()) {
for (INode catalogNode : catalogs) {
if (findCatalogNodeName.equalsIgnoreCase(catalogNode.getName())) {
catalogOrSchemaNode = catalogNode;
break;
}
}
} else {
if (catalog != null) {
// MOD klliu bug 14662 2010-08-05
if (!catalogs.isEmpty()) {
for (INode catalogNode : catalogs) {
if (parentPackageElement.getName().equalsIgnoreCase(catalogNode.getName())) {
catalogOrSchemaNode = catalogNode;
break;
}
}
} else {
catalogOrSchemaNode = root;
}
} else {
// MOD by zshen for 20517
if (schemas.isEmpty()) {
// the case for mssql/postgrel(which have catalog and schema structor) schema analysis.
Catalog shcmeaOfCatalogNode = CatalogHelper.getParentCatalog(parentPackageElement);
for (INode catalogNode : catalogs) {
if (shcmeaOfCatalogNode != null && shcmeaOfCatalogNode.getName().equalsIgnoreCase(catalogNode.getName())) {
catalogOrSchemaNode = catalogNode;
break;
}
}
}
for (INode schemaNode : schemas) {
if (parentPackageElement.getName().equalsIgnoreCase(schemaNode.getName())) {
catalogOrSchemaNode = schemaNode;
break;
}
}
}
}
// find the table folder node.
if (catalogOrSchemaNode == null) {
// $NON-NLS-1$
throw new NullPointerException(Messages.getString("SqlExplorerBridge.CATORSCHMISNULL"));
}
// catalog node.
if (schema != null) {
if (catalogOrSchemaNode.getSchemaName() == null) {
catalogOrSchemaNode.setSchemaName(schema.getName());
} else if (!StringUtils.equals(catalogOrSchemaNode.getSchemaName(), schema.getName())) {
// if this catalog already loaded its children of some schema, should reload for this schema.
if (catalogOrSchemaNode.isChildrenLoaded()) {
SQLExplorerPlugin.getDefault().getDatabaseStructureView().refreshSessionTrees(currentUser.getMetaDataSession());
List<INode> catalogs2 = currentUser.getMetaDataSession().getRoot().getCatalogs();
if (catalogs2.size() != 0) {
for (INode catalogNode : catalogs2) {
if (catalogOrSchemaNode.getName().equalsIgnoreCase(catalogNode.getName())) {
catalogOrSchemaNode = catalogNode;
catalogOrSchemaNode.setSchemaName(schema.getName());
break;
}
}
}
}
}
}
// ~
INode[] childNodes = catalogOrSchemaNode.getChildNodes();
// need to find the schema and load the table nodes
if (isNetezza(url)) {
SchemaNode sNode = getNetezzaSchema(childNodes, JavaSqlFactory.getUsername(providerConnection));
if (sNode != null) {
childNodes = sNode.getChildNodes();
}
}
TableFolderNode tableFolderNode = null;
for (INode node : childNodes) {
if ("TABLE".equals(node.getQualifiedName())) {
// $NON-NLS-1$
tableFolderNode = (TableFolderNode) node;
break;
}
}
if (tableFolderNode == null) {
// $NON-NLS-1$
log.fatal(Messages.getString("SqlExplorerBridge.TABLE_FOLDER_NULL0"));
} else {
INode[] tableNodes = tableFolderNode.getChildNodes();
for (INode node : tableNodes) {
if (tableName.equalsIgnoreCase(node.getName())) {
DetailTabManager.setActiveTabName(activeTabName);
DatabaseStructureView dsView = SQLExplorerPlugin.getDefault().getDatabaseStructureView();
dsView.setSessionSelectionNode(currentUser.getMetaDataSession(), new StructuredSelection(node));
// MOD qiongli bug 13093,2010-7-2
SQLExplorerPlugin.getDefault().getConnectionsView().getTreeViewer().setSelection(new StructuredSelection(currentUser));
return;
}
}
}
// $NON-NLS-1$
MessageDialog.openWarning(// $NON-NLS-1$
shell, // $NON-NLS-1$
Messages.getString("SqlExplorerBridge.Warning"), // $NON-NLS-1$
Messages.getString("SqlExplorerBridge.MissTable") + tableName);
}
use of net.sourceforge.sqlexplorer.dbstructure.nodes.SchemaNode in project tdq-studio-se by Talend.
the class Dictionary method load.
/**
* Perform full load of dictionary for dbNode
*
* @param dbNode DatabaseNode of which to load dictionary information
* @param monitor ProgressMonitor displayed whilst loading
* @throws InterruptedException If user cancelled loading
*/
public void load(DatabaseNode dbNode, IProgressMonitor monitor) throws InterruptedException {
try {
// check for cancellation by user
if (monitor.isCanceled()) {
throw new InterruptedException(Messages.getString("Progress.Dictionary.Cancelled"));
}
INode[] children = dbNode.getChildNodes();
if (children == null) {
return;
}
// start task with a 1000 work units for every root node
monitor.beginTask(dbNode.getSession().toString(), children.length * ROOT_WORK_UNIT);
for (int i = 0; i < children.length; i++) {
// check for cancellation by user
if (monitor.isCanceled()) {
throw new InterruptedException(Messages.getString("Progress.Dictionary.Cancelled"));
}
INode node = (INode) children[i];
if (node instanceof SchemaNode || node instanceof CatalogNode) {
loadSchemaCatalog(node, monitor);
}
}
// store dictionary immediately so that
// we can resuse it if a second session is opened
store();
} finally {
monitor.done();
}
}
Aggregations