Addition to fix for #139 - DDL constraint generation when table with schema

This commit is contained in:
Rob Bygrave
2014-06-13 02:38:14 +12:00
parent b446f00cd8
commit 974284bf8a
2 changed files with 20 additions and 28 deletions
@@ -253,16 +253,12 @@ public class DbDdlSyntax {
/**
* Builds and returns a fully index name.
*/
public String getIndexName(String qualifiedTableName, String propName, int ixCount) {
public String getIndexName(String table, String propName, int ixCount) {
TableName tableName = new TableName(qualifiedTableName);
StringBuilder buffer = new StringBuilder();
tableName.appendCatalogAndSchema(buffer);
buffer.append("ix_");
buffer.append(tableName.getName());
buffer.append("_");
buffer.append(propName);
StringBuilder buffer = new StringBuilder(30);
buffer.append("ix_").append(TableName.parse(table));
buffer.append("_").append(propName);
addSuffix(buffer, ixCount);
@@ -272,16 +268,11 @@ public class DbDdlSyntax {
/**
* Builds and returns a fully qualified foreign key constraint name.
*/
public String getForeignKeyName(String qualifiedTableName, String propName, int fkCount) {
public String getForeignKeyName(String table, String propName, int fkCount) {
TableName tableName = new TableName(qualifiedTableName);
StringBuilder buffer = new StringBuilder();
tableName.appendCatalogAndSchema(buffer);
buffer.append("fk_");
buffer.append(tableName.getName());
buffer.append("_");
buffer.append(propName);
StringBuilder buffer = new StringBuilder(30);
buffer.append("fk_").append(TableName.parse(table));
buffer.append("_").append(propName);
addSuffix(buffer, fkCount);
@@ -292,8 +283,8 @@ public class DbDdlSyntax {
* Adds the suffix.
*/
protected void addSuffix(StringBuilder buffer, int count) {
final String suffixNr = Integer.toString(count);
final int suffixLen = suffixNr.length() + 1;
String suffixNr = Integer.toString(count);
int suffixLen = suffixNr.length() + 1;
if (buffer.length() + suffixLen > maxConstraintNameLength) {
buffer.setLength(maxConstraintNameLength - suffixLen);
@@ -40,7 +40,7 @@ public class CreateTableVisitor extends AbstractBeanVisitor {
private ArrayList<String> uniqueConstraints = new ArrayList<String>();
private TableName tableName;
private String table;
public Set<String> getWroteColumns() {
return wroteColumns;
@@ -70,7 +70,8 @@ public class CreateTableVisitor extends AbstractBeanVisitor {
*/
protected void writeTableName(BeanDescriptor<?> descriptor) {
tableName = new TableName(descriptor.getBaseTable());
// parse to remove any catalog or schema prefix on the table
table = TableName.parse(descriptor.getBaseTable());
ctx.write(descriptor.getBaseTable());
}
@@ -109,7 +110,7 @@ public class CreateTableVisitor extends AbstractBeanVisitor {
}
protected String getConstraintName(String prefix, BeanProperty p) {
return prefix + tableName.getName() + "_" + p.getDbColumn();
return prefix + table + "_" + p.getDbColumn();
}
protected void addUniqueConstraint(String constraintExpression) {
@@ -192,7 +193,7 @@ public class CreateTableVisitor extends AbstractBeanVisitor {
} else {
// Add the primay key constraint
String pkName = ddl.getPrimaryKeyName(tableName.getName());
String pkName = ddl.getPrimaryKeyName(table);
ctx.write(" constraint ").write(pkName).write(" primary key (");
VisitorUtil.visit(idProp, new AbstractPropertyVisitor() {
@@ -225,10 +226,10 @@ public class CreateTableVisitor extends AbstractBeanVisitor {
private String createUniqueConstraint(String table, int idx, CompoundUniqueContraint uc) {
String uqConstraintName = "uq_"+TableName.parse(table)+"_"+(idx + 1);
StringBuilder sb = new StringBuilder();
sb.append("constraint ").append(uqConstraintName).append(" unique (");
StringBuilder sb = new StringBuilder(50);
sb.append("constraint ")
.append("uq_").append(TableName.parse(table)).append("_").append(idx + 1)
.append(" unique (");
String[] columns = uc.getColumns();