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 612248b02f..08d8a0130b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java @@ -93,6 +93,7 @@ public abstract class AbstractDatabase implements Database { private List inputSchemata; private List schemata; private List sequences; + private List identities; private List tables; private List enums; private List udts; @@ -102,6 +103,7 @@ public abstract class AbstractDatabase implements Database { private Relations relations; private transient Map> sequencesBySchema; + private transient Map> identitiesBySchema; private transient Map> tablesBySchema; private transient Map> enumsBySchema; private transient Map> udtsBySchema; @@ -351,6 +353,29 @@ public abstract class AbstractDatabase implements Database { return filterSchema(sequences, schema, sequencesBySchema); } + @Override + public final List getIdentities(SchemaDefinition schema) { + if (identities == null) { + identities = new ArrayList(); + + for (SchemaDefinition s : getSchemata()) { + for (TableDefinition table : getTables(s)) { + IdentityDefinition identity = table.getIdentity(); + + if (identity != null) { + identities.add(identity); + } + } + } + } + + if (identitiesBySchema == null) { + identitiesBySchema = new LinkedHashMap>(); + } + + return filterSchema(identities, schema, identitiesBySchema); + } + @Override public final List getTables(SchemaDefinition schema) { if (tables == null) { diff --git a/jOOQ-meta/src/main/java/org/jooq/util/Database.java b/jOOQ-meta/src/main/java/org/jooq/util/Database.java index a88471b63e..839781fe85 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/Database.java @@ -73,6 +73,11 @@ public interface Database { */ List getSequences(SchemaDefinition schema); + /** + * The identities contained in this database + */ + List getIdentities(SchemaDefinition schema); + /** * The tables contained in this database */