Search in sources :

Example 1 with ConnectionInfoTab

use of net.sourceforge.sqlexplorer.dbdetail.tab.ConnectionInfoTab in project tdq-studio-se by Talend.

the class DetailTabManager method createTabs.

/**
 * Returns a list of all available tabs for a given node. These tabs can be
 * standard or plugin tabs.
 *
 * @param node for which to find tabs.
 * @return List of tabs
 */
private static List<IDetailTab> createTabs(INode node) {
    if (_logger.isDebugEnabled()) {
        // $NON-NLS-1$
        _logger.debug("Creating tabs for: " + node.getUniqueIdentifier());
    }
    ArrayList<IDetailTab> tabList = new ArrayList<IDetailTab>();
    // create connection info tab if needed
    if (node instanceof DatabaseNode) {
        IDetailTab dbTab = new ConnectionInfoTab();
        dbTab.setNode(node);
        tabList.add(dbTab);
    }
    // create our basic table tabs
    if (node instanceof TableNode) {
        IDetailTab tab1 = new ColumnInfoTab();
        IDetailTab tab2 = new TableInfoTab();
        IDetailTab tab3 = new PreviewTab();
        IDetailTab tab4 = new RowCountTab();
        IDetailTab tab5 = new PrimaryKeysTab();
        IDetailTab tab6 = new ExportedKeysTab();
        IDetailTab tab7 = new ImportedKeysTab();
        IDetailTab tab8 = new IndexesTab();
        IDetailTab tab9 = new PriviligesTab();
        IDetailTab tab10 = new ColumnPriviligesTab();
        IDetailTab tab11 = new RowIdsTab();
        IDetailTab tab12 = new VersionsTab();
        tab1.setNode(node);
        tab2.setNode(node);
        tab3.setNode(node);
        tab4.setNode(node);
        tab5.setNode(node);
        tab6.setNode(node);
        tab7.setNode(node);
        tab8.setNode(node);
        tab9.setNode(node);
        tab10.setNode(node);
        tab11.setNode(node);
        tab12.setNode(node);
        tabList.add(tab1);
        tabList.add(tab2);
        tabList.add(tab3);
        tabList.add(tab4);
        tabList.add(tab5);
        tabList.add(tab6);
        tabList.add(tab7);
        tabList.add(tab8);
        tabList.add(tab9);
        tabList.add(tab10);
        tabList.add(tab11);
        tabList.add(tab12);
    }
    // create extension point tabs
    String databaseProductName = node.getSession().getRoot().getDatabaseProductName().toLowerCase().trim();
    String nodeType = node.getType().toLowerCase().trim();
    IExtensionRegistry registry = Platform.getExtensionRegistry();
    // $NON-NLS-1$ $NON-NLS-2$
    IExtensionPoint point = registry.getExtensionPoint("net.sourceforge.sqlexplorer", "nodeDetailTab");
    IExtension[] extensions = point.getExtensions();
    for (int i = 0; i < extensions.length; i++) {
        IExtension e = extensions[i];
        IConfigurationElement[] ces = e.getConfigurationElements();
        for (int j = 0; j < ces.length; j++) {
            try {
                boolean isValidProduct = false;
                boolean isValidNodeType = false;
                // $NON-NLS-1$ $NON-NLS-2$
                String[] validProducts = ces[j].getAttribute("database-product-name").split(",");
                // $NON-NLS-1$ $NON-NLS-2$
                String[] validNodeTypes = ces[j].getAttribute("node-type").split(",");
                // check if tab is valid for current database product
                for (int k = 0; k < validProducts.length; k++) {
                    String product = validProducts[k].toLowerCase().trim();
                    if (product.length() == 0) {
                        continue;
                    }
                    if (product.equals("*")) {
                        // $NON-NLS-1$
                        isValidProduct = true;
                        break;
                    }
                    // $NON-NLS-1$ $NON-NLS-2$
                    String regex = TextUtil.replaceChar(product, '*', ".*");
                    if (databaseProductName.matches(regex)) {
                        isValidProduct = true;
                        break;
                    }
                }
                if (!isValidProduct) {
                    continue;
                }
                // check if tab is valid for current node type
                for (int k = 0; k < validNodeTypes.length; k++) {
                    String type = validNodeTypes[k].toLowerCase().trim();
                    if (type.length() == 0) {
                        continue;
                    }
                    if (type.equals("*")) {
                        // $NON-NLS-1$
                        isValidNodeType = true;
                        break;
                    }
                    // $NON-NLS-1$ $NON-NLS-2$
                    String regex = TextUtil.replaceChar(type, '*', ".*");
                    if (nodeType.matches(regex)) {
                        isValidNodeType = true;
                        break;
                    }
                }
                if (!isValidNodeType) {
                    continue;
                }
                // add tab to list
                // $NON-NLS-1$
                IDetailTab tab = (IDetailTab) ces[j].createExecutableExtension("class");
                tab.setNode(node);
                tabList.add(tab);
            } catch (Throwable ex) {
                SQLExplorerPlugin.error(Messages.getString("DataSetTableActionGroup.cannotCreateMenuAction"), ex);
            }
        }
    }
    return tabList;
}
Also used : ArrayList(java.util.ArrayList) TableInfoTab(net.sourceforge.sqlexplorer.dbdetail.tab.TableInfoTab) RowIdsTab(net.sourceforge.sqlexplorer.dbdetail.tab.RowIdsTab) ColumnPriviligesTab(net.sourceforge.sqlexplorer.dbdetail.tab.ColumnPriviligesTab) PriviligesTab(net.sourceforge.sqlexplorer.dbdetail.tab.PriviligesTab) VersionsTab(net.sourceforge.sqlexplorer.dbdetail.tab.VersionsTab) DatabaseNode(net.sourceforge.sqlexplorer.dbstructure.nodes.DatabaseNode) IExtension(org.eclipse.core.runtime.IExtension) PreviewTab(net.sourceforge.sqlexplorer.dbdetail.tab.PreviewTab) ColumnInfoTab(net.sourceforge.sqlexplorer.dbdetail.tab.ColumnInfoTab) IExtensionRegistry(org.eclipse.core.runtime.IExtensionRegistry) ColumnPriviligesTab(net.sourceforge.sqlexplorer.dbdetail.tab.ColumnPriviligesTab) ImportedKeysTab(net.sourceforge.sqlexplorer.dbdetail.tab.ImportedKeysTab) IConfigurationElement(org.eclipse.core.runtime.IConfigurationElement) ConnectionInfoTab(net.sourceforge.sqlexplorer.dbdetail.tab.ConnectionInfoTab) IExtensionPoint(org.eclipse.core.runtime.IExtensionPoint) IExtensionPoint(org.eclipse.core.runtime.IExtensionPoint) PrimaryKeysTab(net.sourceforge.sqlexplorer.dbdetail.tab.PrimaryKeysTab) RowCountTab(net.sourceforge.sqlexplorer.dbdetail.tab.RowCountTab) TableNode(net.sourceforge.sqlexplorer.dbstructure.nodes.TableNode) IndexesTab(net.sourceforge.sqlexplorer.dbdetail.tab.IndexesTab) ExportedKeysTab(net.sourceforge.sqlexplorer.dbdetail.tab.ExportedKeysTab)

Aggregations

ArrayList (java.util.ArrayList)1 ColumnInfoTab (net.sourceforge.sqlexplorer.dbdetail.tab.ColumnInfoTab)1 ColumnPriviligesTab (net.sourceforge.sqlexplorer.dbdetail.tab.ColumnPriviligesTab)1 ConnectionInfoTab (net.sourceforge.sqlexplorer.dbdetail.tab.ConnectionInfoTab)1 ExportedKeysTab (net.sourceforge.sqlexplorer.dbdetail.tab.ExportedKeysTab)1 ImportedKeysTab (net.sourceforge.sqlexplorer.dbdetail.tab.ImportedKeysTab)1 IndexesTab (net.sourceforge.sqlexplorer.dbdetail.tab.IndexesTab)1 PreviewTab (net.sourceforge.sqlexplorer.dbdetail.tab.PreviewTab)1 PrimaryKeysTab (net.sourceforge.sqlexplorer.dbdetail.tab.PrimaryKeysTab)1 PriviligesTab (net.sourceforge.sqlexplorer.dbdetail.tab.PriviligesTab)1 RowCountTab (net.sourceforge.sqlexplorer.dbdetail.tab.RowCountTab)1 RowIdsTab (net.sourceforge.sqlexplorer.dbdetail.tab.RowIdsTab)1 TableInfoTab (net.sourceforge.sqlexplorer.dbdetail.tab.TableInfoTab)1 VersionsTab (net.sourceforge.sqlexplorer.dbdetail.tab.VersionsTab)1 DatabaseNode (net.sourceforge.sqlexplorer.dbstructure.nodes.DatabaseNode)1 TableNode (net.sourceforge.sqlexplorer.dbstructure.nodes.TableNode)1 IConfigurationElement (org.eclipse.core.runtime.IConfigurationElement)1 IExtension (org.eclipse.core.runtime.IExtension)1 IExtensionPoint (org.eclipse.core.runtime.IExtensionPoint)1 IExtensionRegistry (org.eclipse.core.runtime.IExtensionRegistry)1