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 e568cdd37f..51b4fa4f54 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java
@@ -162,7 +162,6 @@ public abstract class AbstractDatabase implements Database {
private boolean forceIntegerTypesOnZeroScaleDecimals = true;
private String[] recordVersionFields;
private String[] recordTimestampFields;
- private String[] syntheticIdentities;
private boolean embeddablePrimaryKeys = false;
private boolean embeddableUniqueKeys = false;
private boolean embeddableDomains = false;
@@ -1173,9 +1172,8 @@ public abstract class AbstractDatabase implements Database {
@Override
public String[] getRecordVersionFields() {
- if (recordVersionFields == null) {
+ if (recordVersionFields == null)
recordVersionFields = new String[0];
- }
return recordVersionFields;
}
@@ -1187,24 +1185,27 @@ public abstract class AbstractDatabase implements Database {
@Override
public String[] getRecordTimestampFields() {
- if (recordTimestampFields == null) {
+ if (recordTimestampFields == null)
recordTimestampFields = new String[0];
- }
return recordTimestampFields;
}
@Override
+ @Deprecated
public void setSyntheticPrimaryKeys(String[] syntheticPrimaryKeys) {
if (syntheticPrimaryKeys != null) {
for (String syntheticPrimaryKey : syntheticPrimaryKeys) {
- log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
- getConfiguredSyntheticPrimaryKeys().add(new SyntheticPrimaryKeyType().withKeyFields(syntheticPrimaryKey));
+ if (!StringUtils.isBlank(syntheticPrimaryKey)) {
+ log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
+ getConfiguredSyntheticPrimaryKeys().add(new SyntheticPrimaryKeyType().withKeyFields(syntheticPrimaryKey));
+ }
}
}
}
@Override
+ @Deprecated
public String[] getSyntheticPrimaryKeys() {
log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
return new String[0];
@@ -1215,29 +1216,39 @@ public abstract class AbstractDatabase implements Database {
public void setOverridePrimaryKeys(String[] overridePrimaryKeys) {
if (overridePrimaryKeys != null) {
for (String overridePrimaryKey : overridePrimaryKeys) {
- log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
- getConfiguredSyntheticPrimaryKeys().add(new SyntheticPrimaryKeyType().withKey(overridePrimaryKey));
+ if (!StringUtils.isBlank(overridePrimaryKey)) {
+ log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
+ getConfiguredSyntheticPrimaryKeys().add(new SyntheticPrimaryKeyType().withKey(overridePrimaryKey));
+ }
}
}
}
@Override
+ @Deprecated
public String[] getOverridePrimaryKeys() {
log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
return new String[0];
}
@Override
+ @Deprecated
public void setSyntheticIdentities(String[] syntheticIdentities) {
- this.syntheticIdentities = syntheticIdentities;
+ if (syntheticIdentities != null) {
+ for (String syntheticIdentity : syntheticIdentities) {
+ if (!StringUtils.isBlank(syntheticIdentity)) {
+ log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
+ getConfiguredSyntheticIdentities().add(new SyntheticIdentityType().withKeyFields(syntheticIdentity));
+ }
+ }
+ }
}
@Override
+ @Deprecated
public final String[] getSyntheticIdentities() {
- if (syntheticIdentities == null)
- syntheticIdentities = new String[0];
-
- return syntheticIdentities;
+ log.warn("DEPRECATION", "The configuration element has been deprecated in jOOQ 3.14. Use only, instead.");
+ return new String[0];
}
@Override
@@ -2588,8 +2599,12 @@ public abstract class AbstractDatabase implements Database {
return Collections.unmodifiableList(all);
}
- protected final List filterExcludeInclude(List definitions, String e, String i, List f) {
- return filterExcludeInclude(definitions, new String[] { e }, new String[] { i }, f);
+ protected final List filter(List definitions, String include) {
+ return filterExcludeInclude(definitions, null, include);
+ }
+
+ protected final List filterExcludeInclude(List definitions, String e, String i) {
+ return filterExcludeInclude(definitions, new String[] { e }, new String[] { i != null ? i : ".*" }, Collections.emptyList());
}
protected final List filterExcludeInclude(List definitions, String[] e, String[] i, List f) {
@@ -2859,8 +2874,8 @@ public abstract class AbstractDatabase implements Database {
if (key.getKey() == null)
continue keyLoop;
- for (TableDefinition table : filterExcludeInclude(getTables(), null, key.getKeyTables() != null ? key.getKeyTables() : ".*", Collections.emptyList())) {
- for (UniqueKeyDefinition uk : filterExcludeInclude(table.getUniqueKeys(), null, key.getKey(), Collections.emptyList())) {
+ for (TableDefinition table : filter(getTables(), key.getKeyTables())) {
+ for (UniqueKeyDefinition uk : filter(table.getUniqueKeys(), key.getKey())) {
log.info("Overriding primary key", "" + uk);
r.overridePrimaryKey(uk);
markUsed(key);
@@ -2876,10 +2891,10 @@ public abstract class AbstractDatabase implements Database {
if (key.getKey() != null)
continue keyLoop;
- for (TableDefinition table : filterExcludeInclude(getTables(), null, key.getKeyTables() != null ? key.getKeyTables() : ".*", Collections.emptyList())) {
+ for (TableDefinition table : filter(getTables(), key.getKeyTables())) {
String keyName = key.getName() != null ? key.getName() : "SYNTHETIC_PK_" + table.getName();
- List columns = filterExcludeInclude(table.getColumns(), null, key.getKeyFields(), Collections.emptyList());
+ List columns = filter(table.getColumns(), key.getKeyFields());
if (!columns.isEmpty()) {
markUsed(key);
@@ -2945,7 +2960,6 @@ public abstract class AbstractDatabase implements Database {
-
@Override
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java
index a808ed1fe4..6af94e59d2 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java
@@ -752,13 +752,22 @@ public interface Database extends AutoCloseable {
/**
* Columns matching these regular expressions will be considered as members
* of synthetic primary keys in generated code.
+ *
+ * @deprecated - 3.14.0 - [#10588] - Use
+ * {@link #setConfiguredSyntheticKeys(SyntheticKeysType)}
+ * instead.
*/
+ @Deprecated
void setSyntheticPrimaryKeys(String[] primaryKeys);
/**
* Columns matching these regular expressions will be considered as members
* of synthetic primary keys in generated code.
+ *
+ * @deprecated - 3.14.0 - [#10588] - Use
+ * {@link #getConfiguredSyntheticPrimaryKeys()} instead.
*/
+ @Deprecated
String[] getSyntheticPrimaryKeys();
/**
@@ -785,13 +794,22 @@ public interface Database extends AutoCloseable {
/**
* Columns matching these regular expressions will be considered as identity
* columns in generated code.
+ *
+ * @deprecated - 3.14.0 - [#10588] - Use
+ * {@link #setConfiguredSyntheticKeys(SyntheticKeysType)}
+ * instead.
*/
+ @Deprecated
void setSyntheticIdentities(String[] syntheticIdentities);
/**
* Columns matching these regular expressions will be considered as identity
* columns in generated code.
+ *
+ * @deprecated - 3.14.0 - [#10588] - Use
+ * {@link #getConfiguredSyntheticIdentities()} instead.
*/
+ @Deprecated
String[] getSyntheticIdentities();
/**
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
index 4a9c1af6a2..dcb61cc6e1 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultColumnDefinition.java
@@ -43,6 +43,7 @@ import static java.util.Collections.singletonList;
import java.util.ArrayList;
import java.util.List;
+import org.jooq.meta.jaxb.SyntheticIdentityType;
import org.jooq.tools.JooqLogger;
/**
@@ -72,15 +73,20 @@ public class DefaultColumnDefinition
((DefaultDataTypeDefinition) type).identity(this.isIdentity);
}
+ @SuppressWarnings("unused")
private static boolean isSyntheticIdentity(DefaultColumnDefinition column) {
AbstractDatabase db = (AbstractDatabase) column.getDatabase();
- String[] syntheticIdentities = db.getSyntheticIdentities();
- boolean match = !db.filterExcludeInclude(singletonList(column), null, syntheticIdentities, db.getFilters()).isEmpty();
- if (match)
- log.info("Synthetic Identity: " + column.getQualifiedName());
+ for (SyntheticIdentityType id : db.getConfiguredSyntheticIdentities()) {
+ for (TableDefinition t : db.filter(singletonList(column.getContainer()), id.getKeyTables())) {
+ for (ColumnDefinition c : db.filter(singletonList(column), id.getKeyFields())) {
+ log.info("Synthetic identity", column.getQualifiedName());
+ return true;
+ }
+ }
+ }
- return match;
+ return false;
}
@Override