| transformation Ecore_To_Uml(in dummy : ECORE, out ECORE); |
| |
| import library Strings; |
| |
| modeltype ECORE uses "http://www.eclipse.org/emf/2002/Ecore"; |
| |
| mapping main(in model : EPackage) : EPackage { |
| init { |
| var d := Sequence { |
| object EClass { name := 'a'}, |
| object EDataType { name := 'qq'}, |
| object EClass { name := 'b'; }, |
| object EClass { name := null} |
| }; |
| var c := d->name[startsWith('q')]; |
| var ca := d->name[res | res != 'qq']; |
| var cb := d->name[String]; |
| } |
| population { |
| object result : EPackage { |
| eSubpackages += object EPackage { |
| name := 'c_pack'; |
| nsURI := c->at(1); |
| nsPrefix := c->size().toString(); |
| }; |
| eSubpackages += object EPackage { |
| name := 'ca_pack'; |
| nsURI := ca->at(1) + ca->at(2); |
| nsPrefix := ca->size().toString(); |
| }; |
| eSubpackages += object EPackage { |
| name := 'cb_pack'; |
| nsURI := cb->at(1) + cb->at(2) + cb->at(3); |
| nsPrefix := cb->size().toString(); |
| }; |
| eSubpackages += object EPackage { |
| name := 'dc_pack'; |
| eClassifiers += d; |
| }; |
| } |
| } |
| end { |
| result.nsURI := result.eSubpackages->name[res | res = 'dc_pack']->any(true).toUpper(); |
| var z1 := result.eSubpackages[name = 'dc_pack']; |
| result.nsPrefix := z1->getEClassifier('a')[true]->any(true).name; |
| result.name := result.eSubpackages[name = 'dc_pack']->any(true)->getEClassifier('a')[true]->any(true).name; |
| } |
| } |