if (identity == null) {
throw new DTXException("no identity field in class: " + clsMapping.getName());
}
Sql identitySQLElement = identity.getSql();
if (identitySQLElement == null) {
throw new DTXException("no identity SQL info in class: " + clsMapping.getName());
}
String identitySQL = identitySQLElement.getName()[0];
_ids.add(table + "." + identitySQL);
DTXClassDescriptor desc = new DTXClassDescriptor(clsMapping);
_classes.put(table + "." + identitySQL, desc);
// If this class extends another class, create a join with the parent table and
// add the load fields of the parent class (but not the store fields)
if (clsMapping.getExtends() != null) {
/**
* TODO : Needs to be resolved by Hand
*/
MapTo extendsTo = new MapTo(); //(ClassMapping) clsMapping.getExtends()).getMapTo();
if (extendsTo == null) {
throw new DTXException("no mapping info for extends table.");
}
String extendsTable = extendsTo.getTable();
expr.addInnerJoin(table, identitySQL, extendsTable, identitySQL);
/**
* needs to be resolved by hand
*/
initQuery(new ClassMapping(), expr);
//(ClassMapping) clsMapping.getExtends(), expr);
}
for (int i = 0; i < fields.length; ++i) {
FieldMapping field = fields[i];
Sql fieldSql = field.getSql();
ClassMapping relMapping = _eng.getClassMapping(field.getType());
if (fieldSql == null) {
if (relMapping != null) {
// We have a one-to-many relationship with a sub object.
// get those objects, too.
FieldMapping[] relFields = relMapping.getClassChoice().getFieldMapping();
MapTo relMapTo = relMapping.getMapTo();
if (relMapTo == null) {
throw new DTXException("dtx.NoRelatedMapTo");
}
String relTable = relMapTo.getTable();
String foreKey = null;
for (int k = 0; k < relFields.length; k++) {
Sql relSql = relFields[k].getSql();
if (relSql != null) {
String type = relFields[k].getType();
if (type != null && type.equals(clsMapping.getName())) {
foreKey = relSql.getName()[0];
}
}
}
if (foreKey != null) {
expr.addOuterJoin(table, identitySQL, relTable, foreKey);
DTXClassDescriptor relDesc = new DTXClassDescriptor(relMapping);
for (int n = 0; n < relFields.length; n++) {
FieldMapping relField = relFields[n];
Sql relSql = relFields[n].getSql();
if (relSql != null) {
String relFieldName = relSql.getName()[0];
if (relFieldName == null) {
relFieldName = relFields[n].getName();
}
String relFullName = relTable + "." + relFieldName;