in rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java [235:311]
public Relationship addRelationship(Vector parentNames, Vector childNames, String relationshipName) {
//create vector for each
if(parentNames.size() != childNames.size()){
throw new RuntimeException("Can not for relationship for multiple keys, different sizes");
}
Vector parentColumns = new Vector();
Vector childColumns = new Vector();
for(int i=0; i<parentNames.size(); i++){
QualifiedColumn parent = null;
QualifiedColumn child = null;
if(this.config.isDatabaseSchemaNameSupported()){
parent = new QualifiedColumn((String)parentNames.get(i), true);
child = new QualifiedColumn((String)childNames.get(i), true);
}
else{
parent = new QualifiedColumn((String)parentNames.get(i));
child = new QualifiedColumn((String)childNames.get(i));
}
parentColumns.add(parent);
childColumns.add(child);
}
//all parent columns should be from same table and schema
//all child columns should be from same table and schema
checkTableNames(parentColumns);
checkSchemaNames(parentColumns);
checkTableNames(childColumns);
checkSchemaNames(childColumns);
Relationship r = FACTORY.createRelationship();
//JIRA-952
if(this.config.isDatabaseSchemaNameSupported()){
if(relationshipName == null)
r.setName(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
+((QualifiedColumn)childColumns.get(0)).getTableName());
else
r.setName(relationshipName);
r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getSchemaName()+"."
+((QualifiedColumn)parentColumns.get(0)).getTableName());
r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getSchemaName()+"."
+((QualifiedColumn)childColumns.get(0)).getTableName());
}
else{
if(relationshipName == null)
r.setName(((QualifiedColumn)childColumns.get(0)).getTableName());
else
r.setName(relationshipName);
r.setPrimaryKeyTable(((QualifiedColumn)parentColumns.get(0)).getTableName());
r.setForeignKeyTable(((QualifiedColumn)childColumns.get(0)).getTableName());
}
if (this.logger.isDebugEnabled()) {
this.logger.debug("Created relationship from " + r.getPrimaryKeyTable()
+ " to " + r.getForeignKeyTable() + " named " + r.getName());
}
KeyPair pair = null;
for(int i=0; i<parentColumns.size(); i++){
pair = FACTORY.createKeyPair();
pair.setPrimaryKeyColumn(((QualifiedColumn)parentColumns.get(i)).getColumnName());
pair.setForeignKeyColumn(((QualifiedColumn)childColumns.get(i)).getColumnName());
r.getKeyPair().add(pair);
}
r.setMany(true);
config.getRelationship().add(r);
return r;
}