Home » Archived » GMT (Generative Modeling Technologies) » [Epsilon]cloning a model element in EOL
[Epsilon]cloning a model element in EOL [message #385326] |
Thu, 04 September 2008 21:18  |
Eclipse User |
|
|
|
Hi,
I am trying to copy an element of my model in another container in the
model. For example I got element A in container C1 and I want to make a
copy of A (e.g. B) in another container (e.g. C2). So the goal is to
have A in C1 and B in C2, wiht A and B being identical.
However, I noticed that the ':= ' operator moves the object rather
copying it. I also thought of using the clone() command, manipulating
the element as a Collection, no result. Is there a more rational way of
doing this?
Thank you in advance,
Kimon
|
|
| |
Re: [Epsilon]cloning a model element in EOL [message #385349 is a reply to message #385347] |
Fri, 05 September 2008 08:26   |
Eclipse User |
|
|
|
Hi Kimon,
Thanks for submitting https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
I'll look into it shortly.
Cheers,
Dimitris
Dimitrios Kolovos wrote:
> Hi Kimon,
>
> There is currently no built-in operation for copying model elements in
> EOL; however this seems to be a useful addition. Could you please open a
> feature request in the bugzilla?
>
> As a temporary workaround you can use the (static)
> EcoreUtil.copy(EObject eObject) method which does exactly that. You'll
> need to create a new Epsilon tool and add a copy(EObject) operation that
> delegates to the respective operation of the EcoreUtil class.
>
> Cheers,
> Dimitris
>
> Kimon Polychroniadis wrote:
>> Hi,
>>
>> I am trying to copy an element of my model in another container in the
>> model. For example I got element A in container C1 and I want to make a
>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>> have A in C1 and B in C2, wiht A and B being identical.
>>
>> However, I noticed that the ':= ' operator moves the object rather
>> copying it. I also thought of using the clone() command, manipulating
>> the element as a Collection, no result. Is there a more rational way
>> of doing this?
>>
>> Thank you in advance,
>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #385351 is a reply to message #385349] |
Fri, 05 September 2008 09:55   |
Eclipse User |
|
|
|
So, let's suppose there is model element A of type TypeOfA , and I wish
to create a copy.
Isn't it possible to create a copy in a more 'manual' manner, with the
following the steps below:
1. create a new element e.g. B := new TypeOfA;
2. copy A's attributes and feature values one by one (looping through
the attributes and features of A, B(.
3. move B in the container of choice.
However, I am not sure as to how I should reference the atttributes and
features of A (and their values).
I realise the solution (if feasible) is a bit 'brute force' but it's a
relatively small model I 've got, so I don't think performance would be
an issue.
Thanks,
Kimon
O/H Dimitrios Kolovos έγραψε:
> Hi Kimon,
>
> Thanks for submitting https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>
> I'll look into it shortly.
>
> Cheers,
> Dimitris
>
> Dimitrios Kolovos wrote:
>> Hi Kimon,
>>
>> There is currently no built-in operation for copying model elements in
>> EOL; however this seems to be a useful addition. Could you please open
>> a feature request in the bugzilla?
>>
>> As a temporary workaround you can use the (static)
>> EcoreUtil.copy(EObject eObject) method which does exactly that. You'll
>> need to create a new Epsilon tool and add a copy(EObject) operation
>> that delegates to the respective operation of the EcoreUtil class.
>>
>> Cheers,
>> Dimitris
>>
>> Kimon Polychroniadis wrote:
>>> Hi,
>>>
>>> I am trying to copy an element of my model in another container in the
>>> model. For example I got element A in container C1 and I want to make a
>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>> have A in C1 and B in C2, wiht A and B being identical.
>>>
>>> However, I noticed that the ':= ' operator moves the object rather
>>> copying it. I also thought of using the clone() command, manipulating
>>> the element as a Collection, no result. Is there a more rational way
>>> of doing this?
>>>
>>> Thank you in advance,
>>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #385352 is a reply to message #385351] |
Fri, 05 September 2008 10:36   |
Eclipse User |
|
|
|
Hi Kimon,
Say you have
class A {
attr String a1;
ref A[*] referenced;
val A[*] contained[*];
}
To create a copy you should define an operation like this:
operation A createCopy() {
var n : new A;
n.a1 := self.a1;
n.referenced := self.referenced;
for (contained in self.contained) {
n.contained.add(contained.createCopy());
}
return n;
}
Now if you need to have a generic operation that creates a copy of any
element, you should use EMF reflection - but in this case it is simpler
(and safer) to just use the EcoreUtil.copy method mentioned previously.
Cheers,
Dimitris
Kimon Polychroniadis wrote:
> So, let's suppose there is model element A of type TypeOfA , and I wish
> to create a copy.
> Isn't it possible to create a copy in a more 'manual' manner, with the
> following the steps below:
>
> 1. create a new element e.g. B := new TypeOfA;
>
> 2. copy A's attributes and feature values one by one (looping through
> the attributes and features of A, B(.
>
> 3. move B in the container of choice.
>
> However, I am not sure as to how I should reference the atttributes and
> features of A (and their values).
>
> I realise the solution (if feasible) is a bit 'brute force' but it's a
> relatively small model I 've got, so I don't think performance would be
> an issue.
>
> Thanks,
> Kimon
>
> O/H Dimitrios Kolovos έγραψε:
>> Hi Kimon,
>>
>> Thanks for submitting
>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>>
>> I'll look into it shortly.
>>
>> Cheers,
>> Dimitris
>>
>> Dimitrios Kolovos wrote:
>>> Hi Kimon,
>>>
>>> There is currently no built-in operation for copying model elements
>>> in EOL; however this seems to be a useful addition. Could you please
>>> open a feature request in the bugzilla?
>>>
>>> As a temporary workaround you can use the (static)
>>> EcoreUtil.copy(EObject eObject) method which does exactly that.
>>> You'll need to create a new Epsilon tool and add a copy(EObject)
>>> operation that delegates to the respective operation of the EcoreUtil
>>> class.
>>>
>>> Cheers,
>>> Dimitris
>>>
>>> Kimon Polychroniadis wrote:
>>>> Hi,
>>>>
>>>> I am trying to copy an element of my model in another container in the
>>>> model. For example I got element A in container C1 and I want to make a
>>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>>> have A in C1 and B in C2, wiht A and B being identical.
>>>>
>>>> However, I noticed that the ':= ' operator moves the object rather
>>>> copying it. I also thought of using the clone() command,
>>>> manipulating the element as a Collection, no result. Is there a more
>>>> rational way of doing this?
>>>>
>>>> Thank you in advance,
>>>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #385353 is a reply to message #385352] |
Fri, 05 September 2008 10:48  |
Eclipse User |
|
|
|
This is the approach I have adopted, yet I was wondering if there is any
way of copying the references and attributes without having to do that
one-by-one, in a more generic manner. But I suppose that is far more
practical for immediate use.
Thank you very much,
Kimon
O/H Dimitrios Kolovos έγραψε:
> Hi Kimon,
>
> Say you have
>
> class A {
> attr String a1;
> ref A[*] referenced;
> val A[*] contained[*];
> }
>
> To create a copy you should define an operation like this:
>
> operation A createCopy() {
> var n : new A;
> n.a1 := self.a1;
> n.referenced := self.referenced;
> for (contained in self.contained) {
> n.contained.add(contained.createCopy());
> }
> return n;
> }
>
> Now if you need to have a generic operation that creates a copy of any
> element, you should use EMF reflection - but in this case it is simpler
> (and safer) to just use the EcoreUtil.copy method mentioned previously.
>
> Cheers,
> Dimitris
>
> Kimon Polychroniadis wrote:
>> So, let's suppose there is model element A of type TypeOfA , and I
>> wish to create a copy.
>> Isn't it possible to create a copy in a more 'manual' manner, with the
>> following the steps below:
>>
>> 1. create a new element e.g. B := new TypeOfA;
>>
>> 2. copy A's attributes and feature values one by one (looping through
>> the attributes and features of A, B(.
>>
>> 3. move B in the container of choice.
>>
>> However, I am not sure as to how I should reference the atttributes
>> and features of A (and their values).
>>
>> I realise the solution (if feasible) is a bit 'brute force' but it's a
>> relatively small model I 've got, so I don't think performance would
>> be an issue.
>>
>> Thanks,
>> Kimon
>>
>> O/H Dimitrios Kolovos έγραψε:
>>> Hi Kimon,
>>>
>>> Thanks for submitting
>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>>>
>>> I'll look into it shortly.
>>>
>>> Cheers,
>>> Dimitris
>>>
>>> Dimitrios Kolovos wrote:
>>>> Hi Kimon,
>>>>
>>>> There is currently no built-in operation for copying model elements
>>>> in EOL; however this seems to be a useful addition. Could you please
>>>> open a feature request in the bugzilla?
>>>>
>>>> As a temporary workaround you can use the (static)
>>>> EcoreUtil.copy(EObject eObject) method which does exactly that.
>>>> You'll need to create a new Epsilon tool and add a copy(EObject)
>>>> operation that delegates to the respective operation of the
>>>> EcoreUtil class.
>>>>
>>>> Cheers,
>>>> Dimitris
>>>>
>>>> Kimon Polychroniadis wrote:
>>>>> Hi,
>>>>>
>>>>> I am trying to copy an element of my model in another container in the
>>>>> model. For example I got element A in container C1 and I want to
>>>>> make a
>>>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>>>> have A in C1 and B in C2, wiht A and B being identical.
>>>>>
>>>>> However, I noticed that the ':= ' operator moves the object rather
>>>>> copying it. I also thought of using the clone() command,
>>>>> manipulating the element as a Collection, no result. Is there a
>>>>> more rational way of doing this?
>>>>>
>>>>> Thank you in advance,
>>>>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #621757 is a reply to message #385326] |
Fri, 05 September 2008 03:16  |
Eclipse User |
|
|
|
Hi Kimon,
There is currently no built-in operation for copying model elements in
EOL; however this seems to be a useful addition. Could you please open a
feature request in the bugzilla?
As a temporary workaround you can use the (static)
EcoreUtil.copy(EObject eObject) method which does exactly that. You'll
need to create a new Epsilon tool and add a copy(EObject) operation that
delegates to the respective operation of the EcoreUtil class.
Cheers,
Dimitris
Kimon Polychroniadis wrote:
> Hi,
>
> I am trying to copy an element of my model in another container in the
> model. For example I got element A in container C1 and I want to make a
> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
> have A in C1 and B in C2, wiht A and B being identical.
>
> However, I noticed that the ':= ' operator moves the object rather
> copying it. I also thought of using the clone() command, manipulating
> the element as a Collection, no result. Is there a more rational way of
> doing this?
>
> Thank you in advance,
> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #621759 is a reply to message #385347] |
Fri, 05 September 2008 08:26  |
Eclipse User |
|
|
|
Hi Kimon,
Thanks for submitting https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
I'll look into it shortly.
Cheers,
Dimitris
Dimitrios Kolovos wrote:
> Hi Kimon,
>
> There is currently no built-in operation for copying model elements in
> EOL; however this seems to be a useful addition. Could you please open a
> feature request in the bugzilla?
>
> As a temporary workaround you can use the (static)
> EcoreUtil.copy(EObject eObject) method which does exactly that. You'll
> need to create a new Epsilon tool and add a copy(EObject) operation that
> delegates to the respective operation of the EcoreUtil class.
>
> Cheers,
> Dimitris
>
> Kimon Polychroniadis wrote:
>> Hi,
>>
>> I am trying to copy an element of my model in another container in the
>> model. For example I got element A in container C1 and I want to make a
>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>> have A in C1 and B in C2, wiht A and B being identical.
>>
>> However, I noticed that the ':= ' operator moves the object rather
>> copying it. I also thought of using the clone() command, manipulating
>> the element as a Collection, no result. Is there a more rational way
>> of doing this?
>>
>> Thank you in advance,
>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #621761 is a reply to message #385349] |
Fri, 05 September 2008 09:55  |
Eclipse User |
|
|
|
So, let's suppose there is model element A of type TypeOfA , and I wish
to create a copy.
Isn't it possible to create a copy in a more 'manual' manner, with the
following the steps below:
1. create a new element e.g. B := new TypeOfA;
2. copy A's attributes and feature values one by one (looping through
the attributes and features of A, B(.
3. move B in the container of choice.
However, I am not sure as to how I should reference the atttributes and
features of A (and their values).
I realise the solution (if feasible) is a bit 'brute force' but it's a
relatively small model I 've got, so I don't think performance would be
an issue.
Thanks,
Kimon
O/H Dimitrios Kolovos έγραψε:
> Hi Kimon,
>
> Thanks for submitting https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>
> I'll look into it shortly.
>
> Cheers,
> Dimitris
>
> Dimitrios Kolovos wrote:
>> Hi Kimon,
>>
>> There is currently no built-in operation for copying model elements in
>> EOL; however this seems to be a useful addition. Could you please open
>> a feature request in the bugzilla?
>>
>> As a temporary workaround you can use the (static)
>> EcoreUtil.copy(EObject eObject) method which does exactly that. You'll
>> need to create a new Epsilon tool and add a copy(EObject) operation
>> that delegates to the respective operation of the EcoreUtil class.
>>
>> Cheers,
>> Dimitris
>>
>> Kimon Polychroniadis wrote:
>>> Hi,
>>>
>>> I am trying to copy an element of my model in another container in the
>>> model. For example I got element A in container C1 and I want to make a
>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>> have A in C1 and B in C2, wiht A and B being identical.
>>>
>>> However, I noticed that the ':= ' operator moves the object rather
>>> copying it. I also thought of using the clone() command, manipulating
>>> the element as a Collection, no result. Is there a more rational way
>>> of doing this?
>>>
>>> Thank you in advance,
>>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #621762 is a reply to message #385351] |
Fri, 05 September 2008 10:36  |
Eclipse User |
|
|
|
Hi Kimon,
Say you have
class A {
attr String a1;
ref A[*] referenced;
val A[*] contained[*];
}
To create a copy you should define an operation like this:
operation A createCopy() {
var n : new A;
n.a1 := self.a1;
n.referenced := self.referenced;
for (contained in self.contained) {
n.contained.add(contained.createCopy());
}
return n;
}
Now if you need to have a generic operation that creates a copy of any
element, you should use EMF reflection - but in this case it is simpler
(and safer) to just use the EcoreUtil.copy method mentioned previously.
Cheers,
Dimitris
Kimon Polychroniadis wrote:
> So, let's suppose there is model element A of type TypeOfA , and I wish
> to create a copy.
> Isn't it possible to create a copy in a more 'manual' manner, with the
> following the steps below:
>
> 1. create a new element e.g. B := new TypeOfA;
>
> 2. copy A's attributes and feature values one by one (looping through
> the attributes and features of A, B(.
>
> 3. move B in the container of choice.
>
> However, I am not sure as to how I should reference the atttributes and
> features of A (and their values).
>
> I realise the solution (if feasible) is a bit 'brute force' but it's a
> relatively small model I 've got, so I don't think performance would be
> an issue.
>
> Thanks,
> Kimon
>
> O/H Dimitrios Kolovos έγραψε:
>> Hi Kimon,
>>
>> Thanks for submitting
>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>>
>> I'll look into it shortly.
>>
>> Cheers,
>> Dimitris
>>
>> Dimitrios Kolovos wrote:
>>> Hi Kimon,
>>>
>>> There is currently no built-in operation for copying model elements
>>> in EOL; however this seems to be a useful addition. Could you please
>>> open a feature request in the bugzilla?
>>>
>>> As a temporary workaround you can use the (static)
>>> EcoreUtil.copy(EObject eObject) method which does exactly that.
>>> You'll need to create a new Epsilon tool and add a copy(EObject)
>>> operation that delegates to the respective operation of the EcoreUtil
>>> class.
>>>
>>> Cheers,
>>> Dimitris
>>>
>>> Kimon Polychroniadis wrote:
>>>> Hi,
>>>>
>>>> I am trying to copy an element of my model in another container in the
>>>> model. For example I got element A in container C1 and I want to make a
>>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>>> have A in C1 and B in C2, wiht A and B being identical.
>>>>
>>>> However, I noticed that the ':= ' operator moves the object rather
>>>> copying it. I also thought of using the clone() command,
>>>> manipulating the element as a Collection, no result. Is there a more
>>>> rational way of doing this?
>>>>
>>>> Thank you in advance,
>>>> Kimon
|
|
|
Re: [Epsilon]cloning a model element in EOL [message #621763 is a reply to message #385352] |
Fri, 05 September 2008 10:48  |
Eclipse User |
|
|
|
This is the approach I have adopted, yet I was wondering if there is any
way of copying the references and attributes without having to do that
one-by-one, in a more generic manner. But I suppose that is far more
practical for immediate use.
Thank you very much,
Kimon
O/H Dimitrios Kolovos έγραψε:
> Hi Kimon,
>
> Say you have
>
> class A {
> attr String a1;
> ref A[*] referenced;
> val A[*] contained[*];
> }
>
> To create a copy you should define an operation like this:
>
> operation A createCopy() {
> var n : new A;
> n.a1 := self.a1;
> n.referenced := self.referenced;
> for (contained in self.contained) {
> n.contained.add(contained.createCopy());
> }
> return n;
> }
>
> Now if you need to have a generic operation that creates a copy of any
> element, you should use EMF reflection - but in this case it is simpler
> (and safer) to just use the EcoreUtil.copy method mentioned previously.
>
> Cheers,
> Dimitris
>
> Kimon Polychroniadis wrote:
>> So, let's suppose there is model element A of type TypeOfA , and I
>> wish to create a copy.
>> Isn't it possible to create a copy in a more 'manual' manner, with the
>> following the steps below:
>>
>> 1. create a new element e.g. B := new TypeOfA;
>>
>> 2. copy A's attributes and feature values one by one (looping through
>> the attributes and features of A, B(.
>>
>> 3. move B in the container of choice.
>>
>> However, I am not sure as to how I should reference the atttributes
>> and features of A (and their values).
>>
>> I realise the solution (if feasible) is a bit 'brute force' but it's a
>> relatively small model I 've got, so I don't think performance would
>> be an issue.
>>
>> Thanks,
>> Kimon
>>
>> O/H Dimitrios Kolovos έγραψε:
>>> Hi Kimon,
>>>
>>> Thanks for submitting
>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=246352
>>>
>>> I'll look into it shortly.
>>>
>>> Cheers,
>>> Dimitris
>>>
>>> Dimitrios Kolovos wrote:
>>>> Hi Kimon,
>>>>
>>>> There is currently no built-in operation for copying model elements
>>>> in EOL; however this seems to be a useful addition. Could you please
>>>> open a feature request in the bugzilla?
>>>>
>>>> As a temporary workaround you can use the (static)
>>>> EcoreUtil.copy(EObject eObject) method which does exactly that.
>>>> You'll need to create a new Epsilon tool and add a copy(EObject)
>>>> operation that delegates to the respective operation of the
>>>> EcoreUtil class.
>>>>
>>>> Cheers,
>>>> Dimitris
>>>>
>>>> Kimon Polychroniadis wrote:
>>>>> Hi,
>>>>>
>>>>> I am trying to copy an element of my model in another container in the
>>>>> model. For example I got element A in container C1 and I want to
>>>>> make a
>>>>> copy of A (e.g. B) in another container (e.g. C2). So the goal is to
>>>>> have A in C1 and B in C2, wiht A and B being identical.
>>>>>
>>>>> However, I noticed that the ':= ' operator moves the object rather
>>>>> copying it. I also thought of using the clone() command,
>>>>> manipulating the element as a Collection, no result. Is there a
>>>>> more rational way of doing this?
>>>>>
>>>>> Thank you in advance,
>>>>> Kimon
|
|
|
Goto Forum:
Current Time: Mon Apr 14 19:20:13 EDT 2025
Powered by FUDForum. Page generated in 0.03368 seconds
|