From a79e8008f03071a51336ee2ec0883f39cb6639b4 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 21 Oct 2016 11:28:15 +0200 Subject: [PATCH] [#5609] Better fix --- .../java/org/jooq/util/GenerationTool.java | 6 +++ .../java/org/jooq/util/AbstractDatabase.java | 45 +++++++++++-------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java index 2df3e16237..f9e612cd88 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java @@ -312,6 +312,9 @@ public class GenerationTool { catalog.setOutputCatalogToDefault(d.isOutputCatalogToDefault()); catalogs.add(catalog); + if (!StringUtils.isBlank(catalog.getInputCatalog())) + catalogsEmpty = false; + // For convenience and backwards-compatibility, the schema configuration can be set also directly // in the element if (schemataEmpty) { @@ -320,6 +323,9 @@ public class GenerationTool { schema.setOutputSchema(trim(d.getOutputSchema())); schema.setOutputSchemaToDefault(d.isOutputSchemaToDefault()); catalog.getSchemata().add(schema); + + if (!StringUtils.isBlank(schema.getInputSchema())) + schemataEmpty = false; } else { catalog.getSchemata().addAll(schemata); diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java index da58620f00..1e7882585b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java @@ -480,25 +480,13 @@ public abstract class AbstractDatabase implements Database { inputSchemata = new ArrayList(); inputSchemataPerCatalog = new LinkedHashMap>(); - // [#1312] [#5609] Allow for ommitting inputSchema configuration. Generate all schemata instead. - if (configuredSchemata.size() == 0 || - (configuredSchemata.size() == 1 && StringUtils.isBlank(configuredSchemata.get(0).getInputSchema()))) { - try { - for (SchemaDefinition schema : getSchemata0()) { - inputSchemata.add(schema.getName()); - List list = inputSchemataPerCatalog.get(schema.getCatalog().getName()); - - if (list == null) { - list = new ArrayList(); - inputSchemataPerCatalog.put(schema.getCatalog().getName(), list); - } - - list.add(schema.getName()); - } - } - catch (Exception e) { - log.error("Could not load schemata", e); - } + // [#1312] Allow for ommitting inputSchema configuration. Generate all schemata instead. + if (configuredSchemata.size() == 1 && StringUtils.isBlank(configuredSchemata.get(0).getInputSchema())) { + initAllSchemata(); + } + else if (configuredCatalogs.size() == 1 && StringUtils.isBlank(configuredCatalogs.get(0).getInputCatalog()) + && configuredCatalogs.get(0).getSchemata().size() == 1 && StringUtils.isBlank(configuredCatalogs.get(0).getSchemata().get(0).getInputSchema())) { + initAllSchemata(); } else if (configuredCatalogs.isEmpty()) { inputSchemataPerCatalog.put("", inputSchemata); @@ -551,6 +539,25 @@ public abstract class AbstractDatabase implements Database { return inputSchemata; } + private void initAllSchemata() { + try { + for (SchemaDefinition schema : getSchemata0()) { + inputSchemata.add(schema.getName()); + List list = inputSchemataPerCatalog.get(schema.getCatalog().getName()); + + if (list == null) { + list = new ArrayList(); + inputSchemataPerCatalog.put(schema.getCatalog().getName(), list); + } + + list.add(schema.getName()); + } + } + catch (Exception e) { + log.error("Could not load schemata", e); + } + } + @Override public final List getInputSchemata(CatalogDefinition catalog) { return getInputSchemata(catalog.getInputName());