public void addRemoteColumnsAndKeys()
{
List<DB_EA.Column> PKInvolvedColumns = new List<DB_EA.Column>();
//check attributes
foreach (var attributes in allLogicalClasses.Select(z => z.attributes.Where(x => x.isID)))
{
foreach (var attribute in attributes)
{
//get the corresponding transformer
var columnTransformer = this.columnTransformers.FirstOrDefault( x => attribute.Equals(x.logicalProperty));
if (columnTransformer != null)
{
PKInvolvedColumns.Add((DB_EA.Column) columnTransformer.column);
}
}
}
//add the columns for the primary key of the dependent table
foreach (var dependingTransformer in this.dependingTransformers)
{
if (dependingTransformer.table.primaryKey != null)
{
var dependingColumnTransfomers = new List<DB2ColumnTransformer>();
foreach (Column column in dependingTransformer.table.primaryKey.involvedColumns.OrderBy(x => x.position))
{
dependingColumnTransfomers.Add( new DB2ColumnTransformer(this._table, column, dependingTransformer,_nameTranslator));
}
this._columnTransformers.AddRange(dependingColumnTransfomers);
List<Column> FKInvolvedColumns = new List<Column>();
foreach (var columnTransformer in dependingColumnTransfomers)
{
//get the FK column
var FKInvolvedColumn = columnTransformer.getFKInvolvedColumn();
if (FKInvolvedColumn != null) FKInvolvedColumns.Add(FKInvolvedColumn);
//get the PK column
var PKInvolvedColumn = columnTransformer.getPKInvolvedColumn();
if (PKInvolvedColumn != null) PKInvolvedColumns.Add(PKInvolvedColumn);
}
if (FKInvolvedColumns.Count > 0 )
{
this._foreignKeyTransformers.Add(new DB2ForeignKeyTransformer(this._table,FKInvolvedColumns,dependingTransformer,_nameTranslator));
}
}
}
//create primaryKey
if (PKInvolvedColumns.Count > 0)
{
this._primaryKeyTransformer = new DB2PrimaryKeyTransformer(_table, PKInvolvedColumns,_nameTranslator);
}
}