Object createObject(ProjectPath path) {
JpaRelationship relationship = (JpaRelationship) path.getObject();
ObjEntity cayenneSrcEntity = (ObjEntity) targetPath.getObject();
ObjRelationship cayenneRelationship = new ObjRelationship(relationship
.getName());
cayenneSrcEntity.addRelationship(cayenneRelationship);
JpaEntity jpaTargetEntity = ((JpaEntityMap) path.getRoot())
.entityForClass(relationship.getTargetEntityName());
if (jpaTargetEntity == null) {
recordConflict(path, "Unknown target entity '"
+ relationship.getTargetEntityName());
return null;
}
cayenneRelationship.setTargetEntityName(jpaTargetEntity.getName());
DbEntity cayenneSrcDbEntity = cayenneSrcEntity.getDbEntity();
DbEntity cayenneTargetDbEntity = cayenneSrcEntity.getDataMap().getDbEntity(
jpaTargetEntity.getTable().getName());
if (cayenneTargetDbEntity == null) {
cayenneTargetDbEntity = new DbEntity(jpaTargetEntity.getTable().getName());
cayenneSrcEntity.getDataMap().addDbEntity(cayenneTargetDbEntity);
}
JpaDbRelationship dbRelationship = new JpaDbRelationship(cayenneRelationship
.getName());
dbRelationship.setTargetEntity(cayenneTargetDbEntity);
dbRelationship.setToMany(relationship.isToMany());
cayenneSrcDbEntity.addRelationship(dbRelationship);
cayenneRelationship.addDbRelationship(dbRelationship);
return cayenneRelationship;
}