diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java index cbb94eee75..c1573ae788 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java @@ -62,7 +62,7 @@ import org.jooq.tools.JooqLogger; */ abstract class AbstractGenerator implements Generator { - private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class); + private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class); boolean generateDeprecated = true; boolean generateDeprecationOnUnknownTypes = true; @@ -162,11 +162,24 @@ abstract class AbstractGenerator implements Generator { protected boolean targetClean = true; final Language languageConfigured; Language language; + Database database; AbstractGenerator(Language language) { this.languageConfigured = this.language = language; } + @Override + public void generate(Database db) { + this.database = db; + + this.database.setIncludeRelations(generateRelations()); + this.database.setTableValuedFunctions(generateTableValuedFunctions()); + + generate0(db); + } + + protected void generate0(Database db) {} + void logDatabaseParameters(Database db) { String url = ""; try { @@ -473,8 +486,12 @@ abstract class AbstractGenerator implements Generator { public boolean generateTables() { // [#5525] When DAOs or records are generated, tables must be generated, too - // [#12992] When indexes are generated, tables must be generated. - return generateTables || generateRecords || generateDaos || generateIndexes; + return generateTables + || generateRecords + || generateDaos + + // [#12992] When indexes are generated, tables must be generated. + || generateIndexes && database.getSchemata().stream().flatMap(s -> database.getIndexes(s).stream()).anyMatch(t -> true); } @Override diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index eaa8e85529..08cd27ba6e 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -259,11 +259,6 @@ public class JavaGenerator extends AbstractGenerator { */ private final StopWatch watch = new StopWatch(); - /** - * The underlying database of this generator - */ - private Database database; - /** * The code generation date, if needed. */ @@ -390,15 +385,11 @@ public class JavaGenerator extends AbstractGenerator { } @Override - public final void generate(Database db) { + public final void generate0(Database db) { this.isoDate = DatatypeConverter.printDateTime(Calendar.getInstance(TimeZone.getTimeZone("UTC"))); this.schemaVersions = new LinkedHashMap<>(); this.catalogVersions = new LinkedHashMap<>(); - - this.database = db; this.database.addFilter(new AvoidAmbiguousClassesFilter()); - this.database.setIncludeRelations(generateRelations()); - this.database.setTableValuedFunctions(generateTableValuedFunctions()); logDatabaseParameters(db); log.info(""); diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java index 25d5a14c9f..a17ae72cb3 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/XMLGenerator.java @@ -100,7 +100,7 @@ public class XMLGenerator extends AbstractGenerator { } @Override - public void generate(Database db) { + public void generate0(Database db) { logDatabaseParameters(db); log.info(""); logGenerationRemarks(db);