use of net.sourceforge.sqlexplorer.dbdetail.tab.PrimaryKeysTab 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;
}
Aggregations