Home » Modeling » Epsilon » How to load two dependent models, change names in referenced types, and keep models consistent?
How to load two dependent models, change names in referenced types, and keep models consistent? [message #524721] |
Fri, 02 April 2010 02:43 |
Christoph Wienands Messages: 55 Registered: July 2009 |
Member |
|
|
Hey guys,
I have the following task to solve: I have multiple Ecore models that form a
hierarchy, so types from lower-level models are reused in higher-level
models. Among other things I need to rename pretty much every type in those
models. So the challenge is to load all those models into memory (or
whereever they get loaded), so that when I rename a type in a lower-level
model, the places in the higher-level models where that type is used get
properly updated. I figured I will load all models (I'm using Ant, so it's
the 'epsilon.emf.loadModel' task), make the changes, and hope that all
models get saved after completion.
Just FYI, you can do this manually in the Sample Ecore Model Editor (haven't
tried any others). You load the top-level model, which will trigger loading
the lower-level models, change the name in a lower-level-model type, and the
upper level model will automatically be adapted and kept consistent.
Here is an Ant snippet that shows what I'm currently doing:
<!-- load all participating models into the same model group (via
alias) -->
<epsilon.emf.loadModel name="Ecore1" alias="Ecore"
modelfile="${basedir}/highlevel.ecore"
metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
store="true" />
<epsilon.emf.loadModel name="Ecore2" alias="Ecore"
modelfile="${basedir}/lowlevel.ecore"
metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
store="true" />
<!-- adapt metamodels -->
<epsilon.eol src="${basedir}/adaptModels.eol">
<model ref="Ecore1" />
<model ref="Ecore2" />
</epsilon.eol>
<!-- save and dispose models from memory -->
<epsilon.disposeModels />
The problem is that even though I rename model elements in the lower-level
model file, after everything is said and done (and saved) nothing has
changed in the saved high-level model. Interestingly enough, at runtime I do
see that the names of the lower-level types referenced by the higher-level
model elements (e.g. EType of references) has changed.
Any idea why the higher-level model would not store the changed dependencies
on the lower-level types? Alternatively, I'll take ideas about other
approaches as well :-)
Thanks a lot, Christoph
|
|
|
Re: How to load two dependent models, change names in referenced types, and keep models consistent? [message #524725 is a reply to message #524721] |
Fri, 02 April 2010 05:13 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Christoph,
At a first glance, this looks like it should work. I'll have a closer
look at this in a few hours (now about to board a flight) and get back
to you.
Cheers,
Dimitris
"Christoph Wienands" <cwienands@gmx.net> wrote:
> Hey guys,
>
> I have the following task to solve: I have multiple Ecore models that
> form a
> hierarchy, so types from lower-level models are reused in higher-level
>
> models. Among other things I need to rename pretty much every type in
> those
> models. So the challenge is to load all those models into memory (or
> whereever they get loaded), so that when I rename a type in a
> lower-level
> model, the places in the higher-level models where that type is used
> get
> properly updated. I figured I will load all models (I'm using Ant, so
> it's
> the 'epsilon.emf.loadModel' task), make the changes, and hope that all
>
> models get saved after completion.
>
> Just FYI, you can do this manually in the Sample Ecore Model Editor
> (haven't
> tried any others). You load the top-level model, which will trigger
> loading
> the lower-level models, change the name in a lower-level-model type,
> and the
> upper level model will automatically be adapted and kept consistent.
>
> Here is an Ant snippet that shows what I'm currently doing:
>
> <!-- load all participating models into the same model group (via
> alias) -->
> <epsilon.emf.loadModel name="Ecore1" alias="Ecore"
> modelfile="${basedir}/highlevel.ecore"
> metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
> store="true" />
> <epsilon.emf.loadModel name="Ecore2" alias="Ecore"
> modelfile="${basedir}/lowlevel.ecore"
> metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
> store="true" />
>
> <!-- adapt metamodels -->
> <epsilon.eol src="${basedir}/adaptModels.eol">
> <model ref="Ecore1" />
> <model ref="Ecore2" />
> </epsilon.eol>
>
> <!-- save and dispose models from memory -->
> <epsilon.disposeModels />
>
> The problem is that even though I rename model elements in the
> lower-level
> model file, after everything is said and done (and saved) nothing has
> changed in the saved high-level model. Interestingly enough, at
> runtime I do
> see that the names of the lower-level types referenced by the
> higher-level
> model elements (e.g. EType of references) has changed.
>
> Any idea why the higher-level model would not store the changed
> dependencies
> on the lower-level types? Alternatively, I'll take ideas about other
> approaches as well :-)
>
> Thanks a lot, Christoph
>
>
>
|
|
|
Re: How to load two dependent models, change names in referenced types, and keep models consistent? [message #588113 is a reply to message #524721] |
Fri, 02 April 2010 05:13 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Christoph,
At a first glance, this looks like it should work. I'll have a closer
look at this in a few hours (now about to board a flight) and get back
to you.
Cheers,
Dimitris
"Christoph Wienands" <cwienands@gmx.net> wrote:
> Hey guys,
>
> I have the following task to solve: I have multiple Ecore models that
> form a
> hierarchy, so types from lower-level models are reused in higher-level
>
> models. Among other things I need to rename pretty much every type in
> those
> models. So the challenge is to load all those models into memory (or
> whereever they get loaded), so that when I rename a type in a
> lower-level
> model, the places in the higher-level models where that type is used
> get
> properly updated. I figured I will load all models (I'm using Ant, so
> it's
> the 'epsilon.emf.loadModel' task), make the changes, and hope that all
>
> models get saved after completion.
>
> Just FYI, you can do this manually in the Sample Ecore Model Editor
> (haven't
> tried any others). You load the top-level model, which will trigger
> loading
> the lower-level models, change the name in a lower-level-model type,
> and the
> upper level model will automatically be adapted and kept consistent.
>
> Here is an Ant snippet that shows what I'm currently doing:
>
> <!-- load all participating models into the same model group (via
> alias) -->
> <epsilon.emf.loadModel name="Ecore1" alias="Ecore"
> modelfile="${basedir}/highlevel.ecore"
> metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
> store="true" />
> <epsilon.emf.loadModel name="Ecore2" alias="Ecore"
> modelfile="${basedir}/lowlevel.ecore"
> metamodeluri="http://www.eclipse.org/emf/2002/Ecore" read="true"
> store="true" />
>
> <!-- adapt metamodels -->
> <epsilon.eol src="${basedir}/adaptModels.eol">
> <model ref="Ecore1" />
> <model ref="Ecore2" />
> </epsilon.eol>
>
> <!-- save and dispose models from memory -->
> <epsilon.disposeModels />
>
> The problem is that even though I rename model elements in the
> lower-level
> model file, after everything is said and done (and saved) nothing has
> changed in the saved high-level model. Interestingly enough, at
> runtime I do
> see that the names of the lower-level types referenced by the
> higher-level
> model elements (e.g. EType of references) has changed.
>
> Any idea why the higher-level model would not store the changed
> dependencies
> on the lower-level types? Alternatively, I'll take ideas about other
> approaches as well :-)
>
> Thanks a lot, Christoph
>
>
>
|
|
|
Goto Forum:
Current Time: Sat Oct 19 16:33:06 GMT 2024
Powered by FUDForum. Page generated in 0.03454 seconds
|