in rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DatabaseObject.java [101:148]
public Object get(String parameter) {
if (isPartOfPrimaryKey(parameter)) {
return dataObject.get(parameter);
}
Relationship r = (Relationship) keyMappings.get(parameter);
if (r == null) {
return dataObject.get(parameter);
}
//JIRA-952
Table tbl = this.mappingWrapper.getTable(r.getPrimaryKeyTable());
Property parentRef = null;
if(tbl == null){
//this is case when config file is not present and
//ConfigHelper helper = new ConfigHelper(); is used
parentRef = getParentReference(r.getPrimaryKeyTable());
}
else{
//other cases, its better to use typeName as r.getPrimaryKeyTable()
//gives tableName and tableName and typeName can be different
//and SDO looks for typeName and not tableName.
parentRef = getParentReference((new TableWrapper(tbl)).getTypeName());
}
DataObject parent = dataObject.getDataObject(parentRef);
if (parent == null) {
return null;
}
String parentKey = getParentKey(r, parameter);//parentKey is db column name
String parentTableName = null;
//as parentKey is qualified column name and not SDO property name, do conversion, when possible, thru <Config><Table>
tbl = mappingWrapper.getTableByTypeName(parent.getType().getName());
if(tbl != null) {
if(mappingWrapper.getConfig().isDatabaseSchemaNameSupported()) {
parentTableName = tbl.getSchemaName()+"."+tbl.getTableName();
} else {
parentTableName = tbl.getTableName();
}
String parentKeyProp = mappingWrapper.getColumnPropertyName(parentTableName, parentKey);
return parent.get(parentKeyProp);
} else {
return parent.get(parentKey);
}
}