// linked list
if ( accessibleTableColumns.getHead() == accessibleTableColumns.getTail() ) {
proceed = false;
}
Column c = new Column();
// --------------------------
// Column Name
// --------------------------
c.setName(columnDefinition.mColumnName);
t.addColumn(c);
// --------------------------
// Column Type
// --------------------------
setupColumnType(pRepository, columnDefinition, c);
// --------------------------
// Primary Key
// --------------------------
if ( accessibleTableColumns.getPrimaryKeys().contains(c.getName()) || c.getName()
.equals(accessibleTableColumns.getMultiColumnName()) ) {
c.setPrimaryKey(true);
}
// --------------------------
// Null/NotNull
// --------------------------
if ( columnDefinition.mIsRequired || accessibleTableColumns.getPrimaryKeys()
.contains(columnDefinition.mColumnName) ) {
c.setRequired(true);
} else {
c.setRequired(false);
}
// --------------------------
// Unique Index
// DDLUtils doesn't yet to UNIQUE constraints.. Hmph
// --------------------------
if ( columnDefinition.mIsUnique ) {
UniqueIndex uniqueIndex = new UniqueIndex();
uniqueIndex.setName("uidx_" + t.getName() + "_" + c.getName());
uniqueIndex.addColumn(new IndexColumn(c));
t.addIndex(uniqueIndex);
}
// --------------------------
// References Constraint
// --------------------------
if ( columnDefinition.mReferenced != null && !columns.mVersioned ) {
ForeignKey foreignKey = new ForeignKey();
Reference reference = new Reference();
String referencedTableName = columnDefinition.mReferenced.substring(
0, columnDefinition.mReferenced.indexOf("(")
);
String referencedColumnName = columnDefinition.mReferenced.substring(
columnDefinition.mReferenced.indexOf("(") + 1,
columnDefinition.mReferenced.indexOf(")")
);
org.apache.ddlutils.model.Table referencedTable = pDb.findTable(referencedTableName);
String fkName = (t.getName()
+ c.getName()
+ "FK"
+ referencedTableName
+ referencedColumnName);
foreignKey.setName(fkName);
if ( referencedTable != null ) {
Column referencedColumn = referencedTable.findColumn(referencedColumnName);
if ( referencedTable.getName().equals(t.getName())
&& pRepository.isLoggingDebug()
&& referencedColumn.getName().equals(c.getName()) ) {
if ( pRepository.isLoggingDebug() ) {
pRepository.logDebug(
"Skipping foreign key constraint, table and column are the same. Table.Column="
+ referencedTableName
+ "."