blob: 37c4bef7d7491f412a69f6eeea3bf30233144533 [file] [log] [blame]
import fMM : 'Families.ecore#/';
import pMM : 'Persons.ecore#/';
import f2pMM : 'Families2Persons.ecore#/';
transformation org::eclipse::qvtd::xtext::qvtcore::tests::families2persons::Families2Persons
{
family imports Families;
person imports Persons;
imports Families2Persons;
}
map Member2Male in Families2Persons
{
check family(s : Member[1]
|
isFemale(s).not2();) {}
enforce person() {
realize t : Male
|}
where() {
realize m2m : f2pMM::Member2Male
|
m2m.member := s;
m2m.person := t;
}
map
{
where() {
t.fullName := s.firstName + ' ' + familyName(s);
}
}
}
map Member2Female in Families2Persons
{
check family(s : Member[1]
|
isFemale(s);) {}
enforce person() {
realize t : Female
|}
where() {
realize m2m : f2pMM::Member2Female
|
m2m.member := s;
m2m.person := t;
}
map
{
where() {
t.fullName := s.firstName + ' ' + familyName(s);
}
}
}
query Families2Persons::familyName(member : fMM::Member[1]) : String[1]
{
if member.familyFather.oclIsUndefined().not2() then member.familyFather.lastName else if
member.familyMother.oclIsUndefined().not2() then member.familyMother.lastName else if member.familySon.oclIsUndefined().not2()
then member.familySon.lastName else member.familyDaughter.lastName endif endif endif
}
query Families2Persons::isFemale(member : fMM::Member[1]) : Boolean[1]
{
if member.familyMother.oclIsUndefined().not2() then true
else if member.familyDaughter.oclIsUndefined().not2() then true
else false
endif endif
}