diff --git a/jOOQ/src/main/java/org/jooq/Key.java b/jOOQ/src/main/java/org/jooq/Key.java index 7832b936c1..c99d1543f1 100644 --- a/jOOQ/src/main/java/org/jooq/Key.java +++ b/jOOQ/src/main/java/org/jooq/Key.java @@ -74,4 +74,9 @@ public interface Key extends Serializable { * @see #getFields() */ TableField[] getFieldsArray(); + + /** + * Get this KEY as a formal {@link Constraint} specification. + */ + Constraint constraint(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java b/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java index d548a3b6e5..fe093272ed 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java @@ -132,4 +132,9 @@ abstract class AbstractKey implements Key { return false; return true; } + + @Override + public String toString() { + return constraint().toString(); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java index a4f58c8730..203798c516 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java @@ -50,6 +50,7 @@ import java.util.Collection; import java.util.List; import org.jooq.AttachableInternal; +import org.jooq.Constraint; import org.jooq.DSLContext; import org.jooq.Field; import org.jooq.ForeignKey; @@ -215,36 +216,10 @@ class ReferenceImpl extends AbstractKey i } } - // ------------------------------------------------------------------------- - // XXX: Object API - // ------------------------------------------------------------------------- - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("FOREIGN KEY ("); - - String s1 = ""; - for (Field field : getFields()) { - sb.append(s1); - sb.append(DSL.name(field.getName())); - - s1 = ", "; - } - - sb.append(") REFERENCES "); - sb.append(key.getTable()); - sb.append("("); - - String s2 = ""; - for (Field field : key.getFields()) { - sb.append(s2); - sb.append(DSL.name(field.getName())); - - s2 = ", "; - } - - sb.append(")"); - return sb.toString(); + public Constraint constraint() { + return DSL.constraint(getName()) + .foreignKey(getFieldsArray()) + .references(key.getTable(), key.getFieldsArray()); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java b/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java index f4ca5de482..c629ea2ec3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java @@ -44,7 +44,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.jooq.Field; +import org.jooq.Constraint; import org.jooq.ForeignKey; import org.jooq.Record; import org.jooq.Table; @@ -89,24 +89,11 @@ class UniqueKeyImpl extends AbstractKey implements UniqueKe return Collections.unmodifiableList(references); } - // ------------------------------------------------------------------------- - // XXX: Object API - // ------------------------------------------------------------------------- - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("UNIQUE KEY ("); - - String s1 = ""; - for (Field field : getFields()) { - sb.append(s1); - sb.append(field); - - s1 = ", "; - } - - sb.append(")"); - return sb.toString(); + public Constraint constraint() { + if (isPrimary()) + return DSL.constraint(getName()).primaryKey(getFieldsArray()); + else + return DSL.constraint(getName()).unique(getFieldsArray()); } }