blob: d55244f36372426793a5ea3f5bb3121b61d7254e [file] [log] [blame]
modeltype SimpleUML uses 'http://www.eclipse.org/qvt/1.0.0/Operational/examples/simpleuml';
transformation intermediateprop_resolve(in inModel : SimpleUML, out outModel : SimpleUML);
intermediate property SimpleUML::Class::gens : Sequence(simpleuml::Class);
main(in model: simpleuml::Model) {
object simpleuml::Model {
name := model.name;
stereotype := model.stereotype;
taggedValue := model.taggedValue;
ownedElements += model.ownedElements->select(oclIsKindOf(simpleuml::Package))->
collect(p | package2package(p.oclAsType(simpleuml::Package)))->asOrderedSet();
ownedElements += model.ownedElements->select(oclIsKindOf(simpleuml::Class))->
collect(p | p.oclAsType(simpleuml::Class).class2class())->asOrderedSet();
}
}
mapping package2package(in pack: simpleuml::Package): simpleuml::Package {
name := pack.name;
stereotype := pack.stereotype;
taggedValue := pack.taggedValue;
ownedElements += pack.ownedElements->select(oclIsKindOf(simpleuml::Package))->
collect(p | package2package(p.oclAsType(simpleuml::Package)))->asOrderedSet();
ownedElements += pack.ownedElements->select(oclIsKindOf(simpleuml::Class))->
collect(p | p.oclAsType(simpleuml::Class).class2class())->asOrderedSet();
}
mapping simpleuml::Class::class2class(): simpleuml::Class {
init {
self.gens += self.generalizations->collect(c | c.general.map class2class());
}
name := self.name;
_abstract := self._abstract;
stereotype := self.stereotype;
taggedValue := self.taggedValue;
generalizations := self.gens->collect(g | object simpleuml::Generalization {
general := g;
})->asOrderedSet();
}