public static Set<org.talend.core.model.metadata.builder.connection.MetadataTable> getTablesFromCurrentCatalogOrSchema(String dbsid, String schema, DatabaseConnection dbconn) { Set<org.talend.core.model.metadata.builder.connection.MetadataTable> allTables = new HashSet<org.talend.core.model.metadata.builder.connection.MetadataTable>(); /* context model show all tables */ if (dbconn.isContextMode()) { allTables = ConnectionHelper.getTables(dbconn); } else { boolean hasSchemaInCatalog = false; Catalog c = (Catalog) ConnectionHelper.getPackage(dbsid, dbconn, Catalog.class); Schema s = (Schema) ConnectionHelper.getPackage(schema, dbconn, Schema.class); List<Schema> subschemas = new ArrayList<Schema>(); if (c != null) { subschemas = CatalogHelper.getSchemas(c); hasSchemaInCatalog = subschemas.size() > 0; } if (c != null && s == null && !hasSchemaInCatalog) { // only catalog PackageHelper.getAllTables(c, allTables); // PackageHelper.addMetadataTable(dbtable, c); } else if (s != null && !hasSchemaInCatalog && c == null) { // only schema PackageHelper.getAllTables(s, allTables); // PackageHelper.addMetadataTable(dbtable, s); } else if (c != null && hasSchemaInCatalog) { // both schema and catalog subschemas = CatalogHelper.getSchemas(c); hasSchemaInCatalog = subschemas.size() > 0; if (subschemas.size() > 0) { for (Schema current : subschemas) { if (current.getName() == null) { /* if the current schema no name should set an empty string for name, bug 17244 */ current.setName(""); } if (current.getName().equals(schema)) { s = current; break; } } /** * if dont specifc a schema because of getUiSchema() is null,show all cataogs table by * default,or it will cause bug 0016578 */ if (s == null || "".equals(s)) { // allTables = ConnectionHelper.getTables(dbconn); PackageHelper.getAllTables(c, allTables); } else { PackageHelper.getAllTables(s, allTables); } // PackageHelper.addMetadataTable(dbtable, s); } } else { // return nothing } } return allTables; }