| modeltype Ecore uses 'http://www.eclipse.org/emf/2002/Ecore'; |
| |
| transformation intermSimple(in srcModel : Ecore, out dstModel : Ecore); |
| |
| intermediate class LeafAttribute { |
| _name:String; |
| _attr:EAttribute; |
| }; |
| |
| main() { |
| -- remark: use eStructuralFeatures[EAttribute], to make javaless unittest work, as |
| -- eAllAttributes derivation is not defined in the dynamic ecore model copy |
| var v := srcModel.objects()[EClass]->collect(eStructuralFeatures[EAttribute]->map attr2LeafAttrs('p_')); |
| -- sort by name as collect() resulted in Bag |
| object EClass {name := 'cls'; eStructuralFeatures += v._attr->sortedBy(name); } |
| } |
| |
| mapping EAttribute::attr2LeafAttrs(in prefix:String) : Sequence(LeafAttribute) |
| when {true;} |
| { |
| init { |
| result := Sequence { |
| object LeafAttribute {_attr:=object EAttribute{name := prefix+self.name}; _name:=_attr.name;} |
| } |
| } |
| } |
| |