[#4918] Add Key.constraint() and improve Key.toString() accordingly
This commit is contained in:
parent
1c069c7d5e
commit
1cbbc23923
@ -74,4 +74,9 @@ public interface Key<R extends Record> extends Serializable {
|
||||
* @see #getFields()
|
||||
*/
|
||||
TableField<R, ?>[] getFieldsArray();
|
||||
|
||||
/**
|
||||
* Get this <code>KEY</code> as a formal {@link Constraint} specification.
|
||||
*/
|
||||
Constraint constraint();
|
||||
}
|
||||
|
||||
@ -132,4 +132,9 @@ abstract class AbstractKey<R extends Record> implements Key<R> {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return constraint().toString();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<R extends Record, O extends Record> extends AbstractKey<R> 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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<R extends Record> extends AbstractKey<R> 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());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user