if (tableClass == null)
throw new RuntimeException("An SDO Type with name "
+ tableData.getTableName() + " was not found");
DataObject obj = DataFactory.INSTANCE.create(tableClass);
// Now, check to see if the root data object has a containment reference
// to this EClass. If so, add it to the graph. If not, it will be taken
// care
// of when we process relationships
Iterator i = this.rootObject.getType().getProperties().iterator();
while (i.hasNext()) {
Property p = (Property) i.next();
if (p.isContainment() && p.getType().equals(tableClass)) {
if (p.isMany())
rootObject.getList(p).add(obj);
// TODO This was a performance optimization for EMF in SDO 1.1,
// check to see if there is
// something equivalent in SDO 2.0
// ((InternalEList) this.dataGraph.eGet(ref)).addUnique(obj);
else
this.rootObject.set(p, obj);
}
}
Iterator columnNames = resultMetadata.getColumnNames(
tableData.getTableName()).iterator();
while (columnNames.hasNext()) {
String columnName = (String) columnNames.next();
DataObject dataObject = (DataObject) obj;
Property p = findProperty(dataObject.getType(), columnName);
Object value = tableData.getColumnData(columnName);
dataObject.set(p, value);
}
return obj;
}