Hi Nicolas,
1) the asMooseGroup is just a standard moose method used to
convert a collection into a MooseGroup object.
I will probably move it in the lift:from: method.
No filtering option is currently supported.
What you get right now are objects of type
FAMIXLiftedAssociation representing inferred associations.
These objects have a reference to the source and target high
level entities they connect and to the low level concrete
associations which they abstract.
One possible extension (as you suggested) could be adding the
following method:
lift: aSelector from: aMooseGroup filter: aBlock
and some shortcuts like:
lift: aSelector from: aMooseGroup sourceEntities -->
aBlock := [:each | each from]
lift: aSelector from: aMooseGroup targetEntities -->
aBlock := [:each | each to]
2) is point one answering your question ?
Yes.
3) I'm not sure i understand your question.
Scoping is implicitly defined by the entities contained in
the MooseGroup on which the query is executed and the MooseGroup
specified in the from parameter.
This means that if you execute:
highLevelGroup := MooseModel root first allNamespaces.
lowLevelGroup := MooseModel root first allMethods.
(highLevelGroup lift: #incomingInvocations
from:lowLevelGroup) asMooseGroup.
you will get a set of associations connecting namespaces
(high level scope) and these associations will abstract concrete
association existing between entities of type method (low level
scope).
Currently you always return relationships, so scoping might be less
important (still ...)