blob: 53f54a52c3d6a7e47d95c14f4334e57958084eed [file] [log] [blame]
modeltype fMM uses 'http://www.eclipse.org/qvtd/xtext/qvtcore/tests/Upper2Lower/1.0/Families';
modeltype pMM uses 'http://www.eclipse.org/qvtd/xtext/qvtcore/tests/Upper2Lower/1.0/Persons';
transformation Families2Persons(in family : fMM, out pMM);
main() {
family.rootObjects()[fMM::Family].sons->map Member2Person();
family.rootObjects()[fMM::Family].daughters->map Member2Person();
}
query fMM::Member::familyName() : String
{
return if not self.familyFather.oclIsUndefined() then self.familyFather.lastName else if not
self.familyMother.oclIsUndefined() then self.familyMother.lastName else if not self.familySon.oclIsUndefined()
then self.familySon.lastName else self.familyDaughter.lastName endif endif endif
}
query fMM::Member::isFemale() : Boolean
{
return if not self.familyMother.oclIsUndefined() then true
else if not self.familyDaughter.oclIsUndefined() then true
else false
endif endif
}
mapping fMM::Member::Member2Person() : pMM::Person
disjuncts fMM::Member::Member2Female, fMM::Member::Member2Male {}
mapping fMM::Member::Member2Female() : pMM::Female when {self.isFemale(); }
{
result.fullName := self.firstName + ' ' + self.familyName();
}
mapping fMM::Member::Member2Male() : pMM::Male when { not self.isFemale(); }
{
result.fullName := self.firstName + ' ' + self.familyName();
}