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 289aeb69fb..64d16296ec 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java @@ -38,6 +38,7 @@ package org.jooq.codegen; import static java.lang.Boolean.TRUE; +import static java.util.Arrays.asList; import static java.util.Collections.emptySet; import java.io.File; @@ -50,6 +51,7 @@ import java.util.stream.Stream; import org.jooq.meta.CatalogDefinition; import org.jooq.meta.Database; +import org.jooq.meta.Definition; import org.jooq.meta.SchemaDefinition; import org.jooq.meta.jaxb.GeneratedAnnotationType; import org.jooq.meta.jaxb.GeneratedSerialVersionUID; @@ -104,10 +106,14 @@ abstract class AbstractGenerator implements Generator { boolean generateTables = true; boolean generateEmbeddables = true; boolean generateRecords = true; + String generateRecordsIncludes; + String generateRecordsExcludes; boolean generateRecordsImplementingRecordN = false; boolean generateEnumsAsScalaSealedTraits = false; boolean generateEnumsAsScalaEnums = true; boolean generatePojos = false; + String generatePojosIncludes; + String generatePojosExcludes; boolean generatePojosAsJavaRecordClasses = false; boolean generatePojosAsScalaCaseClasses = true; boolean generatePojosAsKotlinDataClasses = true; @@ -122,6 +128,8 @@ abstract class AbstractGenerator implements Generator { boolean generateImmutableInterfaces = false; boolean generateSerializableInterfaces = true; boolean generateDaos = false; + String generateDaosIncludes; + String generateDaosExcludes; boolean generateJooqVersionReference = true; boolean generateJPAAnnotations = false; String generateJPAVersion = ""; @@ -648,6 +656,15 @@ abstract class AbstractGenerator implements Generator { this.generateEmbeddables = generateEmbeddables; } + @Override + public boolean generateRecordsIncluded(Definition definition) { + return generateRecords() + && !database.filterExcludeInclude(asList(definition), + generateRecordsIncludes(), + generateRecordsExcludes() + ).isEmpty(); + } + @Override public boolean generateRecords() { @@ -660,6 +677,26 @@ abstract class AbstractGenerator implements Generator { this.generateRecords = generateRecords; } + @Override + public String generateRecordsIncludes() { + return generateRecordsIncludes; + } + + @Override + public void setGenerateRecordsIncludes(String generateRecordsIncludes) { + this.generateRecordsIncludes = generateRecordsIncludes; + } + + @Override + public String generateRecordsExcludes() { + return generateRecordsExcludes; + } + + @Override + public void setGenerateRecordsExcludes(String generateRecordsExcludes) { + this.generateRecordsExcludes = generateRecordsExcludes; + } + @Override public boolean generateRecordsImplementingRecordN() { return generateRecords() && generateRecordsImplementingRecordN; @@ -693,6 +730,15 @@ abstract class AbstractGenerator implements Generator { this.generateEnumsAsScalaEnums = generateEnumsAsScalaEnums; } + @Override + public boolean generatePojosIncluded(Definition definition) { + return generatePojos() + && !database.filterExcludeInclude(asList(definition), + generatePojosIncludes(), + generatePojosExcludes() + ).isEmpty(); + } + @Override public boolean generatePojos() { @@ -708,6 +754,26 @@ abstract class AbstractGenerator implements Generator { this.generatePojos = generatePojos; } + @Override + public String generatePojosIncludes() { + return generatePojosIncludes; + } + + @Override + public void setGeneratePojosIncludes(String generatePojosIncludes) { + this.generatePojosIncludes = generatePojosIncludes; + } + + @Override + public String generatePojosExcludes() { + return generatePojosExcludes; + } + + @Override + public void setGeneratePojosExcludes(String generatePojosExcludes) { + this.generatePojosExcludes = generatePojosExcludes; + } + @Override public boolean generatePojosAsJavaRecordClasses() { return generatePojosAsJavaRecordClasses; @@ -788,6 +854,15 @@ abstract class AbstractGenerator implements Generator { this.generateSerializableInterfaces = generateSerializableInterfaces; } + @Override + public boolean generateDaosIncluded(Definition definition) { + return generateDaos() + && !database.filterExcludeInclude(asList(definition), + generateDaosIncludes(), + generateDaosExcludes() + ).isEmpty(); + } + @Override public boolean generateDaos() { return generateDaos; @@ -798,6 +873,26 @@ abstract class AbstractGenerator implements Generator { this.generateDaos = generateDaos; } + @Override + public String generateDaosIncludes() { + return generateDaosIncludes; + } + + @Override + public void setGenerateDaosIncludes(String generateDaosIncludes) { + this.generateDaosIncludes = generateDaosIncludes; + } + + @Override + public String generateDaosExcludes() { + return generateDaosExcludes; + } + + @Override + public void setGenerateDaosExcludes(String generateDaosExcludes) { + this.generateDaosExcludes = generateDaosExcludes; + } + @Override public boolean generateJooqVersionReference() { return generateJooqVersionReference; diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index cbb7e0fc48..e53e57b2e6 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -810,6 +810,10 @@ public class GenerationTool { generator.setGenerateEmbeddables(g.getGenerate().isEmbeddables()); if (g.getGenerate().isRecords() != null) generator.setGenerateRecords(g.getGenerate().isRecords()); + if (g.getGenerate().getRecordsIncludes() != null) + generator.setGenerateRecordsIncludes(g.getGenerate().getRecordsIncludes()); + if (g.getGenerate().getRecordsExcludes() != null) + generator.setGenerateRecordsIncludes(g.getGenerate().getRecordsExcludes()); if (g.getGenerate().isRecordsImplementingRecordN() != null) generator.setGenerateRecordsImplementingRecordN(g.getGenerate().isRecordsImplementingRecordN()); if (g.getGenerate().isEnumsAsScalaSealedTraits() != null) @@ -818,6 +822,10 @@ public class GenerationTool { generator.setGenerateEnumsAsScalaEnums(g.getGenerate().isEnumsAsScalaEnums()); if (g.getGenerate().isPojos() != null) generator.setGeneratePojos(g.getGenerate().isPojos()); + if (g.getGenerate().getPojosIncludes() != null) + generator.setGeneratePojosIncludes(g.getGenerate().getPojosIncludes()); + if (g.getGenerate().getPojosExcludes() != null) + generator.setGeneratePojosExcludes(g.getGenerate().getPojosExcludes()); if (g.getGenerate().isPojosAsJavaRecordClasses() != null) generator.setGeneratePojosAsJavaRecordClasses(g.getGenerate().isPojosAsJavaRecordClasses()); if (g.getGenerate().isPojosAsScalaCaseClasses() != null) @@ -836,6 +844,10 @@ public class GenerationTool { generator.setGenerateSerializableInterfaces(g.getGenerate().isSerializableInterfaces()); if (g.getGenerate().isDaos() != null) generator.setGenerateDaos(g.getGenerate().isDaos()); + if (g.getGenerate().getDaosIncludes() != null) + generator.setGenerateDaosIncludes(g.getGenerate().getDaosIncludes()); + if (g.getGenerate().getDaosExcludes() != null) + generator.setGenerateDaosExcludes(g.getGenerate().getDaosExcludes()); if (g.getGenerate().isJooqVersionReference() != null) generator.setGenerateJooqVersionReference(g.getGenerate().isJooqVersionReference()); if (g.getGenerate().isJpaAnnotations() != null) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java index 5a1ea73b1c..f2d4b5065c 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java @@ -475,11 +475,41 @@ public interface Generator { */ void setGenerateEmbeddables(boolean generateEmbeddables); + /** + * Whether TableRecords should be generated in addition to tables for a + * specific {@link Definition}. + */ + boolean generateRecordsIncluded(Definition definition); + /** * Whether TableRecords should be generated in addition to tables */ boolean generateRecords(); + /** + * A regular expression matching all the object identifiers for which to + * generate records, by default, all of them. + */ + void setGenerateRecordsIncludes(String generateRecordsIncludes); + + /** + * A regular expression matching all the object identifiers for which to + * generate records, by default, all of them. + */ + String generateRecordsIncludes(); + + /** + * A regular expression matching all the object identifiers for which not to + * generate records. + */ + void setGenerateRecordsExcludes(String generateRecordsExcludes); + + /** + * A regular expression matching all the object identifiers for which not to + * generate records. + */ + String generateRecordsExcludes(); + /** * Whether TableRecords should be generated in addition to tables */ @@ -530,15 +560,45 @@ public interface Generator { void setGenerateEnumsAsScalaEnums(boolean generateEnumsAsScalaEnums); /** - * Whether POJO's should be generated in addition to records + * Whether POJOs should be generated in addition to tables for a + * specific {@link Definition}. + */ + boolean generatePojosIncluded(Definition definition); + + /** + * Whether POJOs should be generated in addition to records */ boolean generatePojos(); /** - * Whether POJO's should be generated in addition to records + * Whether POJOs should be generated in addition to records */ void setGeneratePojos(boolean generatePojos); + /** + * A regular expression matching all the object identifiers for which to + * generate POJOs, by default, all of them. + */ + String generatePojosIncludes(); + + /** + * A regular expression matching all the object identifiers for which to + * generate POJOs, by default, all of them. + */ + void setGeneratePojosIncludes(String generatePojosIncludes); + + /** + * A regular expression matching all the object identifiers for which not to + * generate POJOs. + */ + String generatePojosExcludes(); + + /** + * A regular expression matching all the object identifiers for which not to + * generate POJOs. + */ + void setGeneratePojosExcludes(String generatePojosExcludes); + /** * Whether POJOs should be generated as Java records by the * {@link JavaGenerator}. @@ -628,15 +688,45 @@ public interface Generator { void setGenerateSerializableInterfaces(boolean generateSerializableInterfaces); /** - * Whether DAO's should be generated in addition to pojos + * Whether DAOs should be generated in addition to tables for a + * specific {@link Definition}. + */ + boolean generateDaosIncluded(Definition definition); + + /** + * Whether DAOs should be generated in addition to pojos */ boolean generateDaos(); /** - * Whether DAO's should be generated in addition to pojos + * Whether DAOs should be generated in addition to pojos */ void setGenerateDaos(boolean generateDaos); + /** + * A regular expression matching all the object identifiers for which to + * generate DAOs, by default, all of them. + */ + String generateDaosIncludes(); + + /** + * A regular expression matching all the object identifiers for which to + * generate DAOs, by default, all of them. + */ + void setGenerateDaosIncludes(String generateDaosIncludes); + + /** + * A regular expression matching all the object identifiers for which not to + * generate DAOs. + */ + String generateDaosExcludes(); + + /** + * A regular expression matching all the object identifiers for which not to + * generate DAOs. + */ + void setGenerateDaosExcludes(String generateDaosExcludes); + /** * Whether generated objects should reference the runtime jOOQ version in * {@link Constants}, to help debug code generator / runtime version diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GeneratorStrategyWrapper.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GeneratorStrategyWrapper.java index d2939decc7..9b9bc2e7b7 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GeneratorStrategyWrapper.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GeneratorStrategyWrapper.java @@ -322,7 +322,7 @@ class GeneratorStrategyWrapper extends AbstractDelegatingGeneratorStrategy { return name; // [#1150] Intercept Mode.RECORD calls for tables - if (definition instanceof TableDefinition && !generator.generateRecords() && mode == Mode.RECORD) + if (definition instanceof TableDefinition && mode == Mode.RECORD && !generator.generateRecordsIncluded(definition)) return Record.class.getSimpleName(); String className; @@ -358,7 +358,7 @@ class GeneratorStrategyWrapper extends AbstractDelegatingGeneratorStrategy { public String getJavaPackageName(Definition definition, Mode mode) { // [#1150] Intercept Mode.RECORD calls for tables - if (!generator.generateRecords() && mode == Mode.RECORD && definition instanceof TableDefinition) + if (definition instanceof TableDefinition && mode == Mode.RECORD && !generator.generateRecordsIncluded(definition)) return Record.class.getPackage().getName(); return fixJavaPackageName(delegate.getJavaPackageName(definition, mode)); 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 9d612bb434..9ed0030803 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -1651,10 +1651,12 @@ public class JavaGenerator extends AbstractGenerator { for (TableDefinition table : database.getTables(schema)) { try { - if (table.isTableValuedFunction() && table.getReferencedTableOrUDT() != table) - continue; + if (generateRecordsIncluded(table)) { + if (table.isTableValuedFunction() && table.getReferencedTableOrUDT() != table) + continue; - generateRecord(table); + generateRecord(table); + } } catch (Exception e) { log.error("Error while generating table record " + table, e); @@ -5219,7 +5221,8 @@ public class JavaGenerator extends AbstractGenerator { for (TableDefinition table : database.getTables(schema)) { try { - generateDao(table); + if (generateDaosIncluded(table)) + generateDao(table); } catch (Exception e) { log.error("Error while generating table DAO " + table, e); @@ -5853,7 +5856,8 @@ public class JavaGenerator extends AbstractGenerator { for (TableDefinition table : database.getTables(schema)) { try { - generatePojo(table); + if (generatePojosIncluded(table)) + generatePojo(table); } catch (Exception e) { log.error("Error while generating table POJO " + table, e); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java index 12489e49f1..82d74815ba 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java @@ -106,6 +106,10 @@ public class Generate implements Serializable, XMLAppendable protected Boolean embeddables = true; @XmlElement(defaultValue = "true") protected Boolean records = true; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String recordsIncludes; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String recordsExcludes; @XmlElement(defaultValue = "false") protected Boolean recordsImplementingRecordN = false; @XmlElement(defaultValue = "false") @@ -114,6 +118,10 @@ public class Generate implements Serializable, XMLAppendable protected Boolean enumsAsScalaEnums = true; @XmlElement(defaultValue = "false") protected Boolean pojos = false; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String pojosIncludes; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String pojosExcludes; @XmlElement(defaultValue = "true") protected Boolean pojosEqualsAndHashCode = true; @XmlElement(defaultValue = "true") @@ -144,6 +152,10 @@ public class Generate implements Serializable, XMLAppendable protected Boolean serializableInterfaces = true; @XmlElement(defaultValue = "false") protected Boolean daos = false; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String daosIncludes; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String daosExcludes; @XmlElement(defaultValue = "true") protected Boolean jooqVersionReference = true; @XmlElement(defaultValue = "false") @@ -1177,6 +1189,74 @@ public class Generate implements Serializable, XMLAppendable this.records = value; } + /** + * All the object identifiers for which to generate records, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getRecordsIncludes() { + return recordsIncludes; + } + + /** + * All the object identifiers for which to generate records, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setRecordsIncludes(String value) { + this.recordsIncludes = value; + } + + /** + * All the object identifiers for which not to generate records. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getRecordsExcludes() { + return recordsExcludes; + } + + /** + * All the object identifiers for which not to generate records. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setRecordsExcludes(String value) { + this.recordsExcludes = value; + } + /** * Generate TableRecord classes that implement Record[N] super types * @@ -1275,6 +1355,74 @@ public class Generate implements Serializable, XMLAppendable this.pojos = value; } + /** + * All the object identifiers for which to generate POJOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getPojosIncludes() { + return pojosIncludes; + } + + /** + * All the object identifiers for which to generate POJOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setPojosIncludes(String value) { + this.pojosIncludes = value; + } + + /** + * All the object identifiers for which not to generate POJOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getPojosExcludes() { + return pojosExcludes; + } + + /** + * All the object identifiers for which not to generate POJOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setPojosExcludes(String value) { + this.pojosExcludes = value; + } + /** * Generate basic equals() and hashCode() methods in POJOs. * @@ -1595,6 +1743,74 @@ public class Generate implements Serializable, XMLAppendable this.daos = value; } + /** + * All the object identifiers for which to generate DAOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getDaosIncludes() { + return daosIncludes; + } + + /** + * All the object identifiers for which to generate DAOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setDaosIncludes(String value) { + this.daosIncludes = value; + } + + /** + * All the object identifiers for which not to generate DAOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public String getDaosExcludes() { + return daosExcludes; + } + + /** + * All the object identifiers for which not to generate DAOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public void setDaosExcludes(String value) { + this.daosExcludes = value; + } + /** * Generate references to the most up to date minor release in {@link org.jooq.Constants} to produce compilation errors if an outdated runtime library is being used. * @@ -3669,6 +3885,42 @@ public class Generate implements Serializable, XMLAppendable return this; } + /** + * All the object identifiers for which to generate records, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withRecordsIncludes(String value) { + setRecordsIncludes(value); + return this; + } + + /** + * All the object identifiers for which not to generate records. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withRecordsExcludes(String value) { + setRecordsExcludes(value); + return this; + } + /** * Generate TableRecord classes that implement Record[N] super types * @@ -3705,6 +3957,42 @@ public class Generate implements Serializable, XMLAppendable return this; } + /** + * All the object identifiers for which to generate POJOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withPojosIncludes(String value) { + setPojosIncludes(value); + return this; + } + + /** + * All the object identifiers for which not to generate POJOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withPojosExcludes(String value) { + setPojosExcludes(value); + return this; + } + /** * Generate basic equals() and hashCode() methods in POJOs. * @@ -3831,6 +4119,42 @@ public class Generate implements Serializable, XMLAppendable return this; } + /** + * All the object identifiers for which to generate DAOs, by default, all of them. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withDaosIncludes(String value) { + setDaosIncludes(value); + return this; + } + + /** + * All the object identifiers for which not to generate DAOs. + *

+ * This is a Java regular expression. Use the pipe to separate several expressions. + * Watch out for case-sensitivity. Depending on your database, this might be + * important! + *

+ * You can create case-insensitive regular expressions + * using this syntax: (?i:expr) + *

+ * Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}. + * + */ + public Generate withDaosExcludes(String value) { + setDaosExcludes(value); + return this; + } + /** * Generate references to the most up to date minor release in {@link org.jooq.Constants} to produce compilation errors if an outdated runtime library is being used. * @@ -4550,10 +4874,14 @@ public class Generate implements Serializable, XMLAppendable builder.append("tables", tables); builder.append("embeddables", embeddables); builder.append("records", records); + builder.append("recordsIncludes", recordsIncludes); + builder.append("recordsExcludes", recordsExcludes); builder.append("recordsImplementingRecordN", recordsImplementingRecordN); builder.append("enumsAsScalaSealedTraits", enumsAsScalaSealedTraits); builder.append("enumsAsScalaEnums", enumsAsScalaEnums); builder.append("pojos", pojos); + builder.append("pojosIncludes", pojosIncludes); + builder.append("pojosExcludes", pojosExcludes); builder.append("pojosEqualsAndHashCode", pojosEqualsAndHashCode); builder.append("pojosEqualsAndHashCodeIncludePrimaryKeyOnly", pojosEqualsAndHashCodeIncludePrimaryKeyOnly); builder.append("pojosEqualsAndHashCodeColumnIncludeExpression", pojosEqualsAndHashCodeColumnIncludeExpression); @@ -4568,6 +4896,8 @@ public class Generate implements Serializable, XMLAppendable builder.append("immutableInterfaces", immutableInterfaces); builder.append("serializableInterfaces", serializableInterfaces); builder.append("daos", daos); + builder.append("daosIncludes", daosIncludes); + builder.append("daosExcludes", daosExcludes); builder.append("jooqVersionReference", jooqVersionReference); builder.append("jpaAnnotations", jpaAnnotations); builder.append("jpaVersion", jpaVersion); @@ -4994,6 +5324,24 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (recordsIncludes == null) { + if (other.recordsIncludes!= null) { + return false; + } + } else { + if (!recordsIncludes.equals(other.recordsIncludes)) { + return false; + } + } + if (recordsExcludes == null) { + if (other.recordsExcludes!= null) { + return false; + } + } else { + if (!recordsExcludes.equals(other.recordsExcludes)) { + return false; + } + } if (recordsImplementingRecordN == null) { if (other.recordsImplementingRecordN!= null) { return false; @@ -5030,6 +5378,24 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (pojosIncludes == null) { + if (other.pojosIncludes!= null) { + return false; + } + } else { + if (!pojosIncludes.equals(other.pojosIncludes)) { + return false; + } + } + if (pojosExcludes == null) { + if (other.pojosExcludes!= null) { + return false; + } + } else { + if (!pojosExcludes.equals(other.pojosExcludes)) { + return false; + } + } if (pojosEqualsAndHashCode == null) { if (other.pojosEqualsAndHashCode!= null) { return false; @@ -5156,6 +5522,24 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (daosIncludes == null) { + if (other.daosIncludes!= null) { + return false; + } + } else { + if (!daosIncludes.equals(other.daosIncludes)) { + return false; + } + } + if (daosExcludes == null) { + if (other.daosExcludes!= null) { + return false; + } + } else { + if (!daosExcludes.equals(other.daosExcludes)) { + return false; + } + } if (jooqVersionReference == null) { if (other.jooqVersionReference!= null) { return false; @@ -5848,10 +6232,14 @@ public class Generate implements Serializable, XMLAppendable result = ((prime*result)+((tables == null)? 0 :tables.hashCode())); result = ((prime*result)+((embeddables == null)? 0 :embeddables.hashCode())); result = ((prime*result)+((records == null)? 0 :records.hashCode())); + result = ((prime*result)+((recordsIncludes == null)? 0 :recordsIncludes.hashCode())); + result = ((prime*result)+((recordsExcludes == null)? 0 :recordsExcludes.hashCode())); result = ((prime*result)+((recordsImplementingRecordN == null)? 0 :recordsImplementingRecordN.hashCode())); result = ((prime*result)+((enumsAsScalaSealedTraits == null)? 0 :enumsAsScalaSealedTraits.hashCode())); result = ((prime*result)+((enumsAsScalaEnums == null)? 0 :enumsAsScalaEnums.hashCode())); result = ((prime*result)+((pojos == null)? 0 :pojos.hashCode())); + result = ((prime*result)+((pojosIncludes == null)? 0 :pojosIncludes.hashCode())); + result = ((prime*result)+((pojosExcludes == null)? 0 :pojosExcludes.hashCode())); result = ((prime*result)+((pojosEqualsAndHashCode == null)? 0 :pojosEqualsAndHashCode.hashCode())); result = ((prime*result)+((pojosEqualsAndHashCodeIncludePrimaryKeyOnly == null)? 0 :pojosEqualsAndHashCodeIncludePrimaryKeyOnly.hashCode())); result = ((prime*result)+((pojosEqualsAndHashCodeColumnIncludeExpression == null)? 0 :pojosEqualsAndHashCodeColumnIncludeExpression.hashCode())); @@ -5866,6 +6254,8 @@ public class Generate implements Serializable, XMLAppendable result = ((prime*result)+((immutableInterfaces == null)? 0 :immutableInterfaces.hashCode())); result = ((prime*result)+((serializableInterfaces == null)? 0 :serializableInterfaces.hashCode())); result = ((prime*result)+((daos == null)? 0 :daos.hashCode())); + result = ((prime*result)+((daosIncludes == null)? 0 :daosIncludes.hashCode())); + result = ((prime*result)+((daosExcludes == null)? 0 :daosExcludes.hashCode())); result = ((prime*result)+((jooqVersionReference == null)? 0 :jooqVersionReference.hashCode())); result = ((prime*result)+((jpaAnnotations == null)? 0 :jpaAnnotations.hashCode())); result = ((prime*result)+((jpaVersion == null)? 0 :jpaVersion.hashCode())); diff --git a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd index 20aff6c4da..e0d3786385 100644 --- a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd +++ b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd @@ -2695,6 +2695,32 @@ jOOQ API, without adding custom data type bindings to them.]]> + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> + + + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> + + @@ -2719,6 +2745,32 @@ jOOQ API, without adding custom data type bindings to them.]]> + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> + + + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> + + @@ -2774,6 +2826,32 @@ jOOQ API, without adding custom data type bindings to them.]]> + + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> + + + + +This is a Java regular expression. Use the pipe to separate several expressions. +Watch out for case-sensitivity. Depending on your database, this might be +important! +

+You can create case-insensitive regular expressions +using this syntax: (?i:expr) +

+Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]> +