Home » Modeling » OCL » simple problem from a beginner (Solved)(Location a collection in another collection)
simple problem from a beginner (Solved) [message #798637] |
Tue, 14 February 2012 23:16 |
|
Hi,
I am trying to locate a collection of UML class names in another collection of UML classes.
I have reach the following expression:
UML2!"uml::Class".allInstancesFrom('INModel')->select(s | s.hasStereotype('TESTCOMPONENT'))
which provide me with all classes with stereotypes "testcomponent", and it works fine.
I have another module attribute which holds a collection of names that I need to find & extract from previous expression.
Your help to complete this expression is appreciated, and thanks in advance.
Yours,
Mohamed
[Updated on: Wed, 15 February 2012 20:52] Report message to a moderator
|
|
| |
Re: simple problem from a beginner [message #799256 is a reply to message #798856] |
Wed, 15 February 2012 17:01 |
|
Thanks Ed Willink,
I'm sorry for my ESL. Yes, it is an ATL command. I studied OCL 3 yrs ago, but I didn't practice it.
Here is my question:
How to locate the existence of an OCL collection in another OCL collection, which represents a UML classes, and point to these UML classes in a new collection if found?
To clarify, lets go through the following ex.:
Suppose we have the following collection
Col1={A, k, L} Note: I have this one.
and we have UML Diagram with the following
UML classes = {A, B, C, K, R} Note: I have this one.
I want to write an OCL/ATL expression to locate the existence of any of the Col1's members among the UML classes, so the result should be
Matched UML classes = {A, K} Note: I need to reach this one.
I hope I clarified my request.
Yours,
Mohamed
Edward Willink wrote on Wed, 15 February 2012 01:39Hi
I'm afraid that the vagueness of your English makes it difficult to
understand exactly what you want.
I suggest expressing the algorithm clearly and you may then find that it
maps to select/includes/union/... operators.
Your example is clearly not OCL; probably ATL. OCL has no ! or ",
although for historical compatibility OCL allows "" to enclose names,
but that would make "uml::Class" one not two names.
Regards
Ed Willink
On 14/02/2012 23:16, Mohamed Mussa wrote:
> Hi,
>
>
> I am trying to locate a collection of UML class names in another
> collection of UML classes.
>
> I have reach the following expression:
> UML2!"uml::Class".allInstancesFrom('INModel')->select(s |
> s.hasStereotype('TESTCOMPONENT'))
>
> which provide me with all classes with stereotypes "testcomponent",
> and it works fine.
>
> I have another module attribute which holds a collection of names that
> I need to find & extract from previous expression.
>
> Your help to complete this expression is appreciated, and thanks in
> advance.
>
> Yours,
> Mohamed
>
|
|
|
Re: simple problem from a beginner [message #799273 is a reply to message #799256] |
Wed, 15 February 2012 17:24 |
Ed Willink Messages: 7670 Registered: July 2009 |
Senior Member |
|
|
Hi
The union, intersection, -, symmetricDifference, includes, excludes
operations allow you to do a variety of collection operations.
Regards
Ed Willink
On 15/02/2012 17:01, Mohamed Mussa wrote:
> Thanks Ed Willink,
>
> I'm sorry for my ESL. Yes, it is an ATL command. I studied OCL 3 yrs
> ago, but I didn't practice it.
>
> Here is my question:
> How to locate the existence of an OCL collection in another OCL
> collection, which represents a UML classes, and point to these UML
> classes in a new collection if found?
> To clarify, lets go through the following ex.:
>
> Suppose we have the following collection Col1={A, k, L} Note: I
> have this one.
> and we have UML Diagram with the following UML classes = {A, B, C, K,
> R} Note: I have this one.
>
> I want to write an OCL/ATL expression to locate the existence of any
> of the Col1's members among the UML classes, so the result should be
> Matched UML classes = {A, K} Note: I need to reach this one.
>
>
> I hope I clarified my request.
>
> Yours,
> Mohamed
>
> Edward Willink wrote on Wed, 15 February 2012 01:39
>> Hi
>>
>> I'm afraid that the vagueness of your English makes it difficult to
>> understand exactly what you want.
>>
>> I suggest expressing the algorithm clearly and you may then find that
>> it maps to select/includes/union/... operators.
>>
>> Your example is clearly not OCL; probably ATL. OCL has no ! or ",
>> although for historical compatibility OCL allows "" to enclose names,
>> but that would make "uml::Class" one not two names.
>>
>> Regards
>>
>> Ed Willink
>>
>>
>> On 14/02/2012 23:16, Mohamed Mussa wrote:
>> > Hi,
>> >
>> >
>> > I am trying to locate a collection of UML class names in another >
>> collection of UML classes.
>> >
>> > I have reach the following expression:
>> > UML2!"uml::Class".allInstancesFrom('INModel')->select(s | >
>> s.hasStereotype('TESTCOMPONENT'))
>> >
>> > which provide me with all classes with stereotypes "testcomponent",
>> > and it works fine.
>> >
>> > I have another module attribute which holds a collection of names
>> that > I need to find & extract from previous expression.
>> >
>> > Your help to complete this expression is appreciated, and thanks in
>> > advance.
>> >
>> > Yours,
>> > Mohamed
>> >
>
>
|
|
|
Re: simple problem from a beginner [message #799321 is a reply to message #799273] |
Wed, 15 February 2012 18:43 |
|
Thanks for your respond.
I have solved the problem
UML2!"uml::Class".allInstancesFrom('IN')->select(s | s.hasStereotype('TESTCOMPONENT'))->collect(sn | sn.name.toUpper())->select(t| thisModule.contextSUT.includes(t));
and the contextSUT collection must be in uppercase
My best regards,
Mohamed
|
|
|
Goto Forum:
Current Time: Fri Sep 20 21:36:11 GMT 2024
Powered by FUDForum. Page generated in 0.03936 seconds
|