| -- @atlcompiler emftvm | |
| -- @path Families=/org.eclipse.qvtd.atl.tests/models/families2persons/Families.ecore | |
| -- @path Persons=/org.eclipse.qvtd.atl.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 | |
| ) | |
| } | |