From c09ca54349f8a71834d37c27f67977d28dd5e745 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 2 Aug 2018 18:13:23 +0200 Subject: [PATCH] [#7712] Add support for Catalogs in JDBCDatabase --- .../java/org/jooq/meta/jdbc/JDBCDatabase.java | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jdbc/JDBCDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/jdbc/JDBCDatabase.java index 81f1e6d0a9..b6b2e17def 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jdbc/JDBCDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jdbc/JDBCDatabase.java @@ -42,6 +42,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import org.jooq.Catalog; import org.jooq.DSLContext; import org.jooq.Field; import org.jooq.Schema; @@ -73,7 +74,8 @@ import org.jooq.meta.UDTDefinition; */ public class JDBCDatabase extends AbstractDatabase { - private List schemas; + private List catalogs; + private List schemas; @Override protected DSLContext create0() { @@ -119,18 +121,39 @@ public class JDBCDatabase extends AbstractDatabase { @Override protected List getCatalogs0() throws SQLException { List result = new ArrayList(); - result.add(new CatalogDefinition(this, "", "")); + + for (Catalog catalog : getCatalogsFromMeta()) + result.add(new CatalogDefinition(this, catalog.getName(), "")); + return result; } + private List getCatalogsFromMeta() { + if (catalogs == null) { + catalogs = new ArrayList(); + + for (Catalog catalog : create().meta().getCatalogs()) + catalogs.add(catalog); + } + + return catalogs; + } + @Override protected List getSchemata0() throws SQLException { List result = new ArrayList(); for (Schema schema : getSchemasFromMeta()) { - result.add(new SchemaDefinition(this, schema.getName(), "")); + if (schema.getCatalog() != null) { + if (getCatalog(schema.getCatalog().getName()) != null) { + result.add(new SchemaDefinition(this, schema.getName(), "", getCatalog(schema.getCatalog().getName()))); + } + } + else + result.add(new SchemaDefinition(this, schema.getName(), "")); } + return result; } @@ -139,8 +162,7 @@ public class JDBCDatabase extends AbstractDatabase { schemas = new ArrayList(); for (Schema schema : create().meta().getSchemas()) - if (getInputSchemata().contains(schema.getName())) - schemas.add(schema); + schemas.add(schema); } return schemas; @@ -175,11 +197,9 @@ public class JDBCDatabase extends AbstractDatabase { for (Schema schema : getSchemasFromMeta()) { SchemaDefinition sd = getSchema(schema.getName()); - if (sd != null) { - for (Table table : schema.getTables()) { + if (sd != null) + for (Table table : schema.getTables()) result.add(new JDBCTableDefinition(sd, table)); - } - } } return result;