-- @atlcompiler emftvm | |
-- @path Families=/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families.ecore | |
-- @path Persons=/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Persons.ecore | |
module Families2Persons; | |
create OUT : Persons from IN : Families; | |
helper context Families!Member def: familyName : String = | |
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; | |
helper context Families!Member def: isFemale() : Boolean = | |
if not self.familyMother.oclIsUndefined() then | |
true | |
else | |
if not self.familyDaughter.oclIsUndefined() then | |
true | |
else | |
false | |
endif | |
endif; | |
rule Member2Male { | |
from | |
s : Families!Member (not s.isFemale()) | |
to | |
t : Persons!Male ( | |
fullName <- s.firstName + ' ' + s.familyName | |
) | |
} | |
rule Member2Female { | |
from | |
s : Families!Member (s.isFemale()) | |
to | |
t : Persons!Female ( | |
fullName <- s.firstName + ' ' + s.familyName | |
) | |
} | |