blob: 18ec667ccff6795995e73fda48b314ef620c30a2 [file] [log] [blame]
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;
}
}