From c47897b514e30b7923220a7c685cfdfbb9a68c8a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 18 Aug 2020 14:50:42 +0200 Subject: [PATCH] [jOOQ/jOOQ#2530] Allow for matching tables in config --- .../java/org/jooq/meta/AbstractDatabase.java | 5 +++ .../java/org/jooq/meta/jaxb/Embeddable.java | 38 +++++++++++++++++++ .../resources/xsd/jooq-codegen-3.14.0.xsd | 4 ++ 3 files changed, 47 insertions(+) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 6024486e10..f7d0afa934 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -1879,7 +1879,12 @@ public abstract class AbstractDatabase implements Database { Map result = new LinkedHashMap<>(); for (TableDefinition table : getTables()) { + + embeddableLoop: for (Embeddable embeddable : getConfiguredEmbeddables()) { + if (embeddable.getTables() != null && !matches(patterns.pattern(embeddable.getTables()), table)) + continue embeddableLoop; + List columns = new ArrayList<>(); List names = new ArrayList<>(); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java index 359e08e984..f50bb618be 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java @@ -37,6 +37,8 @@ public class Embeddable implements Serializable, XMLAppendable protected String name; @XmlJavaTypeAdapter(StringAdapter.class) protected String referencingName; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String tables; @XmlElement(defaultValue = "false") protected Boolean replacesFields = false; @XmlElementWrapper(name = "fields") @@ -75,6 +77,22 @@ public class Embeddable implements Serializable, XMLAppendable this.referencingName = value; } + /** + * A regular expression matching the tables to which to apply the embeddable definition. + * + */ + public String getTables() { + return tables; + } + + /** + * A regular expression matching the tables to which to apply the embeddable definition. + * + */ + public void setTables(String value) { + this.tables = value; + } + /** * Specify that the embeddable field replaces its underlying fields in code generation output, and when working with asterisks. * @@ -128,6 +146,15 @@ public class Embeddable implements Serializable, XMLAppendable return this; } + /** + * A regular expression matching the tables to which to apply the embeddable definition. + * + */ + public Embeddable withTables(String value) { + setTables(value); + return this; + } + public Embeddable withReplacesFields(Boolean value) { setReplacesFields(value); return this; @@ -158,6 +185,7 @@ public class Embeddable implements Serializable, XMLAppendable public final void appendTo(XMLBuilder builder) { builder.append("name", name); builder.append("referencingName", referencingName); + builder.append("tables", tables); builder.append("replacesFields", replacesFields); builder.append("fields", "field", fields); } @@ -199,6 +227,15 @@ public class Embeddable implements Serializable, XMLAppendable return false; } } + if (tables == null) { + if (other.tables!= null) { + return false; + } + } else { + if (!tables.equals(other.tables)) { + return false; + } + } if (replacesFields == null) { if (other.replacesFields!= null) { return false; @@ -226,6 +263,7 @@ public class Embeddable implements Serializable, XMLAppendable int result = 1; result = ((prime*result)+((name == null)? 0 :name.hashCode())); result = ((prime*result)+((referencingName == null)? 0 :referencingName.hashCode())); + result = ((prime*result)+((tables == null)? 0 :tables.hashCode())); result = ((prime*result)+((replacesFields == null)? 0 :replacesFields.hashCode())); result = ((prime*result)+((fields == null)? 0 :fields.hashCode())); return result; diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd index 817c860aee..daa12c8c07 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd @@ -1020,6 +1020,10 @@ for Oracle.]]> + + + +